-!function(e){function t(t){for(var r,i,a=t[0],c=t[1],l=t[2],u=0,p=[];u<a.length;u++)i=a[u],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(e[r]=c[r]);for(d&&d(t);p.length;)p.shift()();return s.push.apply(s,l||[]),n()}function n(){for(var e,t=0;t<s.length;t++){for(var n=s[t],r=!0,i=1;i<n.length;i++){var c=n[i];0!==o[c]&&(r=!1)}r&&(s.splice(t--,1),e=a(a.s=n[0]))}return e}var r={},i={0:0},o={0:0},s=[];function a(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.e=function(e){var t=[];i[e]?t.push(i[e]):0!==i[e]&&{2:1,3:1,4:1}[e]&&t.push(i[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{2:"4e6541aa0979ab5fe8ab",3:"2f4099421df47087d7d1",4:"10e378d3da0e7f32661d",5:"31d6cfe0d16ae931b73c",6:"31d6cfe0d16ae931b73c",7:"31d6cfe0d16ae931b73c",8:"31d6cfe0d16ae931b73c",9:"31d6cfe0d16ae931b73c",10:"31d6cfe0d16ae931b73c",11:"31d6cfe0d16ae931b73c",12:"31d6cfe0d16ae931b73c",13:"31d6cfe0d16ae931b73c",14:"31d6cfe0d16ae931b73c",15:"31d6cfe0d16ae931b73c",16:"31d6cfe0d16ae931b73c",17:"31d6cfe0d16ae931b73c",18:"31d6cfe0d16ae931b73c",19:"31d6cfe0d16ae931b73c",20:"31d6cfe0d16ae931b73c",21:"31d6cfe0d16ae931b73c",22:"31d6cfe0d16ae931b73c",23:"31d6cfe0d16ae931b73c",24:"31d6cfe0d16ae931b73c",25:"31d6cfe0d16ae931b73c",26:"31d6cfe0d16ae931b73c",27:"31d6cfe0d16ae931b73c",28:"31d6cfe0d16ae931b73c",29:"31d6cfe0d16ae931b73c",30:"31d6cfe0d16ae931b73c",31:"31d6cfe0d16ae931b73c",32:"31d6cfe0d16ae931b73c"}[e]+".css",o=a.p+r,s=document.getElementsByTagName("link"),c=0;c<s.length;c++){var l=(d=s[c]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(l===r||l===o))return t()}var u=document.getElementsByTagName("style");for(c=0;c<u.length;c++){var d;if((l=(d=u[c]).getAttribute("data-href"))===r||l===o)return t()}var p=document.createElement("link");p.rel="stylesheet",p.type="text/css",p.onload=t,p.onerror=function(t){var r=t&&t.target&&t.target.src||o,s=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");s.code="CSS_CHUNK_LOAD_FAILED",s.request=r,delete i[e],p.parentNode.removeChild(p),n(s)},p.href=o,document.getElementsByTagName("head")[0].appendChild(p)})).then((function(){i[e]=0})));var n=o[e];if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((function(t,r){n=o[e]=[t,r]}));t.push(n[2]=r);var s,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{2:"55d5f2926c7b22177236",3:"6817af5c7ddbbd72fbf1",4:"927a84e2225924985925",5:"bbbe2165b2726754babd",6:"c6e50a831e6b09d426c7",7:"7a9d3de7e3eb6affa8fa",8:"6e10d130a82421e5de97",9:"4c310a18d1e30d64ab78",10:"b67f1d16d8fdcd03f775",11:"88732498617afe7ab4fa",12:"21fb2f8c9787acc40766",13:"bd887f6f8965a89629f1",14:"8d076150d2d32a70c85c",15:"458ea2a090159a1c312d",16:"b026bc770b996a75ab86",17:"37f97cc3eab74f285530",18:"5e155da6b34cb233975a",19:"4449616295c79e9feb82",20:"c3c9f56f752974bf19cf",21:"13590b4f67813801857e",22:"af3b6f25635a9809f6e8",23:"27002d630c581d75786b",24:"17fecccd566085bc7273",25:"d92131b48359fae551a4",26:"8e2b950cad8e4bb7145f",27:"b70f29d1c24421eeb8e0",28:"3eeac63a0c7d7ca9f57e",29:"a9703e50212c8482b1b8",30:"ccdf2a34d5a00135f6b7",31:"079c61206f2e6ac69873",32:"2c5f6af0c5d2d87ad611"}[e]+".js"}(e);var l=new Error;s=function(t){c.onerror=c.onload=null,clearTimeout(u);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",l.name="ChunkLoadError",l.type=r,l.request=i,n[1](l)}o[e]=void 0}};var u=setTimeout((function(){s({type:"timeout",target:c})}),12e4);c.onerror=c.onload=s,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],l=c.push.bind(c);c.push=t,c=c.slice();for(var u=0;u<c.length;u++)t(c[u]);var d=l;s.push([593,1]),n()}([,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"g",(function(){return h})),n.d(t,"a",(function(){return b})),n.d(t,"f",(function(){return m})),n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return j})),n.d(t,"b",(function(){return g})),n.d(t,"c",(function(){return v}));var r=n(5),i=n.n(r),o=n(103),s=n.n(o),a=n(312),c=n.n(a),l=n(26),u=n(313);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var h=function(e){var t={},n=e.hasOwnProperty("acct"),r=n&&!e.hasOwnProperty("avatar");if(t.id=String(e.id),t._original=e,n){if(t.screen_name=e.acct,t.statusnet_profile_url=e.url,r)return t;if(t.emoji=e.emojis,t.name=s()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:s()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){var i=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,i&&(t.relationship=i),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member"}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var o=t.screen_name.split("@"),a=u.a.toUnicode(o[1]);a!==o[1]&&(a="🌏"+a,t.screen_name_ui=[o[0],a].join("@"))}return t},b=function(e){var t={};return!e.hasOwnProperty("oembed")?(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id):t.mimetype=e.mimetype,t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},m=function e(t){var n={},r=t.hasOwnProperty("account");if(r){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,t.pleroma){var i=t.pleroma;n.text=i.content?t.pleroma.content["text/plain"]:t.content,n.summary=i.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=i.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=i.thread_muted,n.emoji_reactions=i.emoji_reactions,n.parent_visible=void 0===i.parent_visible||i.parent_visible}else n.text=t.content,n.summary=t.spoiler_text;if(t.akkoma){var o=t.akkoma;o&&o.source&&"text/x.misskeymarkdown"===o.source.mediaType&&(n.mfm_content=o.source.content)}else n.mfm_content=null;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=s()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return p(p({},e),{},{title_html:s()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=function(e){return e.is_post_verb?"status":e.retweeted_status?"retweet":"string"==typeof e.uri&&e.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof e.text&&e.text.match(/favorited/)?"favorite":e.text.match(/deleted notice {{tag/)||e.qvitter_delete_notice?"deletion":e.text.match(/started following/)||"follow"===e.activity_type?"follow":"unknown"}(t),void 0===t.nsfw?(n.nsfw=O(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=h(r?t.account:t.user),n.attentions=((r?t.mentions:t.attentions)||[]).map(h),n.attachments=((r?t.media_attachments:t.attachments)||[]).map(b);var a=r?t.reblog:t.retweeted_status;return a&&(n.retweeted_status=e(a)),n.favoritedBy=[],n.rebloggedBy=[],n},f=function(e){var t={};if(!e.hasOwnProperty("ntype"))t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=Object(l.b)(t.type)?m(e.status):null,t.action=t.status,t.target="move"!==t.type?null:h(e.target),t.from_profile=h(e.account),t.emoji=e.emoji,t.emoji_url=e.emoji_url;else{var n=m(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?m(e.notice.favorited_status):n,t.action=n,t.from_profile="pleroma:chat_mention"===t.type?h(e.account):h(e.from_profile)}return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},O=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.flakeId,r=c()(e);if(r){var i=r.next.max_id,o=r.prev.min_id;return{maxId:n?i:parseInt(i,10),minId:n?o:parseInt(o,10)}}},g=function(e){var t={};return t.id=e.id,t.account=h(e.account),t.unread=e.unread,t.lastMessage=v(e.last_message),t.updated_at=new Date(e.updated_at),t},v=function(e){if(e){if(e.isNormalized)return e;var t=e;return t.id=e.id,t.created_at=new Date(e.created_at),t.chat_id=e.chat_id,t.emojis=e.emojis,t.content=e.content,e.attachment?t.attachments=[b(e.attachment)]:t.attachments=[],t.pending=!!e.pending,t.error=!1,t.idempotency_key=e.idempotency_key,t.isNormalized=!0,t}}},function(e,t,n){"use strict";n.d(t,"d",(function(){return xe})),n.d(t,"a",(function(){return Ie})),n.d(t,"b",(function(){return ze}));var r=n(13),i=n.n(r),o=n(40),s=n.n(o),a=n(11),c=n.n(a),l=n(5),u=n.n(l),d=n(16),p=n.n(d),h=n(46),b=n.n(h),m=n(97),f=n.n(m),O=n(21),j=n.n(O),g=n(29),v=n.n(g),y=n(10),w=n.n(y),k=n(14),_=n(28),S=n.n(_),C=n(128),P=n.n(C),x=n(129),D=n.n(x),T=n(165),I=n.n(T),$=n(314),z=n.n($),M=n(315),U=n.n(M),F=n(130),E=n.n(F),L=n(316),R=n.n(L),A=n(12),N=n.n(A),B=n(166),V=n.n(B);function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=E()(e);if(t){var i=E()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return U()(this,n)}}function q(e,t,n,r){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=n,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}q.prototype=Object.create(Error.prototype),q.prototype.constructor=q;var J=function(e){z()(n,e);var t=H(n);function n(e){var r,i;D()(this,n),r=t.call(this),Error.captureStackTrace&&Error.captureStackTrace(I()(r));try{if("string"==typeof e&&(e=JSON.parse(e)).hasOwnProperty("error")&&(e=JSON.parse(e.error)),"object"===S()(e)){var o=JSON.parse(e.error);o.ap_id&&(o.username=o.ap_id,delete o.ap_id),r.message=(i=o,Object.entries(i).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1].reduce((function(e,t){return e+[V()(r.replace(/_/g," ")),t].join(" ")+". "}),"");return[].concat(N()(e),[i])}),[]))}else r.message=e}catch(t){r.message=e}return r}return P()(n)}(R()(Error)),W=["nickname"],Y=["id","credentials"];function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){u()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var X=function(e,t){return"/api/pleroma/admin/users/".concat(e,"/permission_group/").concat(t)},Z=function(e){return"/api/v1/notifications/".concat(e,"/dismiss")},Q=function(e){return"/api/v1/statuses/".concat(e,"/favourite")},ee=function(e){return"/api/v1/statuses/".concat(e,"/unfavourite")},te=function(e){return"/api/v1/statuses/".concat(e,"/reblog")},ne=function(e){return"/api/v1/statuses/".concat(e,"/unreblog")},re=function(e){return"/api/v1/accounts/".concat(e,"/statuses")},ie=function(e){return"/api/v1/timelines/tag/".concat(e)},oe=function(e){return"/api/v1/accounts/".concat(e,"/mute")},se=function(e){return"/api/v1/accounts/".concat(e,"/unmute")},ae=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/subscribe")},ce=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/unsubscribe")},le=function(e){return"/api/v1/statuses/".concat(e,"/bookmark")},ue=function(e){return"/api/v1/statuses/".concat(e,"/unbookmark")},de=function(e){return"/api/v1/statuses/".concat(e,"/favourited_by")},pe=function(e){return"/api/v1/statuses/".concat(e,"/reblogged_by")},he=function(e){return"/api/v1/statuses/".concat(e,"/pin")},be=function(e){return"/api/v1/statuses/".concat(e,"/unpin")},me=function(e){return"/api/v1/statuses/".concat(e,"/mute")},fe=function(e){return"/api/v1/statuses/".concat(e,"/unmute")},Oe=function(e){return"/api/v1/pleroma/statuses/".concat(e,"/reactions")},je=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ge=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ve=function(e){return"/api/v1/pleroma/chats/".concat(e,"/messages")},ye=function(e){return"/api/v1/pleroma/chats/".concat(e,"/read")},we=function(e,t){return"/api/v1/pleroma/chats/".concat(e,"/messages/").concat(t)},ke=window.fetch,_e=function(e,t){var n=""+e;return(t=t||{}).credentials="same-origin",ke(n,t)},Se=function(e){var t=e.method,n=e.url,r=e.params,i=e.payload,o=e.credentials,s=e.headers,a={method:t,headers:K({Accept:"application/json","Content-Type":"application/json"},void 0===s?{}:s)};return r&&(n+="?"+Object.entries(r).map((function(e){var t=c()(e,2),n=t[0],r=t[1];return encodeURIComponent(n)+"="+encodeURIComponent(r)})).join("&")),i&&(a.body=JSON.stringify(i)),o&&(a.headers=K(K({},a.headers),Ce(o))),_e(n,a).then((function(e){return new Promise((function(t,r){return e.json().then((function(i){return e.ok?t(i):r(new q(e.status,i,{url:n,options:a},e))})).catch((function(t){return r(new q(e.status,t,{url:n,options:a},e))}))}))}))},Ce=function(e){return e?{Authorization:"Bearer ".concat(e)}:{}},Pe=function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/following")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},xe=function(e){var t=e.credentials,n=e.stream,r=e.args,i=void 0===r?{}:r;return Object.entries(K(K({},t?{access_token:t}:{}),{},{stream:n},i)).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1];return e+"".concat(r,"=").concat(i,"&")}),"/api/v1/streaming?")},De=new Set(["update","notification","delete","filters_changed"]),Te=new Set(["pleroma:chat_update"]),Ie=function(e){var t=e.url,n=e.preprocessor,r=void 0===n?$e:n,i=e.id,o=void 0===i?"Unknown":i,s=new EventTarget,a=new WebSocket(t);if(!a)throw new Error("Failed to create socket ".concat(o));var c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e};e.addEventListener(t,(function(e){s.dispatchEvent(new CustomEvent(t,{detail:n(e)}))}))};return a.addEventListener("open",(function(e){console.debug("[WS][".concat(o,"] Socket connected"),e)})),a.addEventListener("error",(function(e){console.debug("[WS][".concat(o,"] Socket errored"),e)})),a.addEventListener("close",(function(e){console.debug("[WS][".concat(o,"] Socket disconnected with code ").concat(e.code),e)})),c(a,"open"),c(a,"close"),c(a,"message",r),c(a,"error"),s.close=function(){a.close(1e3,"Shutting down socket")},s.getState=function(){return a.readyState},s},$e=function(e){var t=e.data;if(t){var n=JSON.parse(t),r=n.event,i=n.payload;if(!De.has(r)&&!Te.has(r))return console.warn("Unknown event",e),null;if("delete"===r)return{event:r,id:i};var o=i?JSON.parse(i):null;return"update"===r?{event:r,status:Object(k.f)(o)}:"notification"===r?{event:r,notification:Object(k.e)(o)}:"pleroma:chat_update"===r?{event:r,chatUpdate:Object(k.b)(o)}:void 0}},ze=Object.freeze({JOINED:1,CLOSED:2,ERROR:3,DISABLED:4,STARTING:5,STARTING_INITIAL:6}),Me={verifyCredentials:function(e){return _e("/api/v1/accounts/verify_credentials",{headers:Ce(e)}).then((function(e){return e.ok?e.json():{error:e}})).then((function(e){return e.error?e:Object(k.g)(e)}))},fetchTimeline:function(e){var t=e.timeline,n=e.credentials,r=e.since,i=void 0!==r&&r,o=e.until,s=void 0!==o&&o,a=e.userId,c=void 0!==a&&a,l=e.tag,u=void 0!==l&&l,d=e.withMuted,p=void 0!==d&&d,h=e.replyVisibility,b=void 0===h?"all":h,m="notifications"===t,f=[],O={public:"/api/v1/timelines/public",friends:"/api/v1/timelines/home",dms:"/api/v1/timelines/direct",notifications:"/api/v1/notifications",publicAndExternal:"/api/v1/timelines/public",user:re,media:re,favorites:"/api/v1/favourites",tag:ie,bookmarks:"/api/v1/bookmarks"}[t];"user"!==t&&"media"!==t||(O=O(c)),i&&f.push(["since_id",i]),s&&f.push(["max_id",s]),u&&(O=O(u)),"media"===t&&f.push(["only_media",1]),"public"===t&&f.push(["local",!0]),"public"!==t&&"publicAndExternal"!==t||f.push(["only_media",!1]),"favorites"!==t&&"bookmarks"!==t&&f.push(["with_muted",p]),"all"!==b&&f.push(["reply_visibility",b]),f.push(["limit",20]);var g=j()(f,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");O+="?".concat(g);var v="",y="",w={};return _e(O,{headers:Ce(n)}).then((function(e){return v=e.status,y=e.statusText,w=Object(k.d)(e.headers.get("Link"),{flakeId:"bookmarks"!==t&&"notifications"!==t}),e})).then((function(e){return e.json()})).then((function(e){return e.errors?(e.status=v,e.statusText=y,e):{data:e.map(m?k.e:k.f),pagination:w}}))},fetchPinnedStatuses:function(e){var t=e.id,n=e.credentials,r=re(t)+"?pinned=true";return Se({url:r,credentials:n}).then((function(e){return e.map(k.f)}))},fetchConversation:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e,"/context")}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){var t=e.ancestors,n=e.descendants;return{ancestors:t.map(k.f),descendants:n.map(k.f)}}))},fetchStatus:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e)}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){return Object(k.f)(e)}))},fetchFriends:Pe,exportFriends:function(e){var t,n=e.id,r=e.credentials;return new Promise((t=i()(w.a.mark((function e(t,i){var o,s,a,c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,o=[],s=!0;case 3:if(!s){e.next=12;break}return a=o.length>0?b()(o).id:void 0,e.next=7,Pe({id:n,maxId:a,credentials:r});case 7:c=e.sent,o=f()(o,c),0===c.length&&(s=!1),e.next=3;break;case 12:t(o),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),i(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,15]])}))),function(e,n){return t.apply(this,arguments)}))},fetchFollowers:function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/followers")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},followUser:function(e){var t=e.id,n=e.credentials,r=s()(e,Y),i=function(e){return"/api/v1/accounts/".concat(e,"/follow")}(t),o={};return void 0!==r.reblogs&&(o.reblogs=r.reblogs),_e(i,{body:JSON.stringify(o),headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),method:"POST"}).then((function(e){return e.json()}))},unfollowUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/accounts/".concat(e,"/unfollow")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},pinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:he(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unpinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:be(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},muteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:me(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unmuteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:fe(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},blockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/block")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},unblockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/unblock")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},fetchUser:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts","/").concat(t);return Se({url:r,credentials:n}).then((function(e){return Object(k.g)(e)}))},fetchUserRelationship:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts/relationships","/?id=").concat(t);return _e(r,{headers:Ce(n)}).then((function(e){return new Promise((function(t,n){return e.json().then((function(i){return e.ok?t(i):n(new q(e.status,i,{url:r},e))}))}))}))},favorite:function(e){var t=e.id,n=e.credentials;return Se({url:Q(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unfavorite:function(e){var t=e.id,n=e.credentials;return Se({url:ee(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},retweet:function(e){var t=e.id,n=e.credentials;return Se({url:te(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unretweet:function(e){var t=e.id,n=e.credentials;return Se({url:ne(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},bookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:le(t),headers:Ce(n),method:"POST"})},unbookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:ue(t),headers:Ce(n),method:"POST"})},postStatus:function(e){var t=e.credentials,n=e.status,r=e.spoilerText,i=e.visibility,o=e.sensitive,s=e.poll,a=e.mediaIds,c=void 0===a?[]:a,l=e.inReplyToStatusId,u=e.contentType,d=e.preview,p=e.idempotencyKey,h=new FormData,b=s.options||[];if(h.append("status",n),h.append("source","Pleroma FE"),r&&h.append("spoiler_text",r),i&&h.append("visibility",i),o&&h.append("sensitive",o),u&&h.append("content_type",u),c.forEach((function(e){h.append("media_ids[]",e)})),b.some((function(e){return""!==e}))){var m={expires_in:s.expiresIn,multiple:s.multiple};Object.keys(m).forEach((function(e){h.append("poll[".concat(e,"]"),m[e])})),b.forEach((function(e){h.append("poll[options][]",e)}))}l&&h.append("in_reply_to_id",l),d&&h.append("preview","true");var f=Ce(t);return p&&(f["idempotency-key"]=p),_e("/api/v1/statuses",{body:h,method:"POST",headers:f}).then((function(e){return e.json()})).then((function(e){return e.error?e:Object(k.f)(e)}))},deleteStatus:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/statuses/".concat(e)}(t),{headers:Ce(n),method:"DELETE"})},uploadMedia:function(e){var t=e.formData,n=e.credentials;return _e("/api/v1/media",{body:t,method:"POST",headers:Ce(n)}).then((function(e){return e.json()})).then((function(e){return Object(k.a)(e)}))},setMediaDescription:function(e){var t=e.id,n=e.description,r=e.credentials;return Se({url:"".concat("/api/v1/media","/").concat(t),method:"PUT",headers:Ce(r),payload:{description:n}}).then((function(e){return Object(k.a)(e)}))},fetchMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/mutes/",credentials:t}).then((function(e){return e.map(k.g)}))},muteUser:function(e){var t=e.id,n=e.credentials;return Se({url:oe(t),credentials:n,method:"POST"})},unmuteUser:function(e){var t=e.id,n=e.credentials;return Se({url:se(t),credentials:n,method:"POST"})},subscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ae(t),credentials:n,method:"POST"})},unsubscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ce(t),credentials:n,method:"POST"})},fetchBlocks:function(e){var t=e.credentials;return Se({url:"/api/v1/blocks/",credentials:t}).then((function(e){return e.map(k.g)}))},fetchOAuthTokens:function(e){var t=e.credentials;return _e("/api/oauth_tokens.json",{headers:Ce(t)}).then((function(e){if(e.ok)return e.json();throw new Error("Error fetching auth tokens",e)}))},revokeOAuthToken:function(e){var t=e.id,n=e.credentials,r="/api/oauth_tokens/".concat(t);return _e(r,{headers:Ce(n),method:"DELETE"})},tagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"PUT",headers:i,body:JSON.stringify(r)})},untagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"DELETE",headers:i,body:JSON.stringify(r)})},deleteUser:function(e){var t=e.credentials,n=e.user.screen_name,r=Ce(t);return _e("".concat("/api/pleroma/admin/users","?nickname=").concat(n),{method:"DELETE",headers:r})},addRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"POST",headers:Ce(n),body:{}})},deleteRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"DELETE",headers:Ce(n),body:{}})},activateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/activate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},deactivateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/deactivate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},register:function(e){var t=e.params,n=e.credentials,r=t.nickname,i=s()(t,W);return _e("/api/v1/accounts",{method:"POST",headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),body:JSON.stringify(K({nickname:r,locale:"en_US",agreement:!0},i))}).then((function(e){return e.ok?e.json():e.json().then((function(e){throw new J(e)}))}))},getCaptcha:function(){return _e("/api/pleroma/captcha").then((function(e){return e.json()}))},updateProfileImages:function(e){var t=e.credentials,n=e.avatar,r=void 0===n?null:n,i=e.avatarName,o=void 0===i?null:i,s=e.banner,a=void 0===s?null:s,c=e.background,l=void 0===c?null:c,u=new FormData;return null!==r&&(null!==o?u.append("avatar",r,o):u.append("avatar",r)),null!==a&&u.append("header",a),null!==l&&u.append("pleroma_background_image",l),_e("/api/v1/accounts/update_credentials",{headers:Ce(t),method:"PATCH",body:u}).then((function(e){return e.json()})).then((function(e){if(e.error)throw new Error(e.error);return Object(k.g)(e)}))},updateProfile:function(e){var t=e.credentials,n=e.params;return Se({url:"/api/v1/accounts/update_credentials",method:"PATCH",payload:n,credentials:t}).then((function(e){return Object(k.g)(e)}))},importMutes:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/mutes_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importBlocks:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/blocks_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importFollows:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/follow_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},deleteAccount:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/delete_account",{body:r,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changeEmail:function(e){var t=e.credentials,n=e.email,r=e.password,i=new FormData;return i.append("email",n),i.append("password",r),_e("/api/pleroma/change_email",{body:i,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changePassword:function(e){var t=e.credentials,n=e.password,r=e.newPassword,i=e.newPasswordConfirmation,o=new FormData;return o.append("password",n),o.append("new_password",r),o.append("new_password_confirmation",i),_e("/api/pleroma/change_password",{body:o,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},settingsMFA:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaDisableOTP:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/accounts/mfa/totp",{body:r,method:"DELETE",headers:Ce(t)}).then((function(e){return e.json()}))},generateMfaBackupCodes:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/backup_codes",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaSetupOTP:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/setup/totp",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaConfirmOTP:function(e){var t=e.credentials,n=e.password,r=e.token,i=new FormData;return i.append("password",n),i.append("code",r),_e("/api/pleroma/accounts/mfa/confirm/totp",{body:i,headers:Ce(t),method:"POST"}).then((function(e){return e.json()}))},fetchFollowRequests:function(e){var t=e.credentials;return _e("/api/v1/follow_requests",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},approveUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/authorize")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},denyUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/reject")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},suggestions:function(e){var t=e.credentials;return _e("/api/v1/suggestions",{headers:Ce(t)}).then((function(e){return e.json()}))},markNotificationsAsSeen:function(e){var t=e.id,n=e.credentials,r=e.single,i=void 0!==r&&r,o=new FormData;return i?o.append("id",t):o.append("max_id",t),_e("/api/v1/pleroma/notifications/read",{body:o,headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},dismissNotification:function(e){var t=e.credentials,n=e.id;return Se({url:Z(n),method:"POST",payload:{id:n},credentials:t})},vote:function(e){var t,n=e.pollId,r=e.choices,i=e.credentials;return(new FormData).append("choices",r),Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t,"/votes")),method:"POST",credentials:i,payload:{choices:r}})},fetchPoll:function(e){var t,n=e.pollId,r=e.credentials;return Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t)),method:"GET",credentials:r})},fetchFavoritedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:de(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchRebloggedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:pe(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchMascot:function(e){var t=e.credentials;return Se({url:"/api/v1/pleroma/mascot",credentials:t})},updateMascot:function(e){var t=e.mascot,n=e.credentials,r=new FormData;return r.append("file",t),_e("/api/v1/pleroma/mascot",{headers:Ce(n),method:"PUT",body:r}).then((function(e){return e.json()}))},fetchEmojiReactions:function(e){var t=e.id,n=e.credentials;return Se({url:Oe(t),credentials:n}).then((function(e){return e.map((function(e){return e.accounts=e.accounts.map(k.g),e}))}))},reactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:je(t,n),method:"PUT",credentials:r}).then(k.f)},unreactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:ge(t,n),method:"DELETE",credentials:r}).then(k.f)},reportUser:function(e){var t=e.credentials,n=e.userId,r=e.statusIds,i=e.comment,o=e.forward;return Se({url:"/api/v1/reports",method:"POST",payload:{account_id:n,status_ids:r,comment:i,forward:o},credentials:t})},updateNotificationSettings:function(e){var t=e.credentials,n=e.settings,r=new FormData;return v()(n,(function(e,t){r.append(t,e)})),_e("/api/pleroma/notification_settings",{headers:Ce(t),method:"PUT",body:r}).then((function(e){return e.json()}))},search2:function(e){var t=e.credentials,n=e.q,r=e.resolve,i=e.limit,o=e.offset,s=e.following,a="/api/v2/search",c=[];n&&c.push(["q",encodeURIComponent(n)]),r&&c.push(["resolve",r]),i&&c.push(["limit",i]),o&&c.push(["offset",o]),s&&c.push(["following",!0]),c.push(["with_relationships",!0]);var l=j()(c,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return a+="?".concat(l),_e(a,{headers:Ce(t)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching search result",e)})).then((function(e){return e.json()})).then((function(e){return e.accounts=e.accounts.slice(0,i).map((function(e){return Object(k.g)(e)})),e.statuses=e.statuses.slice(0,i).map((function(e){return Object(k.f)(e)})),e}))},searchUsers:function(e){var t=e.credentials,n=e.query;return Se({url:"/api/v1/accounts/search",params:{q:n,resolve:!0},credentials:t}).then((function(e){return e.map(k.g)}))},fetchKnownDomains:function(e){var t=e.credentials;return Se({url:"/api/v1/instance/peers",credentials:t})},fetchDomainMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/domain_blocks",credentials:t})},muteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"POST",payload:{domain:t},credentials:n})},unmuteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"DELETE",payload:{domain:t},credentials:n})},chats:function(e){var t=e.credentials;return _e("/api/v1/pleroma/chats",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return{chats:e.map(k.b).filter((function(e){return e}))}}))},getOrCreateChat:function(e){var t,n=e.accountId,r=e.credentials;return Se({url:(t=n,"/api/v1/pleroma/chats/by-account-id/".concat(t)),method:"POST",credentials:r})},chatMessages:function(e){var t=e.id,n=e.credentials,r=e.maxId,i=e.sinceId,o=e.limit,s=void 0===o?20:o,a=ve(t),c=[r&&"max_id=".concat(r),i&&"since_id=".concat(i),s&&"limit=".concat(s)].filter((function(e){return e})).join("&");return Se({url:a+=c?"?"+c:"",method:"GET",credentials:n})},sendChatMessage:function(e){var t=e.id,n=e.content,r=e.mediaId,i=void 0===r?null:r,o=e.idempotencyKey,s=e.credentials,a={content:n};i&&(a.media_id=i);var c={};return o&&(c["idempotency-key"]=o),Se({url:ve(t),method:"POST",payload:a,credentials:s,headers:c})},readChat:function(e){var t=e.id,n=e.lastReadId,r=e.credentials;return Se({url:ye(t),method:"POST",payload:{last_read_id:n},credentials:r})},deleteChatMessage:function(e){var t=e.chatId,n=e.messageId,r=e.credentials;return Se({url:we(t,n),method:"DELETE",credentials:r})}};t.c=Me},,,function(e,t,n){"use strict";n.d(t,"i",(function(){return p})),n.d(t,"h",(function(){return b})),n.d(t,"c",(function(){return f})),n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return j})),n.d(t,"f",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"j",(function(){return y})),n.d(t,"e",(function(){return w})),n.d(t,"d",(function(){return k}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(20);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e,t,n){if(null!=e){if("#"===e[0]||"transparent"===e)return e;if("object"===c()(e)){var r=e;e=r.r,t=r.g,n=r.b}var i=[e,t,n].map((function(e){return e=(e=(e=Math.ceil(e))<0?0:e)>255?255:e})),o=s()(i,3);return e=o[0],t=o[1],n=o[2],"#".concat(((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1))}},h=function(e){return"rgb".split("").reduce((function(t,n){return t[n]=function(e){var t=e/255;return t<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}(e[n]),t}),{})},b=function(e){var t=h(e);return.2126*t.r+.7152*t.g+.0722*t.b},m=function(e,t){var n=b(e),r=b(t),i=n>r?[n,r]:[r,n],o=s()(i,2);return(o[0]+.05)/(o[1]+.05)},f=function(e,t,n){return m(j(n,t),e)},O=function(e,t,n){return 1===t||void 0===t?e:"rgb".split("").reduce((function(r,i){return r[i]=e[i]*t+n[i]*(1-t),r}),{})},j=function(e,t){return t.reduce((function(e,t){var n=s()(t,2),r=n[0],i=n[1];return O(r,i,e)}),e)},g=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},v=function(e,t){return"rgb".split("").reduce((function(n,r){return n[r]=(e[r]+t[r])/2,n}),{})},y=function(e){return"rgba(".concat(Math.floor(e.r),", ").concat(Math.floor(e.g),", ").concat(Math.floor(e.b),", ").concat(e.a,")")},w=function(e,t,n){if(m(e,t)<4.5){var r=void 0!==t.a?{a:t.a}:{},i=Object.assign(r,Object(l.invertLightness)(t).rgb);return!n&&m(e,i)<4.5?Object(l.contrastRatio)(e,t).rgb:i}return t},k=function(e,t){var n={};if("object"===c()(e))n=e;else if("string"==typeof e){if(!e.startsWith("#"))return e;n=g(e)}return y(d(d({},n),{},{a:t}))}},,,,function(e,t,n){"use strict";n.r(t);var r=n(0);var i=n(50),o=n(6),s=n(3);o.c.add(s.ab);var a={props:["user","betterShadow","compact","bot"],data:function(){return{showPlaceholder:!1,defaultAvatar:"".concat(this.$store.state.instance.server+this.$store.state.instance.defaultAvatar)}},components:{StillImage:i.a},methods:{imgSrc:function(e){return!e||this.showPlaceholder?this.defaultAvatar:e},imageLoadError:function(){this.showPlaceholder=!0}}},c=(n(512),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("StillImage"),c=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)(["Avatar",{"-compact":e.compact}])},[e.user?(Object(r.D)(),Object(r.h)(a,{key:0,class:Object(r.w)(["avatar",{"-compact":e.compact,"-better-shadow":e.betterShadow}]),alt:e.user.screen_name_ui,title:e.user.screen_name_ui,src:e.imgSrc(e.user.profile_image_url_original),"image-load-error":e.imageLoadError},null,8,["alt","title","src","image-load-error","class"])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["avatar -placeholder",{"-compact":e.compact}])},null,2)),e.bot?(Object(r.D)(),Object(r.h)(c,{key:2,icon:"robot",class:"bot-indicator"})):Object(r.i)("",!0)],2)}]]);t.default=l},function(e,t,n){"use strict";var r=n(124),i=n.n(r),o=function(e){return e&&e.includes("@")};t.a=function(e,t,n){var r=!t||o(t)||i()(n,t);return{name:r?"external-user-profile":"user-profile",params:r?{id:e}:{name:t}}}},function(e,t,n){"use strict";n.r(t);var r=n(0);var i={name:"Popover",props:{trigger:String,placement:String,boundTo:Object,boundToSelector:String,margin:Object,offset:Object,popoverClass:String,removePadding:Boolean},data:function(){return{hidden:!0,styles:{opacity:0},oldSize:{width:0,height:0}}},methods:{containerBoundingClientRect:function(){return(this.boundToSelector?this.$el.closest(this.boundToSelector):this.$el.offsetParent).getBoundingClientRect()},updateStyles:function(){if(this.hidden)this.styles={opacity:0};else{var e=this.$refs.trigger&&this.$refs.trigger.children[0]||this.$el,t=e.offsetWidth||e.clientWidth,n=e.offsetHeight||e.clientHeight,r=e.getBoundingClientRect(),i=r.left+.5*r.width,o=r.top,s=this.$refs.content,a=this.boundTo&&("container"===this.boundTo.x||"container"===this.boundTo.y)&&this.containerBoundingClientRect(),c=this.margin||{},l=this.boundTo&&"container"===this.boundTo.x?{min:a.left+(c.left||0),max:a.right-(c.right||0)}:{min:0+(c.left||10),max:window.innerWidth-(c.right||10)},u=this.boundTo&&"container"===this.boundTo.y?{min:a.top+(c.top||0),max:a.bottom-(c.bottom||0)}:{min:0+(c.top||50),max:window.innerHeight-(c.bottom||5)},d=0;i-.5*s.offsetWidth<l.min&&(d+=-(i-.5*s.offsetWidth)+l.min),i+d+.5*s.offsetWidth>l.max&&(d-=i+d+.5*s.offsetWidth-l.max);var p="bottom"!==this.placement;o+s.offsetHeight>u.max&&(p=!0),o-s.offsetHeight<u.min&&(p=!1);var h=0;if(this.removePadding&&p){var b=getComputedStyle(e);h=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom)}var m=this.offset&&this.offset.y||0,f=p?-n+h-m-s.offsetHeight:m,O=this.offset&&this.offset.x||0,j=.5*t-.5*s.offsetWidth+d+O;this.styles={opacity:1,transform:"translateX(".concat(Math.round(j),"px) translateY(").concat(Math.round(f),"px)")}}},showPopover:function(){var e=this,t=this.hidden;this.hidden=!1,this.$nextTick((function(){t&&e.$emit("show"),e.updateStyles()}))},hidePopover:function(){this.hidden||this.$emit("close"),this.hidden=!0,this.styles={opacity:0}},onMouseenter:function(e){"hover"===this.trigger&&this.showPopover()},onMouseleave:function(e){"hover"===this.trigger&&this.hidePopover()},onClick:function(e){"click"===this.trigger&&(this.hidden?this.showPopover():this.hidePopover())},onClickOutside:function(e){this.hidden||this.$el.contains(e.target)||this.hidePopover()}},updated:function(){var e=this.$refs.content;e&&(this.oldSize.width===e.offsetWidth&&this.oldSize.height===e.offsetHeight||(this.updateStyles(),this.oldSize={width:e.offsetWidth,height:e.offsetHeight}))},created:function(){document.addEventListener("click",this.onClickOutside)},unmounted:function(){document.removeEventListener("click",this.onClickOutside),this.hidePopover()}},o=(n(527),n(4));const s=n.n(o)()(i,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("div",{onMouseenter:t[1]||(t[1]=(...t)=>e.onMouseenter&&e.onMouseenter(...t)),onMouseleave:t[2]||(t[2]=(...t)=>e.onMouseleave&&e.onMouseleave(...t))},[Object(r.k)("button",{ref:"trigger",class:"button-unstyled popover-trigger-button",type:"button",onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},[Object(r.I)(e.$slots,"trigger")],512),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"content",style:Object(r.x)(e.styles),class:Object(r.w)(["popover",e.popoverClass||"popover-default"])},[Object(r.I)(e.$slots,"content",{class:"popover-inner",close:e.hidePopover})],6))],32)}]]);t.default=s},function(e,t,n){"use strict";var r=n(11),i=n.n(r),o=n(12),s=n.n(o),a=n(40),c=n.n(a),l=n(328),u=n.n(l),d=n(75),p=n.n(d),h=n(0);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var f=function(e){var t=/(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gi.exec(e);return t&&(t[1]||t[2])},O=function(e){var t=e.substring(1,e.length-1).replace(new RegExp("^"+f(e)),"").replace(/\/?$/,"").trim(),n=Array.from(t.matchAll(/([a-z0-9-]+)(?:=("[^"]+?"|'[^']+?'))?/gi)).map((function(e){var t=i()(e,3);t[0];return[t[1],t[2]]})).map((function(e){var t=i()(e,2),n=t[0],r=t[1];return r?[n,r.substring(1,r.length-1)]:[n,!0]}));return Object.fromEntries(n)},j=function(e,t,n){for(var r=[],i="",o=0;o<e.length;o++){var s=e[o];if(":"===s){var a,c=e.slice(o+1),l=!1,u=b(t);try{for(u.s();!(a=u.n()).done;){var d=a.value;if(c.slice(0,d.shortcode.length+1)===d.shortcode+":"){l=d;break}}}catch(e){u.e(e)}finally{u.f()}l?(r.push(i),i="",r.push(n(l)),o+=l.shortcode.length+1):i+=s}else i+=s}return i&&r.push(i),r};function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var y=n(50),w=n(81);const k={class:"HashtagLink"},_=["href","innerHTML"];var S={name:"HashtagLink",props:{url:{required:!0,type:String},content:{required:!0,type:String},tag:{required:!1,type:String,default:""}},methods:{onClick:function(){var e,t,n=this.tag||(e=this.url,!!(t=/tag[s]*\/(\w+)$/g.exec(e))&&t[1]);if(n){var r=this.generateTagLink(n);this.$router.push(r)}else window.open(this.url,"_blank")},generateTagLink:function(e){return"/tag/".concat(e)}}},C=(n(515),n(4));var P=n.n(C)()(S,[["render",function(e,t,n,r,i,o){return Object(h.D)(),Object(h.j)("span",k,[Object(h.k)("a",{href:e.url,class:"original",target:"_blank",onClick:t[0]||(t[0]=Object(h.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"])),innerHTML:e.content},null,8,_)])}]]),x=(n(516),["index"]);t.a={name:"RichContent",components:{MentionsLine:w.b,HashtagLink:P},props:{html:{required:!0,type:String},attentions:{required:!1,default:function(){return[]}},emoji:{required:!0,type:Array},handleLinks:{required:!1,type:Boolean,default:!1},greentext:{required:!1,type:Boolean,default:!1}},render:function(){var e=this,t=T(this.html,this.greentext).newHtml,n=null,r="",o=[],a=[],l=[],u=[],d=0,b=0,m=!1,g=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),n=[],r=[["",n]],i="",o=null,s=function(){return r[r.length-1][1]},a=function(){""!==i&&(s().push(i),i="")},c=function(e){s().push([e])},l=function(e){var t=s(),n=[p()(e),[]];r.push(n),t.push(n)},u=function(e){var t=r[r.length-1];f(r[r.length-1][0])===f(e)?(t.push(e),r.pop()):s().push(e)},d=0;d<e.length;d++){var h=e[d];if("<"===h&&null===o)a(),o=h;else if(">"!==h&&null!==o)o+=h;else if(">"===h&&null!==o){var b=o+=h;o=null;var m=f(b);"/"===b[1]?u(b):t.has(m)||"/"===b[b.length-2]?c(b):l(b)}else i+=h}return o&&(i+=o),a(),n}(t).map((function t(o,c,u,p){if("string"==typeof o){var b=""===o.trim();return o.includes("\n")&&(n=null),b?(r=o,c!==u.length-1&&null!==n?o.trim():o):(n=null,o.includes(":")&&(o=["",j(o,e.emoji,(function(e){var t=e.shortcode,n=e.url;return Object(h.m)(y.a,{class:"emoji img",src:n,title:":".concat(t,":"),alt:":".concat(t,":")},null)}))]),o)}if(Array.isArray(o)){var m=o,g=i()(m,3),v=g[0],k=g[1],_=g[2],S=f(v),C=O(v),P=!(null!==n)||k&&"string"==typeof k[0]&&k[0].match(/^\s/)?"":r;switch(S){case"br":n=null;break;case"img":return["",[P,(x=v,Object(h.m)(y.a,Object(h.u)(O(x),{class:"img"}),null))],""];case"a":if(!e.handleLinks)break;if(C.class&&C.class.includes("mention"))return function(t,r){var i=D(t,r,d++);return i.notifying=e.attentions.some((function(e){return e.statusnet_profile_url===i.url})),a.push(i),null===n&&(n=[]),n.push(i),n.length>w.a&&l.push(i),1===n.length?Object(h.m)(w.b,{mentions:n},null):""}(C,k);if(n=null,C.href)return function(e,t){var n=e.href.replace(/&/g,"&"),r=t.map((function(t){return"string"==typeof t?t.replace(e.href,n):"<span>"===t[0]?Object(h.m)("span",null,[t[1]]):t[1]}));return Object(h.m)("a",Object(h.u)({attrs:e},{href:n}),s()(r))}(C,k);break;case"span":if(e.handleLinks&&C.class&&C.class.includes("h-card"))return["",k.map(t),""]}return void 0!==k?["",[P,[v,k.map(t),_]],""]:["",[P,o],""]}var x})),v=s()(g).reverse().map((function t(n,r,a,l){var d;if("string"==typeof n)return""===n.trim()?n:(m||(m=!0),p()(n));if(Array.isArray(n)){var j=i()(n,2),g=j[0],v=j[1],y=""===g?"":f(g);switch(y){case"a":if(!e.handleLinks)break;var w=O(g);if(w.class&&w.class.includes("hashtag")||"tag"===w.rel)return function(e,t,n){var r=D(e,t,b++),i=(r.index,c()(r,x));u.push(i),n||o.push(i);var s=i.url,a=i.tag,l=i.content;return Object(h.m)(P,{url:s,tag:a,content:l},null)}(w,v,m);w.target="_blank";var k=s()(v).reverse().map(t).reverse();return Object(h.m)("a",w,[k]);case"":return s()(v).reverse().map(t).reverse()}if(void 0!==v){var _=Array.isArray(v)?s()(v).reverse().map(t).reverse():v;return Object(h.m)(y,O(g),"function"==typeof(d=_)||"[object Object]"===Object.prototype.toString.call(d)&&!Object(h.t)(d)?_:{default:function(){return[_]}})}return Object(h.m)(y,null,null)}return n})).reverse(),k=Object(h.m)("span",{class:"RichContent"},[v]),_={lastTags:o,writtenMentions:a,writtenTags:u,invisibleMentions:l};return this.$emit("parseReady",_),k}};var D=function(e,t,n){var r=t.map((function e(t){return"string"==typeof t?t:t[1].map(e).join("")})).join("");return{index:n,url:e.href,tag:e["data-tag"],content:u()(t).join(""),textContent:r}},T=function(e,t){var n=new Set(["p","div"]);return{newHtml:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),r=new Set(["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"]),i=new Set(["br"]),o=new Set([].concat(s()(r.values()),s()(i.values()))),a=new Set(o),c=g(n);try{for(c.s();!(e=c.n()).done;){var l=e.value;a.delete(l)}}catch(e){c.e(e)}finally{c.f()}for(var u=new Set([].concat(s()(a.values()),s()(n.values()))),d=[],p=[],h="",b=null,m=function(){h.trim().length>0?d.push({level:[].concat(p),text:h}):d.push(h),h=""},O=function(e){m(),d.push(e)},j=function(e){m(),d.push(e),p.unshift(f(e))},v=function(e){p[0]===f(e)?(m(),d.push(e),p.shift()):h+=e},y=0;y<t.length;y++){var w=t[y];if("<"===w&&null===b)b=w;else if(">"!==w&&null!==b)b+=w;else if(">"===w&&null!==b){var k=b+=w;b=null;var _=f(k);u.has(_)?i.has(_)?O(k):a.has(_)?"/"===k[1]?v(k):"/"===k[k.length-2]?O(k):j(k):h+=k:h+=k}else"\n"===w?O(w):h+=w}return b&&(h+=b),m(),d}(e).reverse().map((function(e,r,i){if(!e.text)return e;var o=e.text;if(t&&e.level.every((function(e){return n.has(e)}))&&(o.includes(">")||o.includes("<"))){var s=o.replace(/<[^>]+?>/gi,"").replace(/@\w+/gi,"").trim();if(s.startsWith(">"))return"<span class='greentext'>".concat(o,"</span>");if(s.startsWith("<"))return"<span class='cyantext'>".concat(o,"</span>")}return o})).reverse().join("")}}},function(e,t,n){"use strict";n.d(t,"e",(function(){return d})),n.d(t,"b",(function(){return b})),n.d(t,"c",(function(){return m})),n.d(t,"d",(function(){return O})),n.d(t,"a",(function(){return j})),n.d(t,"f",(function(){return g}));var r=n(124),i=n.n(r),o=n(125),s=n.n(o),a=n(49),c=n.n(a),l=n(126),u=n(127),d=function(e){return e.state.statuses.notifications.data},p=function(e){var t=e.rootState||e.state;return[t.config.notificationVisibility.likes&&"like",t.config.notificationVisibility.mentions&&"mention",t.config.notificationVisibility.repeats&&"repeat",t.config.notificationVisibility.follows&&"follow",t.config.notificationVisibility.followRequest&&"follow_request",t.config.notificationVisibility.moves&&"move",t.config.notificationVisibility.emojiReactions&&"pleroma:emoji_reaction",t.config.notificationVisibility.polls&&"poll"].filter((function(e){return e}))},h=["like","mention","repeat","pleroma:emoji_reaction","poll"],b=function(e){return i()(h,e)},m=function(e){return!(b(e.type)&&!e.status)},f=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},O=function(e,t){var n=e.rootState||e.state;if(!t.seen&&p(e).includes(t.type)&&("mention"!==t.type||!function(e,t){if(t.status)return t.status.muted||Object(l.a)(t.status,e.rootGetters.mergedConfig.muteWords).length>0}(e,t))){var r=v(t,e.rootGetters.i18n);Object(u.a)(n,r)}},j=function(e,t){var n=d(e).map((function(e){return e})).sort(f);return(n=s()(n,"seen")).filter((function(n){return(t||p(e)).includes(n.type)}))},g=function(e){return c()(j(e),(function(e){return!e.seen}))},v=function(e,t){var n,r={tag:e.id},i=e.status,o=e.from_profile.name;switch(r.title=o,r.icon=e.from_profile.profile_image_url,e.type){case"like":n="favorited_you";break;case"repeat":n="repeated_you";break;case"follow":n="followed_you";break;case"move":n="migrated_to";break;case"follow_request":n="follow_request";break;case"poll":n="poll_ended"}return"pleroma:emoji_reaction"===e.type?r.body=t.t("notifications.reacted_with",[e.emoji]):n?r.body=t.t("notifications."+n):b(e.type)&&(r.body=e.status.text),i&&i.attachments&&i.attachments.length>0&&!i.nsfw&&i.attachments[0].mimetype.startsWith("image/")&&(r.image=i.attachments[0].url),r}},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return c}));var r=n(5),i=n.n(r),o=n(18);function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var c=function(e){if(void 0!==e){var t=e.color,n=e.type;if("string"==typeof t){var r=Object(o.f)(t);if(null!=r){var i="rgb(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),")"),s="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .1)"),c="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .2)"),l={"--____highlight-solidColor":i,"--____highlight-tintColor":s,"--____highlight-tintColor2":c};return"striped"===n?a({backgroundImage:["repeating-linear-gradient(135deg,","".concat(s," ,"),"".concat(s," 20px,"),"".concat(c," 20px,"),"".concat(c," 40px")].join(" "),backgroundPosition:"0 0"},l):"solid"===n?a({backgroundColor:c},l):"side"===n?a({backgroundImage:["linear-gradient(to right,","".concat(i," ,"),"".concat(i," 2px,"),"transparent 6px"].join(" "),backgroundPosition:"0 0"},l):void 0}}}},l=function(e){return"USER____"+e.screen_name.replace(/\./g,"_").replace(/@/g,"_AT_")}},,function(e,t,n){"use strict";var r=function(e){return e.match(/flash/)?"flash":e.match(/text\/html/)?"html":e.match(/image/)?"image":e.match(/video/)?"video":e.match(/audio/)?"audio":"unknown"},i={fileType:r,fileMatchesSomeType:function(e,t){return e.some((function(e){return r(t.mimetype)===e}))}};t.a=i},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"alert error"},o={key:1,class:"status-container muted"},s={class:"status-username"},a={key:0,class:"mute-thread"},c={key:1,class:"mute-thread"},l=["title"],u={key:0,class:"pin"},d={class:"faint"},p={class:"right-side faint"},h=["title"],b=Object(r.l)(" "+Object(r.O)(" ")+" "),m=["data-tags"],f={key:0,class:"left-side"},O=["href"],j={class:"right-side"},g={key:1,class:"status-heading"},v={class:"heading-name-row"},y={class:"heading-left"},w=["title"],k=["title"],_=["src"],S={class:"heading-right"},C=["title"],P=["title"],x=["title","aria-expanded"],D=["title"],T={key:0,class:"heading-reply-row"},I={key:0,class:"glued-label reply-glued-label"},$=["aria-label"],z=Object(r.l)(" "+Object(r.O)(" ")+" "),M={class:"reply-to-text"},U={key:1,class:"reply-to-no-popover"},F={class:"reply-to-text"},E={key:1,class:"glued-label"},L=["aria-label"],R={class:"mentions-text"},A={key:2,class:"replies"},N=["title"],B={key:1,class:"faint"},V=["onClick"],H={key:0,class:"favs-repeated-users"},q={class:"stats"},J={class:"stat-count"},W={class:"stat-title"},Y={class:"stat-number"},G={class:"stat-count"},K={class:"stat-title"},X={class:"stat-number"},Z={class:"avatar-row"},Q={key:4,class:"status-actions"},ee={key:3,class:"gravestone"},te={class:"left-side"},ne={class:"right-side"},re={class:"deleted-text"},ie={key:4,class:"status-container reply-form"};var oe=n(5),se=n.n(oe),ae=n(136),ce=n.n(ae),le=n(75),ue=n.n(le);const de={class:"ReplyButton"},pe=["title"],he={key:1},be={key:2,class:"action-counter"};var me=n(6),fe=n(3);me.c.add(fe.Y);var Oe={name:"ReplyButton",props:["status","replying"],computed:{loggedIn:function(){return!!this.$store.state.users.currentUser}}},je=(n(546),n(4)),ge=n.n(je);var ve=ge()(Oe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",de,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",{"-active":e.replying}]),title:e.$t("tool_tip.reply"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.$emit("toggle"),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"reply"})],10,pe)):(Object(r.D)(),Object(r.j)("span",he,[Object(r.m)(a,{icon:"reply",class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.reply")},null,8,["title"])])),e.status.replies_count>0?(Object(r.D)(),Object(r.j)("span",be,Object(r.O)(e.status.replies_count),1)):Object(r.i)("",!0)])}]]);const ye={class:"FavoriteButton"},we=["title"],ke={key:1},_e={key:2,class:"action-counter"};var Se=n(8),Ce=n(41);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}me.c.add(fe.jb,Ce.d);var xe={props:["status","loggedIn"],data:function(){return{animated:!1}},methods:{favorite:function(){var e=this;this.status.favorited?this.$store.dispatch("unfavorite",{id:this.status.id}):this.$store.dispatch("favorite",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(Se.c)(["mergedConfig"]))};n(547);var De=ge()(xe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",ye,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.favorited&&"-favorited"]),title:e.$t("tool_tip.favorite"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.favorite(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:[e.status.favorited?"fas":"far","star"],spin:e.animated},null,8,["icon","spin"])],10,we)):(Object(r.D)(),Object(r.j)("span",ke,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.favorite"),icon:["far","star"]},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.fave_num>0?(Object(r.D)(),Object(r.j)("span",_e,Object(r.O)(e.status.fave_num),1)):Object(r.i)("",!0)])}]]);const Te={class:"reaction-picker-filter"},Ie=["placeholder"],$e={class:"reaction-picker"},ze=["title","onClick"],Me=Object(r.k)("div",{class:"reaction-picker-divider"},null,-1),Ue=["title","onClick"],Fe=["src"],Ee={key:1},Le=Object(r.k)("div",{class:"reaction-bottom-fader"},null,-1),Re=["title"];var Ae=n(12),Ne=n.n(Ae),Be=n(24);me.c.add(Ce.c);var Ve={props:["status"],data:function(){return{filterWord:""}},components:{Popover:Be.default},methods:{addReaction:function(e,t,n){var r=this.status.emoji_reactions.find((function(e){return e.name===t}));r&&r.me?this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:t}):this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:t}),n()},focusInput:function(){var e=this;this.$nextTick((function(){var t=e.$el.querySelector("input");t&&t.focus()}))}},computed:{commonEmojis:function(){return[{displayText:"thumbsup",replacement:"👍"},{displayText:"angry",replacement:"😠"},{displayText:"eyes",replacement:"👀"},{displayText:"joy",replacement:"😂"},{displayText:"fire",replacement:"🔥"}]},emojis:function(){if(""!==this.filterWord){for(var e=this.filterWord.toLowerCase(),t=[],n=0,r=[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji));n<r.length;n++){var i=r[n];if(i.replacement===this.filterWord)return[i];var o=i.displayText.toLowerCase().indexOf(e);o>-1&&(Array.isArray(t[o])||(t[o]=[]),t[o].push(i))}return t.flat()}return[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji))||[]},mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(548);var He=ge()(Ve,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"ReactButton",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"",onShow:e.focusInput},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Te,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.filterWord=t),size:"1",placeholder:e.$t("emoji.search_emoji")},null,8,Ie),[[r.S,e.filterWord]])]),Object(r.k)("div",$e,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.commonEmojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.replacement,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},Object(r.O)(t.replacement),9,ze))),128)),Me,(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,(t,i)=>(Object(r.D)(),Object(r.j)("span",{key:i,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},[!1!==t.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.imageUrl,width:"30px",class:"custom-reaction"},null,8,Fe)):(Object(r.D)(),Object(r.j)("span",Ee,Object(r.O)(t.replacement),1))],8,Ue))),128)),Le])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled popover-trigger",title:e.$t("tool_tip.add_reaction")},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:["far","smile-beam"]})],8,Re)]),_:1},8,["onShow"])}]]);const qe={class:"RetweetButton"},Je=["title"],We={key:1},Ye={key:2},Ge={key:3,class:"no-event"};me.c.add(fe.Z);var Ke={props:["status","loggedIn","visibility"],data:function(){return{animated:!1}},methods:{retweet:function(){var e=this;this.status.repeated?this.$store.dispatch("unretweet",{id:this.status.id}):this.$store.dispatch("retweet",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(549);var Xe=ge()(Ke,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",qe,["private"!==e.visibility&&"direct"!==e.visibility&&e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.repeated&&"-repeated"]),title:e.$t("tool_tip.repeat"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.retweet(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",spin:e.animated},null,8,["spin"])],10,Je)):e.loggedIn?(Object(r.D)(),Object(r.j)("span",We,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"lock",title:e.$t("timeline.no_retweet_hint")},null,8,["title"])])):(Object(r.D)(),Object(r.j)("span",Ye,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.repeat_num>0?(Object(r.D)(),Object(r.j)("span",Ge,Object(r.O)(e.status.repeat_num),1)):Object(r.i)("",!0)])}]]);const Ze={class:"dropdown-menu"},Qe=["onClick"],et=["onClick"],tt=["onClick"],nt=["onClick"],rt=["onClick"],it=["onClick"],ot=["href"],st=["onClick"],at={class:"button-unstyled popover-trigger"};me.c.add(fe.w,fe.j,Ce.a,fe.C,fe.qb,fe.fb,fe.A,Ce.b);var ct={props:["status"],components:{Popover:Be.default},methods:{deleteStatus:function(){window.confirm(this.$t("status.delete_confirm"))&&this.$store.dispatch("deleteStatus",{id:this.status.id})},pinStatus:function(){var e=this;this.$store.dispatch("pinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unpinStatus:function(){var e=this;this.$store.dispatch("unpinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},muteConversation:function(){var e=this;this.$store.dispatch("muteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unmuteConversation:function(){var e=this;this.$store.dispatch("unmuteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},copyLink:function(){var e=this;navigator.clipboard.writeText(this.statusLink).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},bookmarkStatus:function(){var e=this;this.$store.dispatch("bookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unbookmarkStatus:function(){var e=this;this.$store.dispatch("unbookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},reportStatus:function(){this.$store.dispatch("openUserReportingModal",{userId:this.status.user.id,statusIds:[this.status.id]})}},computed:{currentUser:function(){return this.$store.state.users.currentUser},canDelete:function(){if(this.currentUser)return this.currentUser.rights.moderator||this.currentUser.rights.admin||this.status.user.id===this.currentUser.id},ownStatus:function(){return this.status.user.id===this.currentUser.id},canPin:function(){return this.ownStatus&&("public"===this.status.visibility||"unlisted"===this.status.visibility)},canMute:function(){return!!this.currentUser},statusLink:function(){return"".concat(this.$store.state.instance.server).concat(this.$router.resolve({name:"conversation",params:{id:this.status.id}}).href)}}};n(550);var lt=ge()(ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{class:"ExtraButtons",trigger:"click",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Ze,[e.canMute&&!e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.muteConversation&&e.muteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.mute_conversation")),1)])):Object(r.i)("",!0),e.canMute&&e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.unmuteConversation&&e.unmuteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unmute_conversation")),1)])):Object(r.i)("",!0),!e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[2]||(t[2]=Object(r.Y)((...t)=>e.pinStatus&&e.pinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.pin")),1)],8,Qe)):Object(r.i)("",!0),e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(r.Y)((...t)=>e.unpinStatus&&e.unpinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unpin")),1)],8,et)):Object(r.i)("",!0),e.status.bookmarked?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(r.Y)((...t)=>e.bookmarkStatus&&e.bookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","bookmark"]}),Object(r.k)("span",null,Object(r.O)(e.$t("status.bookmark")),1)],8,tt)),e.status.bookmarked?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(r.Y)((...t)=>e.unbookmarkStatus&&e.unbookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"bookmark"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unbookmark")),1)],8,nt)):Object(r.i)("",!0),e.canDelete?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[6]||(t[6]=Object(r.Y)((...t)=>e.deleteStatus&&e.deleteStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"times"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.delete")),1)],8,rt)):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[7]||(t[7]=Object(r.Y)((...t)=>e.copyLink&&e.copyLink(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"share-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.copy_link")),1)],8,it),e.status.is_local?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:7,class:"button-default dropdown-item dropdown-item-icon",title:"Source",href:e.status.external_url,target:"_blank"},[Object(r.m)(a,{"fixed-width":"",icon:"external-link-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.external_source")),1)],8,ot)),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[8]||(t[8]=Object(r.Y)((...t)=>e.reportStatus&&e.reportStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","flag"]}),Object(r.k)("span",null,Object(r.O)(e.$t("user_card.report")),1)],8,st)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",at,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"ellipsis-h"})])]),_:1})}]]),ut=n(57),dt=n(35),pt=n(22),ht=n(144),bt=n(59),mt=n(45),ft=n(25);const Ot={key:1,class:"status-preview-no-content faint"},jt={key:2,class:"status-preview-no-content"};var gt=n(30),vt=n.n(gt);me.c.add(fe.r);var yt={name:"StatusPopover",props:["statusId"],data:function(){return{error:!1}},computed:{status:function(){return vt()(this.$store.state.statuses.allStatuses,{id:this.statusId})}},components:{Status:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,34))})),Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))}))},methods:{enter:function(){var e=this;if(!this.status){if(!this.statusId)return void(this.error=!0);this.$store.dispatch("fetchStatus",this.statusId).then((function(t){return e.error=!1})).catch((function(t){return e.error=!0}))}}}};n(552);var wt=ge()(yt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("FAIcon"),l=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(l,{trigger:"hover","popover-class":"popover-default status-popover","bound-to":{x:"container"},onShow:e.enter},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[e.status?(Object(r.D)(),Object(r.h)(a,{key:0,"is-preview":!0,statusoid:e.status,compact:!0},null,8,["statusoid"])):e.error?(Object(r.D)(),Object(r.j)("div",Ot,Object(r.O)(e.$t("status.status_unavailable")),1)):(Object(r.D)(),Object(r.j)("div",jt,[Object(r.m)(c,{icon:"circle-notch",spin:"",size:"2x"})]))]),_:3},8,["onShow"])}]]);const kt={class:"user-list-popover"},_t={class:"user-list-names"},St={class:"user-list-screen-name"};me.c.add(fe.r);var Ct={name:"UserListPopover",props:["users"],components:{RichContent:ft.a,Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))})),UserAvatar:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,22))}))},computed:{usersCapped:function(){return this.users.slice(0,16)}}};n(553);var Pt=ge()(Ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserAvatar"),c=Object(r.J)("RichContent"),l=Object(r.J)("FAIcon"),u=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(u,{trigger:"hover",placement:"top",offset:{y:5}},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[Object(r.k)("div",kt,[e.users.length?(Object(r.D)(!0),Object(r.j)(r.a,{key:0},Object(r.H)(e.usersCapped,e=>(Object(r.D)(),Object(r.j)("div",{key:e.id,class:"user-list-row"},[Object(r.m)(a,{user:e,class:"avatar-small",compact:!0},null,8,["user"]),Object(r.k)("div",_t,[Object(r.m)(c,{class:"username",title:"@"+e.screen_name_ui,html:e.name_html,emoji:e.emoji},null,8,["title","html","emoji"]),Object(r.k)("span",St,Object(r.O)(e.screen_name_ui),1)])]))),128)):(Object(r.D)(),Object(r.h)(l,{key:1,icon:"circle-notch",spin:"",size:"3x"}))])]),_:3})}]]);const xt={class:"emoji-reactions"},Dt=["onClick"],Tt={key:0},It=["src","title"],$t={key:1},zt={class:"reaction-emoji unicode-emoji"};var Mt={name:"EmojiReactions",components:{UserAvatar:pt.default,UserListPopover:Pt},props:["status"],data:function(){return{showAll:!1}},computed:{tooManyReactions:function(){return this.status.emoji_reactions.length>12},emojiReactions:function(){return this.showAll?this.status.emoji_reactions:this.status.emoji_reactions.slice(0,12)},showMoreString:function(){return"+".concat(this.status.emoji_reactions.length-12)},accountsForEmoji:function(){return this.status.emoji_reactions.reduce((function(e,t){return e[t.name]=t.accounts||[],e}),{})},loggedIn:function(){return!!this.$store.state.users.currentUser}},methods:{toggleShowAll:function(){this.showAll=!this.showAll},reactedWith:function(e){return this.status.emoji_reactions.find((function(t){return t.name===e})).me},fetchEmojiReactionsByIfMissing:function(){this.status.emoji_reactions.find((function(e){return!e.accounts}))&&this.$store.dispatch("fetchEmojiReactionsBy",this.status.id)},reactWith:function(e){this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:e})},unreact:function(e){this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:e})},emojiOnClick:function(e,t){this.loggedIn&&(this.reactedWith(e)?this.unreact(e):this.reactWith(e))}}};n(554);var Ut=ge()(Mt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserListPopover");return Object(r.D)(),Object(r.j)("div",xt,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojiReactions,n=>(Object(r.D)(),Object(r.h)(a,{key:n.name,users:e.accountsForEmoji[n.name]},{default:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["emoji-reaction btn button-default",{"picked-reaction":e.reactedWith(n.name),"not-clickable":!e.loggedIn}]),onClick:t=>e.emojiOnClick(n.name,t),onMouseenter:t[0]||(t[0]=t=>e.fetchEmojiReactionsByIfMissing())},[null!==n.url?(Object(r.D)(),Object(r.j)("span",Tt,[Object(r.k)("img",{src:n.url,title:n.name,class:"reaction-emoji",width:"2.55em"},null,8,It),Object(r.l)(" "+Object(r.O)(n.count),1)])):(Object(r.D)(),Object(r.j)("span",$t,[Object(r.k)("span",zt,Object(r.O)(n.name),1),Object(r.k)("span",null,Object(r.O)(n.count),1)]))],42,Dt)]),_:2},1032,["users"]))),128)),e.tooManyReactions?(Object(r.D)(),Object(r.j)("a",{key:0,class:"emoji-reaction-expand faint",href:"javascript:void(0)",onClick:t[1]||(t[1]=(...t)=>e.toggleShowAll&&e.toggleShowAll(...t))},Object(r.O)(e.showAll?e.$t("general.show_less"):e.showMoreString),1)):Object(r.i)("",!0)])}]]),Ft=n(81),Et=n(79),Lt=n(23),Rt=n(31),At=n(126);function Nt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nt(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}me.c.add(fe.y,fe.I,fe.O,fe.P,fe.rb,fe.Z,fe.Y,fe.W,fe.jb,fe.ib,fe.w,fe.C,fe.B,fe.qb,fe.q,fe.n,fe.e);var Vt,Ht=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},qt=function(e,t,n){var r=Ht(t),i="controlledSet".concat(r),o="uncontrolled".concat(r);e[i]?e[i](n):e[o]=n},Jt={name:"Status",components:{ReplyButton:ve,FavoriteButton:De,ReactButton:He,RetweetButton:Xe,ExtraButtons:lt,PostStatusForm:ut.a,UserCard:dt.a,UserAvatar:pt.default,AvatarList:ht.a,Timeago:bt.a,StatusPopover:wt,UserListPopover:Pt,EmojiReactions:Ut,StatusContent:mt.a,RichContent:ft.a,MentionLink:Et.a,MentionsLine:Ft.b},props:["statusoid","expandable","inConversation","focused","highlight","compact","replies","isPreview","noHeading","inlineExpanded","showPinned","inProfile","profileUserId","simpleTree","controlledThreadDisplayStatus","controlledToggleThreadDisplay","showOtherRepliesAsButton","controlledShowingTall","controlledToggleShowingTall","controlledExpandingSubject","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject","controlledReplying","controlledToggleReplying","controlledMediaPlaying","controlledSetMediaPlaying","dive"],data:function(){return{uncontrolledReplying:!1,unmuted:!1,userExpanded:!1,uncontrolledMediaPlaying:[],suspendable:!0,error:null,headTailLinks:null}},computed:Bt(Bt({},(Vt=["replying","mediaPlaying"],Vt.reduce((function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{muteWords:function(){return this.mergedConfig.muteWords},showReasonMutedThread:function(){return(this.status.thread_muted||this.status.reblog&&this.status.reblog.thread_muted)&&!this.inConversation},repeaterClass:function(){var e=this.statusoid.user;return Object(Rt.a)(e)},userClass:function(){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user;return Object(Rt.a)(e)},deleted:function(){return this.statusoid.deleted},repeaterStyle:function(){var e=this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])},userStyle:function(){if(!this.noHeading){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])}},userProfileLink:function(){return this.generateUserProfileLink(this.status.user.id,this.status.user.screen_name)},replyProfileLink:function(){if(this.isReply){var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e?e.statusnet_profile_url:"NOT_FOUND"}},retweet:function(){return!!this.statusoid.retweeted_status},retweeterUser:function(){return this.statusoid.user},retweeter:function(){return this.statusoid.user.name||this.statusoid.user.screen_name_ui},retweeterHtml:function(){return this.statusoid.user.name},retweeterProfileLink:function(){return this.generateUserProfileLink(this.statusoid.user.id,this.statusoid.user.screen_name)},status:function(){return this.retweet?this.statusoid.retweeted_status:this.statusoid},statusFromGlobalRepository:function(){return this.$store.state.statuses.allStatusesObject[this.status.id]},loggedIn:function(){return!!this.currentUser},muteWordHits:function(){return Object(At.a)(this.status,this.muteWords)},rtBotStatus:function(){return this.statusoid.user.bot},botStatus:function(){return this.status.user.bot},botIndicator:function(){return this.botStatus&&!this.hideBotIndication},rtBotIndicator:function(){return this.rtBotStatus&&!this.hideBotIndication},mentionsLine:function(){var e=this;if(!this.headTailLinks)return[];var t=new Set(this.headTailLinks.writtenMentions.map((function(e){return e.url})));return this.status.attentions.filter((function(n){return n.id!==e.status.in_reply_to_user_id&&n.statusnet_profile_url!==e.status.user.statusnet_profile_url&&!t.has(n.statusnet_profile_url)})).map((function(e){return{url:e.statusnet_profile_url,content:e.screen_name,userId:e.id}}))},hasMentionsLine:function(){return this.mentionsLine.length>0},muted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.userIsMuted||status.thread_muted||this.muteWordHits.length>0||this.muteBotStatuses&&this.botStatus&&!this.compact;return!this.unmuted&&!this.shouldNotMute&&e},userIsMuted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.status,t=e.reblog,n=this.$store.getters.relationship(e.user.id),r=t&&this.$store.getters.relationship(t.user.id);return e.muted||t&&t.muted||n.muting||r&&r.muting},shouldNotMute:function(){var e=this.status,t=e.reblog;return(this.inProfile&&(!t&&e.user.id===this.profileUserId||t&&t.user.id===this.profileUserId)||this.inConversation&&e.thread_muted)&&!this.muteWordHits.length>0},hideMutedUsers:function(){return this.mergedConfig.hideMutedPosts},hideMutedThreads:function(){return this.mergedConfig.hideMutedThreads},hideFilteredStatuses:function(){return this.mergedConfig.hideFilteredStatuses},hideWordFilteredPosts:function(){return this.mergedConfig.hideWordFilteredPosts},hideStatus:function(){return!this.shouldNotMute&&(this.muted&&this.hideFilteredStatuses||this.userIsMuted&&this.hideMutedUsers||this.status.thread_muted&&this.hideMutedThreads||this.muteWordHits.length>0&&this.hideWordFilteredPosts)},isFocused:function(){return!!this.focused||!!this.inConversation&&this.status.id===this.highlight},isReply:function(){return!(!this.status.in_reply_to_status_id||!this.status.in_reply_to_user_id)},replyToName:function(){if(this.status.in_reply_to_screen_name)return this.status.in_reply_to_screen_name;var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e&&e.screen_name_ui},replySubject:function(){if(!this.status.summary)return"";var e=ue()(this.status.summary),t=this.mergedConfig.subjectLineBehavior,n=e.match(/^re[: ]/i);return"noop"!==t&&n||"masto"===t?e:"email"===t?"re: ".concat(e):"noop"===t?"":void 0},combinedFavsAndRepeatsUsers:function(){var e=[].concat(this.statusFromGlobalRepository.favoritedBy,this.statusFromGlobalRepository.rebloggedBy);return ce()(e,"id")},tags:function(){return this.status.tags.filter((function(e){return e.hasOwnProperty("name")})).map((function(e){return e.name})).join(" ")},hidePostStats:function(){return this.mergedConfig.hidePostStats},muteBotStatuses:function(){return this.mergedConfig.muteBotStatuses},hideBotIndication:function(){return this.mergedConfig.hideBotIndication},currentUser:function(){return this.$store.state.users.currentUser},betterShadow:function(){return this.$store.state.interface.browserSupport.cssFilter},mergedConfig:function(){return this.$store.getters.mergedConfig},isSuspendable:function(){return!this.replying&&0===this.mediaPlaying.length},inThreadForest:function(){return!!this.controlledThreadDisplayStatus},threadShowing:function(){return"showing"===this.controlledThreadDisplayStatus},visibilityLocalized:function(){return this.$i18n.t("general.scope_in_timeline."+this.status.visibility)}}),methods:{visibilityIcon:function(e){switch(e){case"private":return"lock";case"unlisted":return"lock-open";case"direct":return"envelope";case"local":return"users";default:return"globe"}},showError:function(e){this.error=e},clearError:function(){this.error=void 0},toggleReplying:function(){!function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]}(this,"replying")},gotoOriginal:function(e){this.inConversation&&this.$emit("goto",e)},toggleExpanded:function(){this.$emit("toggleExpanded")},toggleMute:function(){this.unmuted=!this.unmuted},toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e,t){return Object(Lt.a)(e,t,this.$store.state.instance.restrictedNicknames)},addMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.concat(e))},removeMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.filter((function(t){return t!==e})))},setHeadTailLinks:function(e){this.headTailLinks=e},toggleThreadDisplay:function(){this.controlledToggleThreadDisplay()},scrollIfHighlighted:function(e){var t=e;if(this.status.id===t){var n=this.$el.getBoundingClientRect();n.top<100||n.height>=window.innerHeight-50?window.scrollBy(0,n.top-100):n.bottom>window.innerHeight-50&&window.scrollBy(0,n.bottom-window.innerHeight+50)}}},watch:{highlight:function(e){this.scrollIfHighlighted(e)},"status.repeat_num":function(e){this.isFocused&&this.statusFromGlobalRepository.rebloggedBy&&this.statusFromGlobalRepository.rebloggedBy.length!==e&&this.$store.dispatch("fetchRepeats",this.status.id)},"status.fave_num":function(e){this.isFocused&&this.statusFromGlobalRepository.favoritedBy&&this.statusFromGlobalRepository.favoritedBy.length!==e&&this.$store.dispatch("fetchFavs",this.status.id)},isSuspendable:function(e){this.suspendable=e}}};n(555);const Wt=ge()(Jt,[["render",function(e,t,n,oe,se,ae){const ce=Object(r.J)("FAIcon"),le=Object(r.J)("router-link"),ue=Object(r.J)("UserAvatar"),de=Object(r.J)("RichContent"),pe=Object(r.J)("UserCard"),he=Object(r.J)("Timeago"),be=Object(r.J)("StatusPopover"),me=Object(r.J)("MentionLink"),fe=Object(r.J)("MentionsLine"),Oe=Object(r.J)("StatusContent"),je=Object(r.J)("UserListPopover"),ge=Object(r.J)("AvatarList"),ve=Object(r.J)("EmojiReactions"),ye=Object(r.J)("reply-button"),we=Object(r.J)("retweet-button"),ke=Object(r.J)("favorite-button"),_e=Object(r.J)("ReactButton"),Se=Object(r.J)("extra-buttons"),Ce=Object(r.J)("PostStatusForm");return e.hideStatus?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"root",class:Object(r.w)(["Status",[{"-focused":e.isFocused},{"-conversation":e.inlineExpanded}]])},[e.error?(Object(r.D)(),Object(r.j)("div",i,[Object(r.l)(Object(r.O)(e.error)+" ",1),Object(r.k)("span",{class:"fa-scale-110 fa-old-padding",onClick:t[0]||(t[0]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(ce,{icon:"times"})])])):Object(r.i)("",!0),e.muted&&!e.isPreview?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("small",s,[e.muted&&e.retweet?(Object(r.D)(),Object(r.h)(ce,{key:0,class:"fa-scale-110 fa-old-padding repeat-icon",icon:"retweet"})):Object(r.i)("",!0),Object(r.m)(le,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["to"])]),e.showReasonMutedThread?(Object(r.D)(),Object(r.j)("small",a,Object(r.O)(e.$t("status.thread_muted")),1)):Object(r.i)("",!0),e.showReasonMutedThread&&e.muteWordHits.length>0?(Object(r.D)(),Object(r.j)("small",c,Object(r.O)(e.$t("status.thread_muted_and_words")),1)):Object(r.i)("",!0),Object(r.k)("small",{class:"mute-words",title:e.muteWordHits.join(", ")},Object(r.O)(e.muteWordHits.join(", ")),9,l),Object(r.k)("button",{class:"unmute button-unstyled",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{icon:"eye-slash",class:"fa-scale-110 fa-old-padding"})])])):(Object(r.D)(),Object(r.j)(r.a,{key:2},[e.showPinned?(Object(r.D)(),Object(r.j)("div",u,[Object(r.m)(ce,{icon:"thumbtack",class:"faint"}),Object(r.k)("span",d,Object(r.O)(e.$t("status.pinned")),1)])):Object(r.i)("",!0),!e.retweet||e.noHeading||e.inConversation?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)([[e.repeaterClass,{highlighted:e.repeaterStyle}],"status-container repeat-info"]),style:Object(r.x)([e.repeaterStyle])},[e.retweet?(Object(r.D)(),Object(r.h)(ue,{key:0,class:"left-side repeater-avatar",bot:e.rtBotIndicator,"better-shadow":e.betterShadow,user:e.statusoid.user},null,8,["bot","better-shadow","user"])):Object(r.i)("",!0),Object(r.k)("div",p,[Object(r.k)("span",{class:"status-username repeater-name",title:e.retweeter},[e.retweeterHtml?(Object(r.D)(),Object(r.h)(le,{key:0,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.m)(de,{html:e.retweeterHtml,emoji:e.retweeterUser.emoji},null,8,["html","emoji"])]),_:1},8,["to"])):(Object(r.D)(),Object(r.h)(le,{key:1,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.retweeter),1)]),_:1},8,["to"]))],8,h),b,Object(r.m)(ce,{icon:"retweet",class:"repeat-icon",title:e.$t("tool_tip.repeat")},null,8,["title"]),Object(r.l)(" "+Object(r.O)(e.$t("timeline.repeated")),1)])],6)),e.deleted?(Object(r.D)(),Object(r.j)("div",ee,[Object(r.k)("div",te,[Object(r.m)(ue,{class:"post-avatar",compact:e.compact,bot:e.botIndicator},null,8,["compact","bot"])]),Object(r.k)("div",ne,[Object(r.k)("div",re,Object(r.O)(e.$t("status.status_deleted")),1),e.replying?(Object(r.D)(),Object(r.h)(ye,{key:0,replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"])):Object(r.i)("",!0)])])):(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)([[e.userClass,{highlighted:e.userStyle,"-repeat":e.retweet&&!e.inConversation}],"status-container"]),style:Object(r.x)([e.userStyle]),"data-tags":e.tags},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",f,[Object(r.k)("a",{href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(ue,{class:"post-avatar",bot:e.botIndicator,compact:e.compact,"better-shadow":e.betterShadow,user:e.status.user},null,8,["bot","compact","better-shadow","user"])],40,O)])),Object(r.k)("div",j,[e.userExpanded?(Object(r.D)(),Object(r.h)(pe,{key:0,"user-id":e.status.user.id,rounded:!0,bordered:!0,class:"usercard"},null,8,["user-id"])):Object(r.i)("",!0),e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.k)("div",v,[Object(r.k)("div",y,[e.status.user.name_html?(Object(r.D)(),Object(r.j)("h4",{key:0,class:"status-username",title:e.status.user.name},[Object(r.m)(de,{html:e.status.user.name,emoji:e.status.user.emoji},null,8,["html","emoji"])],8,w)):(Object(r.D)(),Object(r.j)("h4",{key:1,class:"status-username",title:e.status.user.name},Object(r.O)(e.status.user.name),9,k)),Object(r.m)(le,{class:"account-name",title:e.status.user.screen_name_ui,to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.status.user&&e.status.user.favicon?(Object(r.D)(),Object(r.j)("img",{key:2,class:"status-favicon",src:e.status.user.favicon},null,8,_)):Object(r.i)("",!0)]),Object(r.k)("span",S,[Object(r.m)(le,{class:"timeago faint-link",to:{name:"conversation",params:{id:e.status.id}}},{default:Object(r.V)(()=>[Object(r.m)(he,{time:e.status.created_at,"auto-update":60},null,8,["time"])]),_:1},8,["to"]),e.status.visibility?(Object(r.D)(),Object(r.j)("span",{key:0,class:"visibility-icon",title:e.visibilityLocalized},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.visibilityIcon(e.status.visibility)},null,8,["icon"])],8,C)):Object(r.i)("",!0),e.expandable&&!e.isPreview?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled",title:e.$t("status.expand"),onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"plus-square"})],8,P)):Object(r.i)("",!0),e.unmuted?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",icon:"eye-slash",class:"fa-scale-110"})])):Object(r.i)("",!0),e.inThreadForest&&e.replies&&e.replies.length&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled",title:e.threadShowing?e.$t("status.thread_hide"):e.$t("status.thread_show"),"aria-expanded":e.threadShowing?"true":"false",onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleThreadDisplay&&e.toggleThreadDisplay(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.threadShowing?"chevron-up":"chevron-down"},null,8,["icon"])],8,x)):Object(r.i)("",!0),e.dive&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled",title:e.$t("status.show_only_conversation_under_this"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"angle-double-right"})],8,D)):Object(r.i)("",!0)])]),e.isReply||e.hasMentionsLine?(Object(r.D)(),Object(r.j)("div",T,[e.isReply?(Object(r.D)(),Object(r.j)("span",I,[e.isPreview?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("span",F,Object(r.O)(e.$t("status.reply_to")),1)])):(Object(r.D)(),Object(r.h)(be,{key:0,"status-id":e.status.parent_visible&&e.status.in_reply_to_status_id,class:Object(r.w)(["reply-to-popover",{"-strikethrough":!e.status.parent_visible}]),style:{"min-width":"0"}},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled reply-to","aria-label":e.$t("tool_tip.reply"),onClick:t[7]||(t[7]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.m)(ce,{class:"fa-scale-110 fa-old-padding",icon:"reply",flip:"horizontal"}),z,Object(r.k)("span",M,Object(r.O)(e.$t("status.reply_to")),1)],8,$)]),_:1},8,["status-id","class"])),Object(r.m)(me,{content:e.replyToName,url:e.replyProfileLink,"user-id":e.status.in_reply_to_user_id,"user-screen-name":e.status.in_reply_to_screen_name},null,8,["content","url","user-id","user-screen-name"])])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.j)("span",E,[Object(r.k)("span",{class:"mentions","aria-label":e.$t("tool_tip.mentions"),onClick:t[8]||(t[8]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.k)("span",R,Object(r.O)(e.$t("status.mentions")),1)],8,L),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:0,mentions:e.mentionsLine.slice(0,1),class:"mentions-line-first"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:2,mentions:e.mentionsLine.slice(1),class:"mentions-line"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0)])),Object(r.m)(Oe,{ref:"content",status:e.status,"no-heading":e.noHeading,highlight:e.highlight,focused:e.isFocused,"controlled-showing-tall":e.controlledShowingTall,"controlled-expanding-subject":e.controlledExpandingSubject,"controlled-showing-long-subject":e.controlledShowingLongSubject,"controlled-toggle-showing-tall":e.controlledToggleShowingTall,"controlled-toggle-expanding-subject":e.controlledToggleExpandingSubject,"controlled-toggle-showing-long-subject":e.controlledToggleShowingLongSubject,onMediaplay:t[9]||(t[9]=t=>e.addMediaPlaying(t)),onMediapause:t[10]||(t[10]=t=>e.removeMediaPlaying(t)),onParseReady:e.setHeadTailLinks},null,8,["status","no-heading","highlight","focused","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","onParseReady"]),e.inConversation&&!e.isPreview&&e.replies&&e.replies.length?(Object(r.D)(),Object(r.j)("div",A,[e.showOtherRepliesAsButton&&e.replies.length>1?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled -link faint",title:e.$tc("status.ancestor_follow",e.replies.length-1,{numReplies:e.replies.length-1}),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},Object(r.O)(e.$tc("status.replies_list_with_others",e.replies.length-1,{numReplies:e.replies.length-1})),9,N)):(Object(r.D)(),Object(r.j)("span",B,Object(r.O)(e.$t("status.replies_list")),1)),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.replies,t=>(Object(r.D)(),Object(r.h)(be,{key:t.id,"status-id":t.id},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link reply-link",onClick:Object(r.Y)(n=>e.gotoOriginal(t.id),["prevent"])},Object(r.O)(t.name),9,V)]),_:2},1032,["status-id"]))),128))])):Object(r.i)("",!0),Object(r.m)(r.e,{name:"fade"},{default:Object(r.V)(()=>[!e.hidePostStats&&e.isFocused&&e.combinedFavsAndRepeatsUsers.length>0?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("div",q,[e.statusFromGlobalRepository.rebloggedBy&&e.statusFromGlobalRepository.rebloggedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:0,users:e.statusFromGlobalRepository.rebloggedBy},{default:Object(r.V)(()=>[Object(r.k)("div",J,[Object(r.k)("a",W,Object(r.O)(e.$t("status.repeats")),1),Object(r.k)("div",Y,Object(r.O)(e.statusFromGlobalRepository.rebloggedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),e.statusFromGlobalRepository.favoritedBy&&e.statusFromGlobalRepository.favoritedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:1,users:e.statusFromGlobalRepository.favoritedBy},{default:Object(r.V)(()=>[Object(r.k)("div",G,[Object(r.k)("a",K,Object(r.O)(e.$t("status.favorites")),1),Object(r.k)("div",X,Object(r.O)(e.statusFromGlobalRepository.favoritedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),Object(r.k)("div",Z,[Object(r.m)(ge,{users:e.combinedFavsAndRepeatsUsers},null,8,["users"])])])])):Object(r.i)("",!0)]),_:1}),!e.mergedConfig.emojiReactionsOnTimeline&&!e.isFocused||e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(ve,{key:3,status:e.status},null,8,["status"])),e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",Q,[Object(r.m)(ye,{replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"]),Object(r.m)(we,{visibility:e.status.visibility,"logged-in":e.loggedIn,status:e.status},null,8,["visibility","logged-in","status"]),Object(r.m)(ke,{"logged-in":e.loggedIn,status:e.status},null,8,["logged-in","status"]),e.loggedIn?(Object(r.D)(),Object(r.h)(_e,{key:0,status:e.status},null,8,["status"])):Object(r.i)("",!0),Object(r.m)(Se,{status:e.status,onOnError:e.showError,onOnSuccess:e.clearError},null,8,["status","onOnError","onOnSuccess"])]))])],14,m)),e.replying?(Object(r.D)(),Object(r.j)("div",ie,[Object(r.m)(Ce,{class:"reply-body","reply-to":e.status.id,attentions:e.status.attentions,"replied-user":e.status.user,"copy-message-scope":e.status.visibility,subject:e.replySubject,onPosted:e.toggleReplying},null,8,["reply-to","attentions","replied-user","copy-message-scope","subject","onPosted"])])):Object(r.i)("",!0)],64))],2))}]]);t.default=Wt},function(e,t,n){"use strict";var r=n(0);const i={class:"panel-heading -flexible-height"},o={class:"user-info"},s={class:"container"},a={class:"user-info-avatar-link-overlay"},c={class:"user-summary"},l={class:"top-line"},u=["href"],d={class:"bottom-line"},p={key:0,class:"alert user-role"},h={key:1,class:"alert user-role"},b={key:2,class:"alert user-role"},m={key:1},f={key:2,class:"dailyAvg"},O={class:"user-meta"},j={key:0,class:"following"},g={key:1,class:"highlighter"},v=["id"],y=["id"],w=Object(r.l)(" "+Object(r.O)(" ")+" "),k={value:"disabled"},_={value:"solid"},S={value:"striped"},C={value:"side"},P={key:0,class:"user-interactions"},x={class:"btn-group"},D=["disabled"],T=["disabled"],I=["disabled"],$={key:1,class:"user-interactions"},z={key:0,class:"panel-body"},M={key:0,class:"user-counts"},U=Object(r.k)("br",null,null,-1);var F=n(5),E=n.n(F),L=n(22),R=n(143),A=n(104),N=n(140);const B={class:"dropdown-menu"},V={key:0},H=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),q={key:1,role:"separator",class:"dropdown-divider"},J={key:2};var W=n(6),Y=n(3);const G={class:"panel-heading dialog-modal-heading"},K={class:"title"},X={class:"dialog-modal-content"},Z={class:"dialog-modal-footer user-interactions panel-footer"};var Q={props:{darkOverlay:{default:!0,type:Boolean},onCancel:{default:function(){},type:Function}}},ee=(n(526),n(4)),te=n.n(ee);var ne=te()(Q,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)({"dark-overlay":e.darkOverlay}),onClick:t[1]||(t[1]=Object(r.Y)(t=>e.onCancel(),["self","stop"]))},[Object(r.k)("div",{class:"dialog-modal panel panel-default",onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["stop"]))},[Object(r.k)("div",G,[Object(r.k)("div",K,[Object(r.I)(e.$slots,"header")])]),Object(r.k)("div",X,[Object(r.I)(e.$slots,"default")]),Object(r.k)("div",Z,[Object(r.I)(e.$slots,"footer")])])],2)}]]),re=n(24);W.c.add(Y.n);var ie={props:["user"],data:function(){return{tags:{FORCE_NSFW:"mrf_tag:media-force-nsfw",STRIP_MEDIA:"mrf_tag:media-strip",FORCE_UNLISTED:"mrf_tag:force-unlisted",DISABLE_REMOTE_SUBSCRIPTION:"mrf_tag:disable-remote-subscription",DISABLE_ANY_SUBSCRIPTION:"mrf_tag:disable-any-subscription",SANDBOX:"mrf_tag:sandbox",QUARANTINE:"mrf_tag:quarantine"},showDeleteUserDialog:!1,toggled:!1}},components:{DialogModal:ne,Popover:re.default},computed:{tagsSet:function(){return new Set(this.user.tags)},hasTagPolicy:function(){return this.$store.state.instance.tagPolicyAvailable}},methods:{hasTag:function(e){return this.tagsSet.has(e)},toggleTag:function(e){var t=this,n=this.$store;this.tagsSet.has(e)?n.state.api.backendInteractor.untagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("untagUser",{user:t.user,tag:e})})):n.state.api.backendInteractor.tagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("tagUser",{user:t.user,tag:e})}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,r=n.id,i=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var o="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===i||e.$route.params.id===r;o&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}};n(528);var oe=te()(ie,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover"),l=Object(r.J)("DialogModal");return Object(r.D)(),Object(r.j)("div",null,[Object(r.m)(c,{trigger:"click",class:"moderation-tools-popover",placement:"bottom",offset:{y:5},onShow:t[11]||(t[11]=t=>e.setToggled(!0)),onClose:t[12]||(t[12]=t=>e.setToggled(!1))},{content:Object(r.V)(()=>[Object(r.k)("div",B,[e.user.is_local?(Object(r.D)(),Object(r.j)("span",V,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.toggleRight("admin"))},Object(r.O)(e.$t(e.user.rights.admin?"user_card.admin_menu.revoke_admin":"user_card.admin_menu.grant_admin")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.toggleRight("moderator"))},Object(r.O)(e.$t(e.user.rights.moderator?"user_card.admin_menu.revoke_moderator":"user_card.admin_menu.grant_moderator")),1),H])):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.toggleActivationStatus())},Object(r.O)(e.$t(e.user.deactivated?"user_card.admin_menu.activate_account":"user_card.admin_menu.deactivate_account")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.deleteUserDialog(!0))},Object(r.O)(e.$t("user_card.admin_menu.delete_account")),1),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("div",q)):Object(r.i)("",!0),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("span",J,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.toggleTag(e.tags.FORCE_NSFW))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_NSFW)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_nsfw")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.toggleTag(e.tags.STRIP_MEDIA))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.STRIP_MEDIA)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.strip_media")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=t=>e.toggleTag(e.tags.FORCE_UNLISTED))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_UNLISTED)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_unlisted")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[7]||(t[7]=t=>e.toggleTag(e.tags.SANDBOX))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.SANDBOX)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.sandbox")),1)]),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item",onClick:t[8]||(t[8]=t=>e.toggleTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_remote_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item",onClick:t[9]||(t[9]=t=>e.toggleTag(e.tags.DISABLE_ANY_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_ANY_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_any_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item",onClick:t[10]||(t[10]=t=>e.toggleTag(e.tags.QUARANTINE))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.QUARANTINE)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.quarantine")),1)])):Object(r.i)("",!0)])):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["btn button-default btn-block moderation-tools-button",{toggled:e.toggled}])},[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.moderation"))+" ",1),Object(r.m)(a,{icon:"chevron-down"})],2)]),_:1}),(Object(r.D)(),Object(r.h)(r.c,{to:"#modal"},[e.showDeleteUserDialog?(Object(r.D)(),Object(r.h)(l,{key:0,"on-cancel":e.deleteUserDialog.bind(this,!1)},{header:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),footer:Object(r.V)(()=>[Object(r.k)("button",{class:"btn button-default",onClick:t[13]||(t[13]=t=>e.deleteUserDialog(!1))},Object(r.O)(e.$t("general.cancel")),1),Object(r.k)("button",{class:"btn button-default danger",onClick:t[14]||(t[14]=t=>e.deleteUser())},Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),default:Object(r.V)(()=>[Object(r.k)("p",null,Object(r.O)(e.$t("user_card.admin_menu.delete_user_confirmation")),1)]),_:1},8,["on-cancel"])):Object(r.i)("",!0)]))])}]]);const se={class:"AccountActions"},ae={class:"dropdown-menu"},ce=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),le={class:"button-unstyled ellipsis-button"};var ue=n(8);function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}W.c.add(Y.x);var pe={props:["user","relationship"],data:function(){return{}},components:{ProgressButton:A.a,Popover:re.default},methods:{showRepeats:function(){this.$store.dispatch("showReblogs",this.user.id)},hideRepeats:function(){this.$store.dispatch("hideReblogs",this.user.id)},blockUser:function(){this.$store.dispatch("blockUser",this.user.id)},unblockUser:function(){this.$store.dispatch("unblockUser",this.user.id)},reportUser:function(){this.$store.dispatch("openUserReportingModal",{userId:this.user.id})},openChat:function(){this.$router.push({name:"chat",params:{username:this.$store.state.users.currentUser.screen_name,recipient_id:this.user.id}})}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?de(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):de(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(ue.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}}))};n(529);var he=te()(pe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.j)("div",se,[Object(r.m)(c,{trigger:"click",placement:"bottom","bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(()=>[Object(r.k)("div",ae,[e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.showing_reblogs?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default dropdown-item",onClick:t[0]||(t[0]=(...t)=>e.hideRepeats&&e.hideRepeats(...t))},Object(r.O)(e.$t("user_card.hide_repeats")),1)):Object(r.i)("",!0),e.relationship.showing_reblogs?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default dropdown-item",onClick:t[1]||(t[1]=(...t)=>e.showRepeats&&e.showRepeats(...t))},Object(r.O)(e.$t("user_card.show_repeats")),1)),ce],64)):Object(r.i)("",!0),e.relationship.blocking?(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block dropdown-item",onClick:t[2]||(t[2]=(...t)=>e.unblockUser&&e.unblockUser(...t))},Object(r.O)(e.$t("user_card.unblock")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,class:"btn button-default btn-block dropdown-item",onClick:t[3]||(t[3]=(...t)=>e.blockUser&&e.blockUser(...t))},Object(r.O)(e.$t("user_card.block")),1)),Object(r.k)("button",{class:"btn button-default btn-block dropdown-item",onClick:t[4]||(t[4]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(r.O)(e.$t("user_card.report")),1),e.pleromaChatMessagesAvailable?(Object(r.D)(),Object(r.j)("button",{key:3,class:"btn button-default btn-block dropdown-item",onClick:t[5]||(t[5]=(...t)=>e.openChat&&e.openChat(...t))},Object(r.O)(e.$t("user_card.message")),1)):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",le,[Object(r.m)(a,{class:"icon",icon:"ellipsis-v"})])]),_:1})])}]]),be=n(52),me=n(25),fe=n(23);function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}W.c.add(Y.bb,Y.i,Y.db,Y.A,Y.v);var ge={props:["userId","switcher","selected","hideBio","rounded","bordered","allowZoomingAvatar"],data:function(){return{followRequestInProgress:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter}},created:function(){this.$store.dispatch("fetchUserRelationship",this.user.id)},computed:je({user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},classes:function(){return[{"user-card-rounded-t":"top"===this.rounded,"user-card-rounded":!0===this.rounded,"user-card-bordered":!0===this.bordered}]},style:function(){return{backgroundImage:["linear-gradient(to bottom, var(--profileTint), var(--profileTint))","url(".concat(this.user.cover_photo,")")].join(", ")}},isOtherUser:function(){return this.user.id!==this.$store.state.users.currentUser.id},subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")},loggedIn:function(){return this.$store.state.users.currentUser},dailyAvg:function(){var e=Math.ceil((new Date-new Date(this.user.created_at))/864e5);return Math.round(this.user.statuses_count/e)},userHighlightType:je({get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.type||"disabled"},set:function(e){var t=this.$store.getters.mergedConfig.highlight[this.user.screen_name];"disabled"!==e?this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:t&&t.color||"#FFFFFF",type:e}):this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:void 0})}},Object(ue.c)(["mergedConfig"])),userHighlightColor:{get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.color},set:function(e){this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:e})}},visibleRole:function(){var e=this.user.rights;if(e){var t=e.admin||e.moderator,n=e.admin?"admin":"moderator";return t&&n}},hideFollowsCount:function(){return this.isOtherUser&&this.user.hide_follows_count},hideFollowersCount:function(){return this.isOtherUser&&this.user.hide_followers_count}},Object(ue.c)(["mergedConfig"])),components:{UserAvatar:L.default,RemoteFollow:R.a,ModerationTools:oe,AccountActions:he,ProgressButton:A.a,FollowButton:N.a,Select:be.a,RichContent:me.a},methods:{refetchRelationship:function(){return this.$store.dispatch("fetchUserRelationship",this.user.id)},muteUser:function(){this.$store.dispatch("muteUser",this.user.id)},unmuteUser:function(){this.$store.dispatch("unmuteUser",this.user.id)},muteDomain:function(){var e=this;this.$store.dispatch("muteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},unmuteDomain:function(){var e=this;this.$store.dispatch("unmuteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},subscribeUser:function(){return this.$store.dispatch("subscribeUser",this.user.id)},unsubscribeUser:function(){return this.$store.dispatch("unsubscribeUser",this.user.id)},setProfileView:function(e){this.switcher&&this.$store.commit("setProfileView",{v:e})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")},userProfileLink:function(e){return Object(fe.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},zoomAvatar:function(){var e={url:this.user.profile_image_url_original,mimetype:"image"};this.$store.dispatch("setMedia",[e]),this.$store.dispatch("setCurrentMedia",e)},mentionUser:function(){this.$store.dispatch("openPostStatusModal",{replyTo:!0,repliedUser:this.user})}}};n(530);const ve=te()(ge,[["render",function(e,t,n,F,E,L){const R=Object(r.J)("UserAvatar"),A=Object(r.J)("FAIcon"),N=Object(r.J)("router-link"),B=Object(r.J)("RichContent"),V=Object(r.J)("AccountActions"),H=Object(r.J)("Select"),q=Object(r.J)("FollowButton"),J=Object(r.J)("ProgressButton"),W=Object(r.J)("FALayers"),Y=Object(r.J)("ModerationTools"),G=Object(r.J)("RemoteFollow");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["user-card",e.classes])},[Object(r.k)("div",{class:Object(r.w)([{"hide-bio":e.hideBio},"background-image"]),style:Object(r.x)(e.style)},null,6),Object(r.k)("div",i,[Object(r.k)("div",o,[Object(r.k)("div",s,[e.allowZoomingAvatar?(Object(r.D)(),Object(r.j)("a",{key:0,class:"user-info-avatar-link",onClick:t[0]||(t[0]=(...t)=>e.zoomAvatar&&e.zoomAvatar(...t))},[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"]),Object(r.k)("div",a,[Object(r.m)(A,{class:"fa-scale-110 fa-old-padding",icon:"search-plus"})])])):(Object(r.D)(),Object(r.h)(N,{key:1,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"])]),_:1},8,["to"])),Object(r.k)("div",c,[Object(r.k)("div",l,[Object(r.m)(B,{title:e.user.name,class:"user-name",html:e.user.name,emoji:e.user.emoji},null,8,["title","html","emoji"]),!e.isOtherUser&&e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled edit-profile-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.openProfileTab&&e.openProfileTab(...t),["stop"]))},[Object(r.m)(A,{"fixed-width":"",class:"icon",icon:"edit",title:e.$t("user_card.edit_profile")},null,8,["title"])])):Object(r.i)("",!0),e.isOtherUser&&!e.user.is_local?(Object(r.D)(),Object(r.j)("a",{key:1,href:e.user.statusnet_profile_url,target:"_blank",class:"button-unstyled external-link-button"},[Object(r.m)(A,{class:"icon",icon:"external-link-alt"})],8,u)):Object(r.i)("",!0),e.isOtherUser&&e.loggedIn?(Object(r.D)(),Object(r.h)(V,{key:2,user:e.user,relationship:e.relationship},null,8,["user","relationship"])):Object(r.i)("",!0)]),Object(r.k)("div",d,[Object(r.m)(N,{class:"user-screen-name",title:e.user.screen_name_ui,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.user.deactivated?(Object(r.D)(),Object(r.j)("span",p,Object(r.O)(e.$t("user_card.deactivated")),1)):Object(r.i)("",!0),e.visibleRole?(Object(r.D)(),Object(r.j)("span",h,Object(r.O)(e.$t("general.role."+e.visibleRole)),1)):Object(r.i)("",!0),e.user.bot?(Object(r.D)(),Object(r.j)("span",b,Object(r.O)(e.$t("user_card.bot")),1)):Object(r.i)("",!0)],64)),e.user.locked?(Object(r.D)(),Object(r.j)("span",m,[Object(r.m)(A,{class:"lock-icon",icon:"lock",size:"sm"})])):Object(r.i)("",!0),e.mergedConfig.hideUserStats||e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",f,Object(r.O)(e.dailyAvg)+" "+Object(r.O)(e.$t("user_card.per_day")),1))])])]),Object(r.k)("div",O,[e.relationship.followed_by&&e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",j,Object(r.O)(e.$t("user_card.follows_you")),1)):Object(r.i)("",!0),!e.isOtherUser||!e.loggedIn&&e.switcher?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,["disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,id:"userHighlightColorTx"+e.user.id,"onUpdate:modelValue":t[2]||(t[2]=t=>e.userHighlightColor=t),class:"userHighlightText",type:"text"},null,8,v)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),"disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:1,id:"userHighlightColor"+e.user.id,"onUpdate:modelValue":t[3]||(t[3]=t=>e.userHighlightColor=t),class:"userHighlightCl",type:"color"},null,8,y)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),w,Object(r.m)(H,{id:"userHighlightSel"+e.user.id,modelValue:e.userHighlightType,"onUpdate:modelValue":t[4]||(t[4]=t=>e.userHighlightType=t),class:"userHighlightSel"},{default:Object(r.V)(()=>[Object(r.k)("option",k,Object(r.O)(e.$t("user_card.highlight.disabled")),1),Object(r.k)("option",_,Object(r.O)(e.$t("user_card.highlight.solid")),1),Object(r.k)("option",S,Object(r.O)(e.$t("user_card.highlight.striped")),1),Object(r.k)("option",C,Object(r.O)(e.$t("user_card.highlight.side")),1)]),_:1},8,["id","modelValue"])]))]),e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",P,[Object(r.k)("div",x,[Object(r.m)(q,{relationship:e.relationship,user:e.user},null,8,["relationship","user"]),e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.subscribing?(Object(r.D)(),Object(r.h)(J,{key:1,class:"btn button-default toggled",click:e.unsubscribeUser,title:e.$t("user_card.unsubscribe")},{default:Object(r.V)(()=>[Object(r.m)(W,null,{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"rss",transform:"left-5 shrink-6 up-3 rotate-20",flip:"horizontal"}),Object(r.m)(A,{icon:"rss",transform:"right-5 shrink-6 up-3 rotate-20"}),Object(r.m)(A,{icon:"bell"})]),_:1})]),_:1},8,["click","title"])):(Object(r.D)(),Object(r.h)(J,{key:0,class:"btn button-default",click:e.subscribeUser,title:e.$t("user_card.subscribe")},{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"bell"})]),_:1},8,["click","title"]))],64)):Object(r.i)("",!0)]),Object(r.k)("div",null,[e.relationship.muting?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",disabled:e.user.deactivated,onClick:t[5]||(t[5]=(...t)=>e.unmuteUser&&e.unmuteUser(...t))},Object(r.O)(e.$t("user_card.muted")),9,D)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[6]||(t[6]=(...t)=>e.muteUser&&e.muteUser(...t))},Object(r.O)(e.$t("user_card.mute")),9,T))]),Object(r.k)("div",null,[e.relationship.domain_blocking?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",onClick:t[7]||(t[7]=(...t)=>e.unmuteDomain&&e.unmuteDomain(...t))},Object(r.O)(e.$t("user_card.domain_muted")),1)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",onClick:t[8]||(t[8]=(...t)=>e.muteDomain&&e.muteDomain(...t))},Object(r.O)(e.$t("user_card.mute_domain")),1))]),Object(r.k)("div",null,[Object(r.k)("button",{class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[9]||(t[9]=(...t)=>e.mentionUser&&e.mentionUser(...t))},Object(r.O)(e.$t("user_card.mention")),9,I)]),"admin"===e.loggedIn.role?(Object(r.D)(),Object(r.h)(Y,{key:0,user:e.user},null,8,["user"])):Object(r.i)("",!0)])):Object(r.i)("",!0),!e.loggedIn&&e.user.is_local?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(G,{user:e.user},null,8,["user"])])):Object(r.i)("",!0)])]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",z,[!e.mergedConfig.hideUserStats&&e.switcher?(Object(r.D)(),Object(r.j)("div",M,[Object(r.k)("div",{class:"user-count",onClick:t[10]||(t[10]=Object(r.Y)(t=>e.setProfileView("statuses"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.statuses")),1),Object(r.k)("span",null,[Object(r.l)(Object(r.O)(e.user.statuses_count)+" ",1),U])]),Object(r.k)("div",{class:"user-count",onClick:t[11]||(t[11]=Object(r.Y)(t=>e.setProfileView("friends"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followees")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowsCount?e.$t("user_card.hidden"):e.user.friends_count),1)]),Object(r.k)("div",{class:"user-count",onClick:t[12]||(t[12]=Object(r.Y)(t=>e.setProfileView("followers"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followers")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowersCount?e.$t("user_card.hidden"):e.user.followers_count),1)])])):Object(r.i)("",!0),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(B,{key:1,class:"user-card-bio",html:e.user.description_html,emoji:e.user.emoji,"handle-links":!0},null,8,["html","emoji"]))]))],2)}]]);t.a=ve},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return a}));var r=n(20),i=n(18),o={undelay:null,topBar:null,badge:null,profileTint:null,fg:null,bg:"underlay",highlight:"bg",panel:"bg",popover:"bg",selectedMenu:"popover",btn:"bg",btnPanel:"panel",btnTopBar:"topBar",input:"bg",inputPanel:"panel",inputTopBar:"topBar",alert:"bg",alertPanel:"panel",poll:"bg",chatBg:"underlay",chatMessage:"chatBg"},s={profileTint:.5,alert:.5,input:.5,faint:.5,underlay:.15,alertPopup:.95},a={bg:{depends:[],opacity:"bg",priority:1},wallpaper:{depends:["bg"],color:function(e,t){return Object(r.brightness)(-2*e,t).rgb}},fg:{depends:[],priority:1},text:{depends:[],layer:"bg",opacity:null,priority:1},underlay:{default:"#000000",opacity:"underlay"},link:{depends:["accent"],priority:1},accent:{depends:["link"],priority:1},faint:{depends:["text"],opacity:"faint"},faintLink:{depends:["link"],opacity:"faint"},postFaintLink:{depends:["postLink"],opacity:"faint"},cBlue:"#0000ff",cRed:"#FF0000",cGreen:"#00FF00",cOrange:"#E3FF00",profileBg:{depends:["bg"],color:function(e,t){return{r:Math.floor(.53*t.r),g:Math.floor(.56*t.g),b:Math.floor(.59*t.b)}}},profileTint:{depends:["bg"],layer:"profileTint",opacity:"profileTint"},highlight:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},highlightLightText:{depends:["lightText"],layer:"highlight",textColor:!0},highlightPostLink:{depends:["postLink"],layer:"highlight",textColor:"preserve"},highlightFaintText:{depends:["faint"],layer:"highlight",textColor:!0},highlightFaintLink:{depends:["faintLink"],layer:"highlight",textColor:"preserve"},highlightPostFaintLink:{depends:["postFaintLink"],layer:"highlight",textColor:"preserve"},highlightText:{depends:["text"],layer:"highlight",textColor:!0},highlightLink:{depends:["link"],layer:"highlight",textColor:"preserve"},highlightIcon:{depends:["highlight","highlightText"],color:function(e,t,n){return Object(i.g)(t,n)}},popover:{depends:["bg"],opacity:"popover"},popoverLightText:{depends:["lightText"],layer:"popover",textColor:!0},popoverPostLink:{depends:["postLink"],layer:"popover",textColor:"preserve"},popoverFaintText:{depends:["faint"],layer:"popover",textColor:!0},popoverFaintLink:{depends:["faintLink"],layer:"popover",textColor:"preserve"},popoverPostFaintLink:{depends:["postFaintLink"],layer:"popover",textColor:"preserve"},popoverText:{depends:["text"],layer:"popover",textColor:!0},popoverLink:{depends:["link"],layer:"popover",textColor:"preserve"},popoverIcon:{depends:["popover","popoverText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedPost:"--highlight",selectedPostFaintText:{depends:["highlightFaintText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLightText:{depends:["highlightLightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostPostLink:{depends:["highlightPostLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostFaintLink:{depends:["highlightFaintLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostText:{depends:["highlightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLink:{depends:["highlightLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostIcon:{depends:["selectedPost","selectedPostText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenu:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuLightText:{depends:["highlightLightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintText:{depends:["highlightFaintText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintLink:{depends:["highlightFaintLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuText:{depends:["highlightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuLink:{depends:["highlightLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuIcon:{depends:["selectedMenu","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenuPopover:{depends:["popover"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuPopoverLightText:{depends:["selectedMenuLightText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintText:{depends:["selectedMenuFaintText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintLink:{depends:["selectedMenuFaintLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverText:{depends:["selectedMenuText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverLink:{depends:["selectedMenuLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverIcon:{depends:["selectedMenuPopover","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},lightText:{depends:["text"],layer:"bg",textColor:"preserve",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},postLink:{depends:["link"],layer:"bg",textColor:"preserve"},postGreentext:{depends:["cGreen"],layer:"bg",textColor:"preserve"},postCyantext:{depends:["cBlue"],layer:"bg",textColor:"preserve"},border:{depends:["fg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},poll:{depends:["accent","bg"],copacity:"poll",color:function(e,t,n){return Object(i.a)(t,.4,n)}},pollText:{depends:["text"],layer:"poll",textColor:!0},icon:{depends:["bg","text"],inheritsOpacity:!1,color:function(e,t,n){return Object(i.g)(t,n)}},fgText:{depends:["text"],layer:"fg",textColor:!0},fgLink:{depends:["link"],layer:"fg",textColor:"preserve"},panel:{depends:["fg"],opacity:"panel"},panelText:{depends:["text"],layer:"panel",textColor:!0},panelFaint:{depends:["fgText"],layer:"panel",opacity:"faint",textColor:!0},panelLink:{depends:["fgLink"],layer:"panel",textColor:"preserve"},topBar:"--fg",topBarText:{depends:["fgText"],layer:"topBar",textColor:!0},topBarLink:{depends:["fgLink"],layer:"topBar",textColor:"preserve"},tab:{depends:["btn"]},tabText:{depends:["btnText"],layer:"btn",textColor:!0},tabActiveText:{depends:["text"],layer:"bg",textColor:!0},btn:{depends:["fg"],variant:"btn",opacity:"btn"},btnText:{depends:["fgText"],layer:"btn",textColor:!0},btnPanelText:{depends:["btnText"],layer:"btnPanel",variant:"btn",textColor:!0},btnTopBarText:{depends:["btnText"],layer:"btnTopBar",variant:"btn",textColor:!0},btnPressed:{depends:["btn"],layer:"btn"},btnPressedText:{depends:["btnText"],layer:"btn",variant:"btnPressed",textColor:!0},btnPressedPanel:{depends:["btnPressed"],layer:"btn"},btnPressedPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnPressed",textColor:!0},btnPressedTopBar:{depends:["btnPressed"],layer:"btn"},btnPressedTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnPressed",textColor:!0},btnToggled:{depends:["btn"],layer:"btn",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},btnToggledText:{depends:["btnText"],layer:"btn",variant:"btnToggled",textColor:!0},btnToggledPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnToggled",textColor:!0},btnToggledTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnToggled",textColor:!0},btnDisabled:{depends:["btn","bg"],color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledText:{depends:["btnText","btnDisabled"],layer:"btn",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledPanelText:{depends:["btnPanelText","btnDisabled"],layer:"btnPanel",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledTopBarText:{depends:["btnTopBarText","btnDisabled"],layer:"btnTopBar",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},input:{depends:["fg"],opacity:"input"},inputText:{depends:["text"],layer:"input",textColor:!0},inputPanelText:{depends:["panelText"],layer:"inputPanel",variant:"input",textColor:!0},inputTopbarText:{depends:["topBarText"],layer:"inputTopBar",variant:"input",textColor:!0},alertError:{depends:["cRed"],opacity:"alert"},alertErrorText:{depends:["text"],layer:"alert",variant:"alertError",textColor:!0},alertErrorPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertError",textColor:!0},alertWarning:{depends:["cOrange"],opacity:"alert"},alertWarningText:{depends:["text"],layer:"alert",variant:"alertWarning",textColor:!0},alertWarningPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertWarning",textColor:!0},alertSuccess:{depends:["cGreen"],opacity:"alert"},alertSuccessText:{depends:["text"],layer:"alert",variant:"alertSuccess",textColor:!0},alertSuccessPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertSuccess",textColor:!0},alertNeutral:{depends:["text"],opacity:"alert"},alertNeutralText:{depends:["text"],layer:"alert",variant:"alertNeutral",color:function(e,t){return Object(r.invertLightness)(t).rgb},textColor:!0},alertNeutralPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertNeutral",textColor:!0},alertPopupError:{depends:["alertError"],opacity:"alertPopup"},alertPopupErrorText:{depends:["alertErrorText"],layer:"popover",variant:"alertPopupError",textColor:!0},alertPopupWarning:{depends:["alertWarning"],opacity:"alertPopup"},alertPopupWarningText:{depends:["alertWarningText"],layer:"popover",variant:"alertPopupWarning",textColor:!0},alertPopupSuccess:{depends:["alertSuccess"],opacity:"alertPopup"},alertPopupSuccessText:{depends:["alertSuccessText"],layer:"popover",variant:"alertPopupSuccess",textColor:!0},alertPopupNeutral:{depends:["alertNeutral"],opacity:"alertPopup"},alertPopupNeutralText:{depends:["alertNeutralText"],layer:"popover",variant:"alertPopupNeutral",textColor:!0},badgeNotification:"--cRed",badgeNotificationText:{depends:["text","badgeNotification"],layer:"badge",variant:"badgeNotification",textColor:"bw"},chatBg:{depends:["bg"]},chatMessageIncomingBg:{depends:["chatBg"]},chatMessageIncomingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:!0},chatMessageIncomingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:"preserve"},chatMessageIncomingBorder:{depends:["border"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},chatMessageOutgoingBg:{depends:["chatMessageIncomingBg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},chatMessageOutgoingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:!0},chatMessageOutgoingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:"preserve"},chatMessageOutgoingBorder:{depends:["chatMessageOutgoingBg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}}}},,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(70),s=n(336),a={ja_easy:"ja",zh_Hant:"zh-HANT",zh:"zh-Hans"},c=function(e){return a[e]||e},l=function(e){var t={ja_easy:"やさしいにほんご",zh:"简体中文",zh_Hant:"繁體中文"}[e]||s.a.getNativeName(e),n=c(e);return t.charAt(0).toLocaleUpperCase(n)+t.slice(1)},u=i()(o.a.languages,(function(e){return{code:e,name:l(e)}})).sort((function(e,t){return e.name.localeCompare(t.name)})),d={internalToBrowserLocale:c,internalToBackendLocale:function(e){return c(e).replace("_","-")},languages:u,getLanguageName:l};t.a=d},,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"i",(function(){return O})),n.d(t,"e",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"f",(function(){return y})),n.d(t,"a",(function(){return C})),n.d(t,"h",(function(){return P})),n.d(t,"d",(function(){return x})),n.d(t,"k",(function(){return T})),n.d(t,"c",(function(){return I})),n.d(t,"m",(function(){return $})),n.d(t,"j",(function(){return z})),n.d(t,"l",(function(){return M}));var r=n(28),i=n.n(r),o=n(12),s=n.n(o),a=n(5),c=n.n(a),l=n(11),u=n.n(l),d=n(20),p=n(18),h=n(54);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=function(e){var t=D(e).rules,n=document.head,r=document.body;r.classList.add("hidden");var i=document.createElement("style");n.appendChild(i);var o=i.sheet;o.toString(),o.insertRule(":root { ".concat(t.radii," }"),"index-max"),o.insertRule(":root { ".concat(t.colors," }"),"index-max"),o.insertRule(":root { ".concat(t.shadows," }"),"index-max"),o.insertRule(":root { ".concat(t.fonts," }"),"index-max"),r.classList.remove("hidden")},O=function(e,t){return 0===e.length?"none":e.filter((function(e){return t?e.inset:e})).map((function(e){return[e.x,e.y,e.blur,e.spread].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha),e.inset?"inset":""]).join(" ")})).join(", ")},j=function(e){return 0===e.length?"none":e.filter((function(e){return!e.inset&&0===Number(e.spread)})).map((function(e){return[e.x,e.y,e.blur/2].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha)]).join(" ")})).map((function(e){return"drop-shadow(".concat(e,")")})).join(" ")},g=function(e){var t=e.themeEngineVersion?e.colors||e:I(e.colors||e),n=Object(h.d)(t,e.opacity||{}),r=n.colors,i=n.opacity,o=Object.entries(r).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return i?(e.solid[r]=Object(p.i)(i),e.complete[r]=void 0===i.a?Object(p.i)(i):Object(p.j)(i),e):e}),{complete:{},solid:{}});return{rules:{colors:Object.entries(o.complete).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,": ").concat(r)})).join(";")},theme:{colors:o.solid,opacity:i}}},v=function(e){var t=e.radii||{};void 0!==e.btnRadius&&(t=Object.entries(e).filter((function(e){var t=u()(e,2),n=t[0];t[1];return n.endsWith("Radius")})).reduce((function(e,t){return e[t[0].split("Radius")[0]]=t[1],e}),{}));var n=Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{btn:4,input:4,checkbox:2,panel:10,avatar:5,avatarAlt:50,tooltip:2,attachment:5,chatMessage:t.panel});return{rules:{radii:Object.entries(n).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Radius: ").concat(r,"px")})).join(";")},theme:{radii:n}}},y=function(e){var t=Object.entries(e.fonts||{}).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=Object.entries(i).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),e[r]),e}),{interface:{family:"sans-serif"},input:{family:"inherit"},post:{family:"inherit"},postCode:{family:"monospace"}});return{rules:{fonts:Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Font: ").concat(r.family)})).join(";")},theme:{fonts:t}}},w=function(e,t){return{x:0,y:e?1:-1,blur:0,spread:0,color:t?"#000000":"#FFFFFF",alpha:.2,inset:!0}},k=[w(!0,!1),w(!1,!0)],_=[w(!0,!0),w(!1,!1)],S={x:0,y:0,blur:4,spread:0,color:"--faint",alpha:1},C={panel:[{x:1,y:1,blur:4,spread:0,color:"#000000",alpha:.6}],topBar:[{x:0,y:0,blur:4,spread:0,color:"#000000",alpha:.6}],popup:[{x:2,y:2,blur:3,spread:0,color:"#000000",alpha:.5}],avatar:[{x:0,y:1,blur:8,spread:0,color:"#000000",alpha:.7}],avatarStatus:[],panelHeader:[],button:[{x:0,y:0,blur:2,spread:0,color:"#000000",alpha:1}].concat(k),buttonHover:[S].concat(k),buttonPressed:[S].concat(_),input:[].concat(_,[{x:0,y:0,blur:2,inset:!0,spread:0,color:"#000000",alpha:1}])},P=function(e,t){var n={button:"btn",panel:"bg",top:"topBar",popup:"popover",avatar:"bg",panelHeader:"panel",input:"input"},r=Object.fromEntries(Object.entries(e.shadows||{}).map((function(e){var t=u()(e,2);return[t[0],t[1].map((function(e){return m({color:"#000000"},e)}))]}))),i=r&&!e.themeEngineVersion?$(r,e.opacity):r||{},o=Object.entries(m(m({},C),i)).reduce((function(e,r){var i=u()(r,2),o=i[0],a=i[1],l=o.replace(/[A-Z].*$/,""),b=n[l],f=Object(p.h)(Object(d.convert)(t[b]).rgb)<.5?1:-1,O=a.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{color:Object(p.i)(Object(h.c)(n.color,(function(e){return Object(d.convert)(t[e]).rgb}),f))})])}),[]);return m(m({},e),{},c()({},o,O))}),{});return{rules:{shadows:Object.entries(o).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return["--".concat(n,"Shadow: ").concat(O(r)),"--".concat(n,"ShadowFilter: ").concat(j(r)),"--".concat(n,"ShadowInset: ").concat(O(r,!0))].join(";")})).join(";")},theme:{shadows:o}}},x=function(e,t,n,r){return{rules:m(m(m(m({},n.rules),e.rules),t.rules),r.rules),theme:m(m(m(m({},n.theme),e.theme),t.theme),r.theme)}},D=function(e){var t=g(e);return x(t,v(e),P(e,t.theme.colors,t.mod),y(e))},T=function(){return window.fetch("/static/styles.json",{cache:"no-store"}).then((function(e){return e.json()})).then((function(e){return Object.entries(e).map((function(e){var t=u()(e,2),n=t[0],r=t[1],o=null;return"object"===i()(r)?o=Promise.resolve(r):"string"==typeof r&&(o=window.fetch(r,{cache:"no-store"}).then((function(e){return e.json()})).catch((function(e){return console.error(e),null}))),[n,o]}))})).then((function(e){return e.reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{})}))},I=function(e){return Object.entries(e).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];switch(r){case"lightBg":return m(m({},e),{},{highlight:i});case"btnText":return m(m({},e),["","Panel","TopBar"].reduce((function(e,t){return m(m({},e),{},c()({},"btn"+t+"Text",i))}),{}));default:return m(m({},e),{},c()({},r,i))}}),{})},$=function(e,t){return Object.entries(e).reduce((function(e,n){var r=u()(n,2),i=r[0],o=r[1],a=o.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{alpha:(o=n,a=o.color,(void 0===a?"#000000":a).startsWith("--")?(r=n,i=r.color,t[Object(h.f)(i.substring(2).split(",")[0])]||1):n.alpha)})]);var r,i,o,a}),[]);return m(m({},e),{},c()({},i,a))}),{})},z=function(e){return T().then((function(t){return t[e]?t[e]:t["pleroma-dark"]})).then((function(e){var t=Array.isArray(e),n=t?{}:e.theme;if(t){var r=Object(p.f)(e[1]),i=Object(p.f)(e[2]),o=Object(p.f)(e[3]),s=Object(p.f)(e[4]),a=Object(p.f)(e[5]||"#FF0000"),c=Object(p.f)(e[6]||"#00FF00"),l=Object(p.f)(e[7]||"#0000FF"),u=Object(p.f)(e[8]||"#E3FF00");n.colors={bg:r,fg:i,text:o,link:s,cRed:a,cBlue:l,cGreen:c,cOrange:u}}return{theme:n,source:e.source}}))},M=function(e){return z(e).then((function(e){return f(e.theme)}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){var n=!1,r=null;return r=window.setTimeout((function i(){var o=e();o&&o.finally?o.finally((function(){n||(r=window.setTimeout(i,t))})):console.warn("promiseInterval: promise call did not return a promise, stopping interval.")}),t),{stop:function(){n=!0,window.clearTimeout(r)}}}},function(e,t,n){"use strict";var r=n(0);const i={key:0},o={key:1},s={key:3,class:"link-preview media-body"};var a=n(5),c=n.n(a),l=n(58);const u=["title"],d={class:"option-result-label"},p={class:"result-percentage"},h=["onClick"],b=["disabled","value"],m=["disabled","value"],f={class:"option-vote"},O={class:"footer faint"},j=["disabled"],g={class:"total"};var v=n(21),y=n.n(v),w=n(164),k=n.n(w),_=n(59),S=n(25),C={name:"Poll",props:["basePoll","emoji"],components:{Timeago:_.a,RichContent:S.a},data:function(){return{loading:!1,choices:[]}},created:function(){this.$store.state.polls.pollsObject[this.pollId]||this.$store.dispatch("mergeOrAddPoll",this.basePoll),this.$store.dispatch("trackPoll",this.pollId)},unmounted:function(){this.$store.dispatch("untrackPoll",this.pollId)},computed:{pollId:function(){return this.basePoll.id},poll:function(){return this.$store.state.polls.pollsObject[this.pollId]||{}},options:function(){return this.poll&&this.poll.options||[]},expiresAt:function(){return this.poll&&this.poll.expires_at||0},expired:function(){return this.poll&&this.poll.expired||!1},loggedIn:function(){return this.$store.state.users.currentUser},showResults:function(){return this.poll.voted||this.expired||!this.loggedIn},totalVotesCount:function(){return this.poll.votes_count},containerClass:function(){return{loading:this.loading}},choiceIndices:function(){return this.choices.map((function(e,t){return e&&t})).filter((function(e){return"number"==typeof e}))},isDisabled:function(){var e=0===this.choiceIndices.length;return this.loading||e}},methods:{percentageForOption:function(e){return 0===this.totalVotesCount?0:Math.round(e/this.totalVotesCount*100)},resultTitle:function(e){return"".concat(e.votes_count,"/").concat(this.totalVotesCount," ").concat(this.$t("polls.votes"))},fetchPoll:function(){this.$store.dispatch("refreshPoll",{id:this.statusId,pollId:this.poll.id})},activateOption:function(e){var t=this.$el.querySelectorAll("input"),n=this.$el.querySelector('input[value="'.concat(e,'"]'));this.poll.multiple?n.checked=!n.checked:(k()(t,(function(e){e.checked=!1})),n.checked=!0),this.choices=y()(t,(function(e){return e.checked}))},optionId:function(e){return"poll".concat(this.poll.id,"-").concat(e)},vote:function(){var e=this;0!==this.choiceIndices.length&&(this.loading=!0,this.$store.dispatch("votePoll",{id:this.statusId,pollId:this.poll.id,choices:this.choiceIndices}).then((function(t){e.loading=!1})))}}},P=(n(517),n(4)),x=n.n(P);var D=x()(C,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("Timeago"),l=Object(r.J)("i18n-t");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["poll",e.containerClass])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:"poll-option"},[e.showResults?(Object(r.D)(),Object(r.j)("div",{key:0,title:e.resultTitle(t),class:"option-result"},[Object(r.k)("div",d,[Object(r.k)("span",p,Object(r.O)(e.percentageForOption(t.votes_count))+"% ",1),Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])]),Object(r.k)("div",{class:"result-fill",style:Object(r.x)({width:e.percentageForOption(t.votes_count)+"%"})},null,4)],8,u)):(Object(r.D)(),Object(r.j)("div",{key:1,onClick:t=>e.activateOption(n)},[e.poll.multiple?(Object(r.D)(),Object(r.j)("input",{key:0,type:"checkbox",disabled:e.loading,value:n},null,8,b)):(Object(r.D)(),Object(r.j)("input",{key:1,type:"radio",disabled:e.loading,value:n},null,8,m)),Object(r.k)("label",f,[Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])])],8,h))]))),128)),Object(r.k)("div",O,[e.showResults?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default poll-vote-button",type:"button",disabled:e.isDisabled,onClick:t[0]||(t[0]=(...t)=>e.vote&&e.vote(...t))},Object(r.O)(e.$t("polls.vote")),9,j)),Object(r.k)("div",g,["number"==typeof e.poll.voters_count?(Object(r.D)(),Object(r.j)(r.a,{key:0},[Object(r.l)(Object(r.O)(e.$tc("polls.people_voted_count",e.poll.voters_count,{count:e.poll.voters_count}))+" · ",1)],64)):(Object(r.D)(),Object(r.j)(r.a,{key:1},[Object(r.l)(Object(r.O)(e.$tc("polls.votes_count",e.poll.votes_count,{count:e.poll.votes_count}))+" · ",1)],64))]),Object(r.k)("span",null,[Object(r.m)(l,{scope:"global",keypath:e.expired?"polls.expired":"polls.expires_in"},{default:Object(r.V)(()=>[Object(r.m)(c,{time:e.expiresAt,"auto-update":60,"now-threshold":0},null,8,["time"])]),_:1},8,["keypath"])])])],2)}]]),T=n(78);const I={class:"body"},$={key:0};var z=n(33),M=n(12),U=n.n(M),F=n(329),E=n(79),L=n(40),R=n.n(L),A=n(23),N=n(8),B=n(31),V=n(22),H=n(6),q=n(3),J=["backgroundColor","backgroundPosition","backgroundImage"];function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.f);V.default,Y(Y({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(B.a)(this.user)},style:function(){if(this.highlight){var e=Object(B.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return R()(e,J)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}}));function G(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return K(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var X=["tada","jelly","twitch","shake","spin","jump","bounce","flip","x2","x3","x4","font","blur","rainbow","sparkle","rotate"],Z=Object(r.o)({props:{status:{type:Object,required:!0}},render:function(){var e=this;if(!this.status)return null;var t=F.parse(this.status.mfm_content,{fnNameList:X}),n=function(e){return null==e?null:e.match(/^[0-9.]+s$/)?e:null};return Object(r.q)("span",function t(i){return o=i.map((function(i){switch(i.type){case"text":var o,s=[],a=G(i.props.text.replace(/(\r\n|\n|\r)/g,"\n").split("\n"));try{for(a.s();!(o=a.n()).done;){var c=o.value;s.push(Object(r.q)("br")),s.push(c)}}catch(e){a.e(e)}finally{a.f()}return s.shift(),s;case"bold":return[Object(r.q)("b",t(i.children))];case"strike":return[Object(r.q)("del",t(i.children))];case"italic":return Object(r.q)("i",{style:"font-style: oblique;"},t(i.children));case"fn":var l;switch(i.props.name){case"tada":l="font-size: 150%;animation: tada 1s linear infinite both;";break;case"jelly":var u=n(i.props.args.speed)||"1s";l="animation: mfm-rubberBand ".concat(u," linear infinite both;");break;case"twitch":var d=n(i.props.args.speed)||"0.5s";l="animation: mfm-twitch ".concat(d," ease infinite;");break;case"shake":var p=n(i.props.args.speed)||"0.5s";l="animation: mfm-shake ".concat(p," ease infinite;");break;case"spin":var h=i.props.args.left?"reverse":i.props.args.alternate?"alternate":"normal",b=i.props.args.x?"mfm-spinX":i.props.args.y?"mfm-spinY":"mfm-spin",m=n(i.props.args.speed)||"1.5s";l="animation: ".concat(b," ").concat(m," linear infinite; animation-direction: ").concat(h,";");break;case"jump":l="animation: mfm-jump 0.75s linear infinite;";break;case"bounce":l="animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;";break;case"flip":var f=i.props.args.h&&i.props.args.v?"scale(-1, -1)":i.props.args.v?"scaleY(-1)":"scaleX(-1)";l="transform: ".concat(f,";");break;case"x2":l="font-size: 200%;";break;case"x3":l="font-size: 400%;";break;case"x4":l="font-size: 600%;";break;case"font":var O=i.props.args.serif?"serif":i.props.args.monospace?"monospace":i.props.args.cursive?"cursive":i.props.args.fantasy?"fantasy":i.props.args.emoji?"emoji":i.props.args.math?"math":null;O&&(l="font-family: ".concat(O,";"));break;case"blur":return Object(r.q)("span",{class:"_mfm_blur_"},t(i.children));case"rainbow":l="animation: mfm-rainbow 1s linear infinite;";break;case"sparkle":return Object(r.q)(MkSparkle,{},t(i.children));case"rotate":var j=parseInt(i.props.args.deg)||"90";l="transform: rotate(".concat(j,"deg); transform-origin: center center;")}return null==l?Object(r.q)("span",{},["$[",i.props.name," "].concat(U()(t(i.children)),["]"])):Object(r.q)("span",{style:"display: inline-block;"+l},t(i.children));case"small":return[Object(r.q)("small",{style:"opacity: 0.7;"},t(i.children))];case"center":return[Object(r.q)("div",{style:"text-align:center;"},t(i.children))];case"url":return[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},i.props.url)];case"link":return console.log(i.props),[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},t(i.children))];case"mention":var g=e.status.attentions.find((function(e){return"@".concat(e.screen_name)===i.props.acct||e.screen_name===i.props.username}));return g?[Object(r.q)(E.a,{url:g.statusnet_profile_url,content:i.props.acct,userScreenName:i.props.acct})]:null;case"hashtag":return[Object(r.q)("a",{rel:"noopener noreferrer",target:"_blank",key:i.props.hashtag,href:e.status.tags.find((function(e){return e.name===i.props.hashtag})).url},"#".concat(i.props.hashtag))];case"blockCode":return[Object(r.q)("pre",{key:Math.random(),lang:i.props.lang},i.props.code)];case"inlineCode":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];case"quote":return e.nowrap?[Object(r.q)("span",{class:"quote"},t(i.children))]:[Object(r.q)("div",{class:"quote"},t(i.children))];case"emojiCode":return[Object(r.q)("div",{class:"still-image emoji img"},[Object(r.q)("img",{key:Math.random(),title:i.props.name,alt:i.props.name,src:e.status.emojis.find((function(e){return e.shortcode===i.props.name})).static_url})])];case"unicodeEmoji":return i.props.emoji;case"math":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code})];case"mathInline":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];default:return console.error("unrecognized ast type:",i.type),[]}})),(s=[]).concat.apply(s,U()(o));var o,s}(t))}});function Q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}H.c.add(q.D,q.Q,q.K,q.N,q.X);var ee={name:"StatusContent",props:["compact","status","focused","noHeading","fullContent","singleLine","showingTall","expandingSubject","showingLongSubject","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject"],data:function(){var e=this.$store.getters.mergedConfig.renderMisskeyMarkdown;return{postLength:this.status.text.length,parseReadyDone:!1,renderMisskeyMarkdown:e}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({localCollapseSubjectDefault:function(){return this.mergedConfig.collapseMessageWithSubject},tallStatus:function(){return!this.singleLine&&!this.compact&&this.status.raw_html.split(/<p|<br/).length+this.postLength/80>20},longSubject:function(){return this.status.summary.length>240},mightHideBecauseSubject:function(){return!!this.status.summary&&this.localCollapseSubjectDefault},mightHideBecauseTall:function(){return this.tallStatus&&!(this.status.summary&&this.localCollapseSubjectDefault)},hideSubjectStatus:function(){return this.mightHideBecauseSubject&&!this.expandingSubject},hideTallStatus:function(){return this.mightHideBecauseTall&&!this.showingTall},showingMore:function(){return this.mightHideBecauseTall&&this.showingTall||this.mightHideBecauseSubject&&this.expandingSubject},attachmentTypes:function(){return this.status.attachments.map((function(e){return z.a.fileType(e.mimetype)}))}},Object(N.c)(["mergedConfig"])),components:{RichContent:S.a,MFMContent:Z},mounted:function(){var e=this;this.status.attentions&&this.status.attentions.forEach((function(t){var n=t.id;e.$store.dispatch("fetchUserIfMissing",n)}))},methods:{onParseReady:function(e){var t=this;if(!this.parseReadyDone){this.parseReadyDone=!0,this.$emit("parseReady",e);var n=e.writtenMentions,r=e.invisibleMentions;n.filter((function(e){return!e.notifying})).forEach((function(e){var n=e.content,r=e.url,i=n.replace(/<[^>]+?>/gi,"");if(i.startsWith("@")){var o=i.slice(1),s=r.replace(/^https?:\/\//,"").replace(/\/.+?$/,"");t.$store.dispatch("fetchUserIfMissing","".concat(o,"@").concat(s))}})),this.postLength=r.reduce((function(e,t){return e-t.textContent.length-1}),this.postLength)}},toggleShowMore:function(){this.mightHideBecauseTall?this.toggleShowingTall():this.mightHideBecauseSubject&&this.toggleExpandingSubject()},generateTagLink:function(e){return"/tag/".concat(e)}}};n(521);var te=x()(ee,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("MFMContent"),l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusBody",{"-compact":e.compact}])},[Object(r.k)("div",I,[e.status.summary_raw_html?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["summary-wrapper",{"-tall":e.longSubject&&!e.showingLongSubject}])},[Object(r.m)(a,{class:"media-body summary",html:e.status.summary_raw_html,emoji:e.status.emojis},null,8,["html","emoji"]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.hide_full_subject")),513),[[r.T,e.longSubject&&e.showingLongSubject]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.show_full_subject")),513),[[r.T,e.longSubject&&!e.showingLongSubject]])],2)):Object(r.i)("",!0),Object(r.k)("div",{class:Object(r.w)([{"-tall-status":e.hideTallStatus},"text-wrapper"])},[Object(r.W)(Object(r.k)("button",{class:Object(r.w)(["button-unstyled -link tall-status-hider",{"-focused":e.focused}]),onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.$t("general.show_more")),3),[[r.T,e.hideTallStatus]]),e.hideSubjectStatus||e.singleLine&&e.status.summary_raw_html?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",$,[e.renderMisskeyMarkdown&&e.status.mfm_content?(Object(r.D)(),Object(r.h)(c,{key:0,class:"RichContent text media-body mfm-post-content",status:e.status},null,8,["status"])):(Object(r.D)(),Object(r.h)(a,{key:1,class:Object(r.w)([{"-single-line":e.singleLine},"text media-body"]),html:e.status.raw_html,emoji:e.status.emojis,"handle-links":!0,greentext:e.mergedConfig.greentext,attentions:e.status.attentions,onParseReady:e.onParseReady},null,8,["class","html","emoji","greentext","attentions","onParseReady"]))])),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link cw-status-hider",onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},[Object(r.l)(Object(r.O)(e.$t("status.show_content"))+" ",1),e.attachmentTypes.includes("image")?(Object(r.D)(),Object(r.h)(l,{key:0,icon:"image"})):Object(r.i)("",!0),e.attachmentTypes.includes("video")?(Object(r.D)(),Object(r.h)(l,{key:1,icon:"video"})):Object(r.i)("",!0),e.attachmentTypes.includes("audio")?(Object(r.D)(),Object(r.h)(l,{key:2,icon:"music"})):Object(r.i)("",!0),e.attachmentTypes.includes("unknown")?(Object(r.D)(),Object(r.h)(l,{key:3,icon:"file"})):Object(r.i)("",!0),e.status.poll&&e.status.poll.options?(Object(r.D)(),Object(r.h)(l,{key:4,icon:"poll-h"})):Object(r.i)("",!0),e.status.card?(Object(r.D)(),Object(r.h)(l,{key:5,icon:"link"})):Object(r.i)("",!0)],512),[[r.T,e.hideSubjectStatus]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link status-unhider",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.tallStatus?e.$t("general.show_less"):e.$t("status.hide_content")),513),[[r.T,e.showingMore&&!e.fullContent]])],2)]),e.hideSubjectStatus?Object(r.i)("",!0):Object(r.I)(e.$slots,"default",{key:0})],2)}]]),ne=n(142);function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.r,q.D,q.Q,q.K,q.N,q.X);var oe,se=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},ae=function(e,t){var n=se(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]},ce={name:"StatusContent",props:["status","compact","focused","noHeading","fullContent","singleLine","controlledShowingTall","controlledExpandingSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject"],data:function(){return{uncontrolledShowingTall:this.fullContent||this.inConversation&&this.focused,uncontrolledShowingLongSubject:!1,uncontrolledExpandingSubject:!this.$store.getters.mergedConfig.collapseMessageWithSubject}},computed:ie(ie(ie({},(oe=["showingTall","expandingSubject","showingLongSubject"],oe.reduce((function(e,t){var n=se(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{hideAttachments:function(){return this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation},nsfwClickthrough:function(){return!!this.status.nsfw&&(!this.status.summary||!this.localCollapseSubjectDefault)},attachmentSize:function(){return this.compact?"small":this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation||this.status.attachments.length>this.maxThumbnails?"hide":"normal"},maxThumbnails:function(){return this.mergedConfig.maxThumbnails}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}})),components:{Attachment:l.a,Poll:D,Gallery:T.a,LinkPreview:ne.a,StatusBody:te},methods:{toggleShowingTall:function(){ae(this,"showingTall")},toggleExpandingSubject:function(){ae(this,"expandingSubject")},toggleShowingLongSubject:function(){ae(this,"showingLongSubject")},setMedia:function(){var e=this,t="hide"===this.attachmentSize?this.status.attachments:this.galleryAttachments;return function(){return e.$store.dispatch("setMedia",t)}}}};n(523);const le=x()(ce,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Poll"),d=Object(r.J)("FAIcon"),p=Object(r.J)("gallery"),h=Object(r.J)("link-preview"),b=Object(r.J)("StatusBody");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusContent",{"-compact":e.compact}])},[Object(r.I)(e.$slots,"header"),Object(r.m)(b,{status:e.status,compact:e.compact,"single-line":e.singleLine,"showing-tall":e.showingTall,"expanding-subject":e.expandingSubject,"showing-long-subject":e.showingLongSubject,"toggle-showing-tall":e.toggleShowingTall,"toggle-expanding-subject":e.toggleExpandingSubject,"toggle-showing-long-subject":e.toggleShowingLongSubject,onParseReady:t[2]||(t[2]=t=>e.$emit("parseReady",t))},{default:Object(r.V)(()=>[e.status.poll&&e.status.poll.options&&!e.compact?(Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(u,{"base-poll":e.status.poll,emoji:e.status.emojis},null,8,["base-poll","emoji"])])):e.status.poll&&e.status.poll.options&&e.compact?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(d,{icon:"poll-h",size:"2x"})])):Object(r.i)("",!0),0!==e.status.attachments.length?(Object(r.D)(),Object(r.h)(p,{key:2,class:"attachments media-body",nsfw:e.nsfwClickthrough,attachments:e.status.attachments,limit:e.compact?1:0,size:e.attachmentSize,onPlay:t[0]||(t[0]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[1]||(t[1]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["nsfw","attachments","limit","size"])):Object(r.i)("",!0),!e.status.card||e.noHeading||e.compact?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",s,[Object(r.m)(h,{card:e.status.card,size:e.attachmentSize,nsfw:e.nsfwClickthrough},null,8,["card","size","nsfw"])]))]),_:1},8,["status","compact","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject"]),Object(r.I)(e.$slots,"footer")],2)}]]);t.a=le},,function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return l})),n.d(t,"e",(function(){return u}));var r=6e4,i=60*r,o=24*i,s=7*o,a=30*o,c=365.25*o,l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;"string"==typeof e&&(e=Date.parse(e));var n=Date.now()>e?Math.floor:Math.ceil,l=Math.abs(Date.now()-e),u={num:n(l/c),key:"time.years"};return l<1e3*t?(u.num=0,u.key="time.now"):l<r?(u.num=n(l/1e3),u.key="time.seconds"):l<i?(u.num=n(l/r),u.key="time.minutes"):l<o?(u.num=n(l/i),u.key="time.hours"):l<s?(u.num=n(l/o),u.key="time.days"):l<a?(u.num=n(l/s),u.key="time.weeks"):l<c&&(u.num=n(l/a),u.key="time.months"),1===u.num&&(u.key=u.key.slice(0,-1)),u},u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=l(e,t);return n.key+="_short",n}},,,function(e,t,n){"use strict";var r=n(0);const i={key:0,ref:"canvas"},o=["alt","title","src","referrerpolicy"];var s={props:["src","referrerpolicy","mimetype","imageLoadError","imageLoadHandler","alt","height","width"],data:function(){return{stopGifs:this.$store.getters.mergedConfig.stopGifs}},computed:{animated:function(){return this.stopGifs&&("image/gif"===this.mimetype||this.src.endsWith(".gif"))},style:function(){var e=function(e){return/\d$/.test(e)?e+"px":e};return{height:this.height?e(this.height):null,width:this.width?e(this.width):null}}},methods:{onLoad:function(){var e=this.$refs.src;if(e){this.imageLoadHandler&&this.imageLoadHandler(e);var t=this.$refs.canvas;if(t){var n=e.naturalWidth,r=e.naturalHeight;t.width=n,t.height=r,t.getContext("2d").drawImage(e,0,0,n,r)}}},onError:function(){this.imageLoadError&&this.imageLoadError()}}},a=(n(507),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["still-image",{animated:e.animated}]),style:Object(r.x)(e.style)},[e.animated?(Object(r.D)(),Object(r.j)("canvas",i,null,512)):Object(r.i)("",!0),(Object(r.D)(),Object(r.j)("img",{ref:"src",key:e.src,alt:e.alt,title:e.alt,src:e.src,referrerpolicy:e.referrerpolicy,onLoad:t[0]||(t[0]=(...t)=>e.onLoad&&e.onLoad(...t)),onError:t[1]||(t[1]=(...t)=>e.onError&&e.onError(...t))},null,40,o)),Object(r.I)(e.$slots,"default")],6)}]]);t.a=c},function(e,t,n){"use strict";var r=n(0);const i=["disabled","checked","indeterminate"],o=Object(r.k)("i",{class:"checkbox-indicator"},null,-1),s={key:0,class:"label"};var a={emits:["update:modelValue"],props:["modelValue","indeterminate","disabled"]},c=(n(502),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,a,c,l){return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["checkbox",{disabled:n.disabled,indeterminate:n.indeterminate}])},[Object(r.k)("input",{type:"checkbox",disabled:n.disabled,checked:n.modelValue,indeterminate:n.indeterminate,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.checked))},null,40,i),o,e.$slots.default?(Object(r.D)(),Object(r.j)("span",s,[Object(r.I)(e.$slots,"default")])):Object(r.i)("",!0)],2)}]]);t.a=l},function(e,t,n){"use strict";var r=n(0);const i=["disabled","value"],o=Object(r.l)(" "+Object(r.O)(" ")+" ");var s=n(6),a=n(3);s.c.add(a.n);var c={emits:["update:modelValue"],props:["modelValue","disabled","unstyled","kind"]},l=(n(505),n(4));const u=n.n(l)()(c,[["render",function(e,t,n,s,a,c){const l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["Select input",{disabled:e.disabled,unstyled:e.unstyled}])},[Object(r.k)("select",{disabled:e.disabled,value:e.modelValue,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.value))},[Object(r.I)(e.$slots,"default")],40,i),o,Object(r.m)(l,{class:"select-down-icon",icon:"chevron-down"})],2)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={class:"basic-user-card"},o={key:0,class:"basic-user-card-expanded-content"},s={key:1,class:"basic-user-card-collapsed-content"},a=["title"];var c=n(35),l=n(22),u=n(25),d=n(23),p={props:["user"],data:function(){return{userExpanded:!1}},components:{UserCard:c.a,UserAvatar:l.default,RichContent:u.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},userProfileLink:function(e){return Object(d.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},h=(n(577),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("UserAvatar"),p=Object(r.J)("router-link"),h=Object(r.J)("UserCard"),b=Object(r.J)("RichContent");return Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(p,{to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(d,{class:"avatar",user:e.user,onClick:Object(r.Y)(e.toggleUserExpanded,["prevent"])},null,8,["user","onClick"])]),_:1},8,["to"]),e.userExpanded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(h,{"user-id":e.user.id,rounded:!0,bordered:!0},null,8,["user-id"])])):(Object(r.D)(),Object(r.j)("div",s,[Object(r.k)("div",{title:e.user.name,class:"basic-user-card-user-name"},[Object(r.m)(b,{class:"basic-user-card-user-name-value",html:e.user.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,a),Object(r.k)("div",null,[Object(r.m)(p,{class:"basic-user-card-screen-name",to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.I)(e.$slots,"default")]))])}]]);t.a=b},function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"e",(function(){return j})),n.d(t,"f",(function(){return y})),n.d(t,"b",(function(){return _})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return C}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(12),u=n.n(l),d=n(20),p=n(18),h=n(36);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=3,O=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.b,n=[e],r=t[e];r;)n.unshift(r),r=t[r];return n},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return O(e).map((function(o){return[o===e?r[t]:r[o],o===e?i[n]||1:i[o]]}))},g=function(e,t){var n=t[e];if("string"==typeof n&&n.startsWith("--"))return[n.substring(2)];if(null===n)return[];var r=n.depends,i=n.layer,o=n.variant,s=i?O(i).map((function(e){return e===i?o||i:e})):[];return Array.isArray(r)?[].concat(u()(r),u()(s)):u()(s)},v=function(e){return"object"===c()(e)?e:{depends:e.startsWith("--")?[e.substring(2)]:[],default:e.startsWith("#")?e:void 0}},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(null!==r.opacity){if(r.opacity)return r.opacity;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.opacity||null===a?a.opacity:a.depends&&o.includes(s)?r(s,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(h.b[e])return e;if(null!==r.layer){if(r.layer)return r.layer;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.layer||null===a?a.layer:a.depends?r(a,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},k=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h.c,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=Object.keys(e),r=new Set(n),i=new Set,o=new Set,s=u()(n),a=[],c=function n(s){if(r.has(s))r.delete(s),i.add(s),t(s,e).forEach(n),i.delete(s),o.add(s),a.push(s);else if(i.has(s))console.debug("Cyclic depenency in topoSort, ignoring"),a.push(s);else if(!o.has(s))throw new Error("Unintended condition in topoSort!")};s.length>0;)c(s.pop());return a.map((function(e,t){return{data:e,index:t}})).sort((function(n,r){var i=n.data,o=n.index,s=r.data,a=r.index,c=t(i,e).length,l=t(s,e).length;return c===l||0!==l&&0!==c?o-a:0===c&&0!==l?-1:0===l&&0!==c?1:void 0})).map((function(e){return e.data}))}(Object.entries(h.c).sort((function(e,t){var n=s()(e,2),r=(n[0],n[1]),i=s()(t,2),o=(i[0],i[1]);return(r&&r.priority||0)-(o&&o.priority||0)})).reduce((function(e,t){var n=s()(t,2),r=n[0],o=n[1];return m(m({},e),{},i()({},r,o))}),{})),_=Object.entries(h.c).reduce((function(e,t){var n=s()(t,2),r=n[0],o=(n[1],y(r,h.c,g));return o?m(m({},e),{},i()({},o,{defaultValue:h.a[o]||1,affectedSlots:[].concat(u()(e[o]&&e[o].affectedSlots||[]),[r])})):e}),{}),S=function(e,t,n){if("string"!=typeof e||!e.startsWith("--"))return e;var r=null,i=e.split(/,/g).map((function(e){return e.trim()})),o=s()(i,2),a=o[0],c=o[1];return r=t(a.substring(2)),c&&(r=Object(d.brightness)(Number.parseFloat(c)*n,r).rgb),r},C=function(e,t){return k.reduce((function(n,r){var o=n.colors,s=n.opacity,a=e[r],c=v(h.c[r]),l=g(r,h.c),b=!!c.textColor,f=c.variant||c.layer,O=null;O=b?Object(p.b)(m({},o[l[0]]||Object(d.convert)(e[r]||"#FF00FF").rgb),j(w(r)||"bg",f||"bg",y(f),o,s)):f&&f!==r?o[f]||Object(d.convert)(e[f]).rgb:o.bg||Object(d.convert)(e.bg);var k=Object(p.h)(O)<.5?1:-1,C=null;if(a){var P=a;if("transparent"===P){var x=j(w(r),r,y(r)||r,o,s).slice(0,-1);P=m(m({},Object(p.b)(Object(d.convert)("#FF00FF").rgb,x)),{},{a:0})}else"string"==typeof a&&a.startsWith("--")?P=S(a,(function(t){return o[t]||e[t]}),k):"string"==typeof a&&a.startsWith("#")&&(P=Object(d.convert)(P).rgb);C=m({},P)}else if(c.default)C=Object(d.convert)(c.default).rgb;else{var D=c.color||function(e,t){return m({},t)};if(c.textColor)if("bw"===c.textColor)C=Object(d.contrastRatio)(O).rgb;else{var T=m({},o[l[0]]);c.color&&(T=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))),C=Object(p.e)(O,m({},T),"preserve"===c.textColor)}else C=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))}if(!C)throw new Error("Couldn't generate color for "+r);var I=c.opacity||y(r),$=c.opacity;if(null===$)C.a=1;else if("transparent"===a)C.a=0;else{var z=$&&void 0!==t[I],M=l[0],U=M&&o[M];$||!U||c.textColor||null===$?U||I?U&&0===U.a?C.a=0:C.a=Number(z?t[I]:(_[I]||{}).defaultValue):delete C.a:C.a=U.a}return(Number.isNaN(C.a)||void 0===C.a)&&(C.a=1),I?{colors:m(m({},o),{},i()({},r,C)),opacity:m(m({},s),{},i()({},I,C.a))}:{colors:m(m({},o),{},i()({},r,C)),opacity:s}}),{colors:{},opacity:{}})}},,,function(e,t,n){"use strict";var r=n(0);const i={ref:"form",class:"post-status-form"},o={class:"form-group"},s={key:1,class:"visibility-notice notice-dismissible"},a={key:2,class:"visibility-notice notice-dismissible"},c={key:3,class:"visibility-notice notice-dismissible"},l={key:4,class:"visibility-notice"},u={key:0},d={key:1},p={key:5,class:"preview-heading faint"},h={class:"preview-spinner"},b={key:6,class:"preview-container"},m={key:0,class:"preview-status"},f={key:1,class:"preview-status preview-error"},O=["placeholder","disabled"],j=["placeholder","disabled"],g={key:8,class:"visibility-tray"},v={key:0,class:"text-format"},y=["value"],w={key:1,class:"text-format"},k={class:"only-format"},_={ref:"bottom",class:"form-bottom"},S={class:"form-bottom-left"},C=["title"],P=["title"],x={key:0,disabled:"",class:"btn button-default"},D={key:1,disabled:"",class:"btn button-default"},T=["disabled"],I={key:1,class:"alert error"},$={key:3,class:"upload_settings"};var z=n(13),M=n.n(z),U=n(5),F=n.n(U),E=n(12),L=n.n(E),R=n(56),A=n.n(R),N=n(136),B=n.n(N),V=n(21),H=n.n(V),q=n(224),J=n.n(q),W=n(10),Y=n.n(W),G=n(76);const K=["title"],X=["disabled"];var Z=n(96),Q=n(6),ee=n(3);function te(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ne(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Q.c.add(ee.tb,ee.r);var re={data:function(){return{uploadCount:0,uploadReady:!0}},computed:{uploading:function(){return this.uploadCount>0}},methods:{uploadFile:function(e){var t=this,n=this.$store;if(e.size>n.state.instance.uploadlimit){var r=Z.a.fileSizeFormat(e.size),i=Z.a.fileSizeFormat(n.state.instance.uploadlimit);t.$emit("upload-failed","file_too_big",{filesize:r.num,filesizeunit:r.unit,allowedsize:i.num,allowedsizeunit:i.unit})}else{var o=new FormData;o.append("file",e),t.$emit("uploading"),t.uploadCount++,G.a.uploadMedia({store:n,formData:o}).then((function(e){t.$emit("uploaded",e),t.decreaseUploadCount()}),(function(e){t.$emit("upload-failed","default"),t.decreaseUploadCount()}))}},decreaseUploadCount:function(){this.uploadCount--,0===this.uploadCount&&this.$emit("all-uploaded")},clearFile:function(){var e=this;this.uploadReady=!1,this.$nextTick((function(){e.uploadReady=!0}))},multiUpload:function(e){var t,n=te(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.uploadFile(r)}}catch(e){n.e(e)}finally{n.f()}},change:function(e){var t=e.target;this.multiUpload(t.files)}},props:["dropFiles","disabled"],watch:{dropFiles:function(e){this.uploading||this.multiUpload(e)}}},ie=(n(500),n(4)),oe=n.n(ie);var se=oe()(re,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["media-upload",{disabled:e.disabled}]),title:e.$t("tool_tip.media_upload")},[e.uploading?(Object(r.D)(),Object(r.h)(a,{key:0,class:"progress-icon",icon:"circle-notch",spin:""})):Object(r.i)("",!0),e.uploading?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(a,{key:1,class:"new-icon",icon:"upload"})),e.uploadReady?(Object(r.D)(),Object(r.j)("input",{key:2,class:"hidden-input-file",disabled:e.disabled,type:"file",multiple:"true",onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},null,40,X)):Object(r.i)("",!0)],10,K)}]]),ae=n(175),ce=n(310);const le={key:0,class:"poll-form"},ue={class:"input-container"},de=["id","onUpdate:modelValue","placeholder","maxlength","onKeydown"],pe=["onClick"],he={class:"poll-type-expiry"},be=["title"],me={value:"single"},fe={value:"multiple"},Oe=["title"],je=["min","max"],ge=Object(r.l)(" "+Object(r.O)(" ")+" "),ve=["value"];var ye=n(98),we=n.n(ye),ke=n(47),_e=n(52);Q.c.add(ee.rb,ee.V);var Se={components:{Select:_e.a},name:"PollForm",props:["visible"],data:function(){return{pollType:"single",options:["",""],expiryAmount:10,expiryUnit:"minutes"}},computed:{pollLimits:function(){return this.$store.state.instance.pollLimits},maxOptions:function(){return this.pollLimits.max_options},maxLength:function(){return this.pollLimits.max_option_chars},expiryUnits:function(){var e=this,t=this.convertExpiryFromUnit;return["minutes","hours","days"].filter((function(n){return e.pollLimits.max_expiration>=t(n,1)}))},minExpirationInCurrentUnit:function(){return Math.ceil(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.min_expiration))},maxExpirationInCurrentUnit:function(){return Math.floor(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.max_expiration))}},methods:{clear:function(){this.pollType="single",this.options=["",""],this.expiryAmount=10,this.expiryUnit="minutes"},nextOption:function(e){var t=this.$el.querySelector("#poll-".concat(e+1));t?t.focus():this.addOption()&&this.$nextTick((function(){this.nextOption(e)}))},addOption:function(){return this.options.length<this.maxOptions&&(this.options.push(""),!0)},deleteOption:function(e,t){this.options.length>2&&(this.options.splice(e,1),this.updatePollToParent())},convertExpiryToUnit:function(e,t){switch(e){case"minutes":return 1e3*t/ke.c;case"hours":return 1e3*t/ke.b;case"days":return 1e3*t/ke.a}},convertExpiryFromUnit:function(e,t){switch(e){case"minutes":return.001*t*ke.c;case"hours":return.001*t*ke.b;case"days":return.001*t*ke.a}},expiryAmountChange:function(){this.expiryAmount=Math.max(this.minExpirationInCurrentUnit,this.expiryAmount),this.expiryAmount=Math.min(this.maxExpirationInCurrentUnit,this.expiryAmount),this.updatePollToParent()},updatePollToParent:function(){var e=this.convertExpiryFromUnit(this.expiryUnit,this.expiryAmount),t=we()(this.options.filter((function(e){return""!==e})));t.length<2?this.$emit("update-poll",{error:this.$t("polls.not_enough_options")}):this.$emit("update-poll",{options:t,multiple:"multiple"===this.pollType,expiresIn:e})}}};n(506);var Ce=oe()(Se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Select");return e.visible?(Object(r.D)(),Object(r.j)("div",le,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(n,i)=>(Object(r.D)(),Object(r.j)("div",{key:i,class:"poll-option"},[Object(r.k)("div",ue,[Object(r.W)(Object(r.k)("input",{id:"poll-"+i,"onUpdate:modelValue":t=>e.options[i]=t,size:"1",class:"poll-option-input",type:"text",placeholder:e.$t("polls.option"),maxlength:e.maxLength,onChange:t[0]||(t[0]=(...t)=>e.updatePollToParent&&e.updatePollToParent(...t)),onKeydown:Object(r.X)(Object(r.Y)(t=>e.nextOption(i),["stop","prevent"]),["enter"])},null,40,de),[[r.S,e.options[i]]])]),e.options.length>2?(Object(r.D)(),Object(r.j)("button",{key:0,class:"delete-option button-unstyled -hover-highlight",onClick:t=>e.deleteOption(i)},[Object(r.m)(a,{icon:"times"})],8,pe)):Object(r.i)("",!0)]))),128)),e.options.length<e.maxOptions?(Object(r.D)(),Object(r.j)("button",{key:0,class:"add-option faint button-unstyled -hover-highlight",onClick:t[1]||(t[1]=(...t)=>e.addOption&&e.addOption(...t))},[Object(r.m)(a,{icon:"plus",size:"sm"}),Object(r.l)(" "+Object(r.O)(e.$t("polls.add_option")),1)])):Object(r.i)("",!0),Object(r.k)("div",he,[Object(r.k)("div",{class:"poll-type",title:e.$t("polls.type")},[Object(r.m)(c,{modelValue:e.pollType,"onUpdate:modelValue":t[2]||(t[2]=t=>e.pollType=t),class:"poll-type-select",unstyled:"true",onChange:e.updatePollToParent},{default:Object(r.V)(()=>[Object(r.k)("option",me,Object(r.O)(e.$t("polls.single_choice")),1),Object(r.k)("option",fe,Object(r.O)(e.$t("polls.multiple_choices")),1)]),_:1},8,["modelValue","onChange"])],8,be),Object(r.k)("div",{class:"poll-expiry",title:e.$t("polls.expiry")},[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.expiryAmount=t),type:"number",class:"expiry-amount hide-number-spinner",min:e.minExpirationInCurrentUnit,max:e.maxExpirationInCurrentUnit,onChange:t[4]||(t[4]=(...t)=>e.expiryAmountChange&&e.expiryAmountChange(...t))},null,40,je),[[r.S,e.expiryAmount]]),ge,Object(r.m)(c,{modelValue:e.expiryUnit,"onUpdate:modelValue":t[5]||(t[5]=t=>e.expiryUnit=t),unstyled:"true",class:"expiry-unit",onChange:e.expiryAmountChange},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.expiryUnits,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`time.${t}_short`,[""])),9,ve))),128))]),_:1},8,["modelValue","onChange"])],8,Oe)])])):Object(r.i)("",!0)}]]),Pe=n(58),xe=n(78),De=n(45),Te=n(33),Ie=n(137),$e=n(167),ze=n(8),Me=n(51);function Ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ue(Object(n),!0).forEach((function(t){F()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Q.c.add(ee.ib,ee.X,ee.tb,ee.g,ee.rb,ee.r);var Ee=function(e){return Number(e.substring(0,e.length-2))},Le={props:["replyTo","repliedUser","attentions","copyMessageScope","subject","disableSubject","disableScopeSelector","disableNotice","disableLockWarning","disablePolls","disableSensitivityCheckbox","disableSubmit","disablePreview","placeholder","maxHeight","postHandler","preserveFocus","autoFocus","fileLimit","submitOnEnter","emojiPickerPlacement","optimisticPosting"],emits:["posted","resize","mediaplay","mediapause"],components:{MediaUpload:se,EmojiInput:ce.a,PollForm:Ce,ScopeSelector:ae.a,Checkbox:Me.a,Select:_e.a,Attachment:Pe.a,StatusContent:De.a,Gallery:xe.a},mounted:function(){if(this.updateIdempotencyKey(),this.resize(this.$refs.textarea),this.replyTo){var e=this.$refs.textarea.value.length;this.$refs.textarea.setSelectionRange(e,e)}(this.replyTo||this.autoFocus)&&this.$refs.textarea.focus()},data:function(){var e=this.$route.query.message||"",t=this.$store.getters.mergedConfig.scopeCopy;if(this.replyTo){var n=this.$store.state.users.currentUser;e=function(e,t){var n=e.user,r=e.attentions,i=void 0===r?[]:r,o=L()(i);o.unshift(n),o=B()(o,"id"),o=J()(o,{id:t.id});var s=H()(o,(function(e){return"@".concat(e.screen_name)}));return s.length>0?s.join(" ")+" ":""}({user:this.repliedUser,attentions:this.attentions},n)}var r=this.copyMessageScope&&t||"direct"===this.copyMessageScope?this.copyMessageScope:this.$store.state.users.currentUser.default_scope,i=this.$store.getters.mergedConfig,o=i.postContentType,s=i.sensitiveByDefault,a=i.sensitiveIfSubject;return{dropFiles:[],uploadingFiles:!1,error:null,posting:!1,highlighted:0,newStatus:{spoilerText:this.subject||"",status:e,sensitiveIfSubject:a,nsfw:!!s,files:[],poll:{},mediaDescriptions:{},visibility:r,contentType:o},caret:0,pollFormVisible:!1,showDropIcon:"hide",dropStopTimeout:null,preview:null,previewLoading:!1,emojiInputShown:!1,idempotencyKey:""}},computed:Fe(Fe({users:function(){return this.$store.state.users.users},userDefaultScope:function(){return this.$store.state.users.currentUser.default_scope},showAllScopes:function(){return!this.mergedConfig.minimalScopesMode},emojiUserSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji))})},emoji:function(){return this.$store.state.instance.emoji||[]},customEmoji:function(){return this.$store.state.instance.customEmoji||[]},statusLength:function(){return this.newStatus.status.length},spoilerTextLength:function(){return this.newStatus.spoilerText.length},statusLengthLimit:function(){return this.$store.state.instance.textlimit},hasStatusLengthLimit:function(){return this.statusLengthLimit>0},charactersLeft:function(){return this.statusLengthLimit-(this.statusLength+this.spoilerTextLength)},isOverLengthLimit:function(){return this.hasStatusLengthLimit&&this.charactersLeft<0},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},alwaysShowSubject:function(){return this.mergedConfig.alwaysShowSubjectInput},postFormats:function(){return this.$store.state.instance.postFormats||[]},safeDMEnabled:function(){return this.$store.state.instance.safeDM},pollsAvailable:function(){return this.$store.state.instance.pollsAvailable&&this.$store.state.instance.pollLimits.max_options>=2&&!0!==this.disablePolls},hideScopeNotice:function(){return this.disableNotice||this.$store.getters.mergedConfig.hideScopeNotice},pollContentError:function(){return this.pollFormVisible&&this.newStatus.poll&&this.newStatus.poll.error},showPreview:function(){return!this.disablePreview&&(!!this.preview||this.previewLoading)},emptyStatus:function(){return""===this.newStatus.status.trim()&&0===this.newStatus.files.length},uploadFileLimitReached:function(){return this.newStatus.files.length>=this.fileLimit}},Object(ze.c)(["mergedConfig"])),Object(ze.e)({mobileLayout:function(e){return e.interface.mobileLayout}})),watch:{newStatus:{deep:!0,handler:function(){this.statusChanged()}}},methods:{statusChanged:function(){this.autoPreview(),this.updateIdempotencyKey()},clearStatus:function(){var e=this,t=this.newStatus;this.newStatus={status:"",spoilerText:"",files:[],visibility:t.visibility,contentType:t.contentType,poll:{},mediaDescriptions:{}},this.pollFormVisible=!1,this.$refs.mediaUpload&&this.$refs.mediaUpload.clearFile(),this.clearPollForm(),this.preserveFocus&&this.$nextTick((function(){e.$refs.textarea.focus()}));var n=this.$el.querySelector("textarea");n.style.height="auto",n.style.height=void 0,this.error=null,this.preview&&this.previewStatus()},postStatus:function(e,t){var n=arguments,r=this;return M()(Y.a.mark((function i(){var o,s,a;return Y.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.length>2&&void 0!==n[2]?n[2]:{},o=r.$store.getters.mergedConfig.sensitiveIfSubject,!r.posting||r.optimisticPosting){i.next=4;break}return i.abrupt("return");case 4:if(!r.disableSubmit){i.next=6;break}return i.abrupt("return");case 6:if(!r.emojiInputShown){i.next=8;break}return i.abrupt("return");case 8:if(r.submitOnEnter&&(e.stopPropagation(),e.preventDefault()),!r.optimisticPosting||!r.emptyStatus&&!r.isOverLengthLimit){i.next=11;break}return i.abrupt("return");case 11:if(!r.emptyStatus){i.next=14;break}return r.error=r.$t("post_status.empty_status_error"),i.abrupt("return");case 14:if(s=r.pollFormVisible?r.newStatus.poll:{},!r.pollContentError){i.next=18;break}return r.error=r.pollContentError,i.abrupt("return");case 18:return r.posting=!0,i.prev=19,i.next=22,r.setAllMediaDescriptions();case 22:i.next=29;break;case 24:return i.prev=24,i.t0=i.catch(19),r.error=r.$t("post_status.media_description_error"),r.posting=!1,i.abrupt("return");case 29:a={status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw||o&&t.spoilerText,media:t.files,store:r.$store,inReplyToStatusId:r.replyTo,contentType:t.contentType,poll:s,idempotencyKey:r.idempotencyKey},(r.postHandler?r.postHandler:G.a.postStatus)(a).then((function(e){e.error?r.error=e.error:(r.clearStatus(),r.$emit("posted",e)),r.posting=!1}));case 32:case"end":return i.stop()}}),i,null,[[19,24]])})))()},previewStatus:function(){var e=this;if(this.emptyStatus&&""===this.newStatus.spoilerText.trim())return this.preview={error:this.$t("post_status.preview_empty")},void(this.previewLoading=!1);var t=this.newStatus;this.previewLoading=!0,G.a.postStatus({status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:[],store:this.$store,inReplyToStatusId:this.replyTo,contentType:t.contentType,poll:{},preview:!0}).then((function(t){e.previewLoading&&(t.error?e.preview={error:t.error}:e.preview=t)})).catch((function(t){e.preview={error:t}})).finally((function(){e.previewLoading=!1}))},debouncePreviewStatus:A()((function(){this.previewStatus()}),500),autoPreview:function(){this.preview&&(this.previewLoading=!0,this.debouncePreviewStatus())},closePreview:function(){this.preview=null,this.previewLoading=!1},togglePreview:function(){this.showPreview?this.closePreview():this.previewStatus()},addMediaFile:function(e){this.newStatus.files.push(e),this.$emit("resize",{delayed:!0})},removeMediaFile:function(e){var t=this.newStatus.files.indexOf(e);this.newStatus.files.splice(t,1),this.$emit("resize")},editAttachment:function(e,t){this.newStatus.mediaDescriptions[e.id]=t},shiftUpMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n-1,0,e)},shiftDnMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n+1,0,e)},uploadFailed:function(e,t){t=t||{},this.error=this.$t("upload.error.base")+" "+this.$t("upload.error."+e,t)},startedUploadingFiles:function(){this.uploadingFiles=!0},finishedUploadingFiles:function(){this.$emit("resize"),this.uploadingFiles=!1},type:function(e){return Te.a.fileType(e.mimetype)},paste:function(e){this.autoPreview(),this.resize(e),e.clipboardData.files.length>0&&(e.preventDefault(),this.dropFiles=[e.clipboardData.files[0]])},fileDrop:function(e){e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),this.dropFiles=e.dataTransfer.files,clearTimeout(this.dropStopTimeout),this.showDropIcon="hide")},fileDragStop:function(e){var t=this;clearTimeout(this.dropStopTimeout),this.showDropIcon="fade",this.dropStopTimeout=setTimeout((function(){return t.showDropIcon="hide"}),500)},fileDrag:function(e){e.dataTransfer.dropEffect=this.uploadFileLimitReached?"none":"copy",e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(clearTimeout(this.dropStopTimeout),this.showDropIcon="show")},onEmojiInputInput:function(e){var t=this;this.$nextTick((function(){t.resize(t.$refs.textarea)}))},resize:function(e){var t=e.target||e;if(t instanceof window.Element){if(""===t.value)return t.style.height=null,this.$emit("resize"),void this.$refs["emoji-input"].resize();var n=this.$refs.form,r=this.$refs.bottom,i=window.getComputedStyle(r)["padding-bottom"],o=Ee(i),s=this.$el.closest(".column.-scrollable")||this.$el.closest(".post-form-modal-view")||window,a=window.getComputedStyle(t)["padding-top"],c=window.getComputedStyle(t)["padding-bottom"],l=Ee(a)+Ee(c),u=Ee(t.style.height),d=s===window?s.scrollY:s.scrollTop,p=s===window?s.innerHeight:s.offsetHeight,h=d+p;t.style.height="auto";var b=Math.floor(t.scrollHeight-l),m=this.maxHeight?Math.min(b,this.maxHeight):b;Math.abs(m-u)<=1&&(m=u),t.style.height="".concat(m,"px"),this.$emit("resize",m);var f=r.offsetHeight+Object(Ie.a)(r,s).top+o,O=h<f,j=p<n.offsetHeight,g=f-h,v=O&&!(j&&this.$refs.textarea.selectionStart!==this.$refs.textarea.value.length)?g:0,y=Math.round(d+v);s===window?s.scroll(0,y):s.scrollTop=y,this.$refs["emoji-input"].resize()}},showEmojiPicker:function(){this.$refs.textarea.focus(),this.$refs["emoji-input"].triggerShowPicker()},clearError:function(){this.error=null},changeVis:function(e){this.newStatus.visibility=e},togglePollForm:function(){this.pollFormVisible=!this.pollFormVisible},setPoll:function(e){this.newStatus.poll=e},clearPollForm:function(){this.$refs.pollForm&&this.$refs.pollForm.clear()},dismissScopeNotice:function(){this.$store.dispatch("setOption",{name:"hideScopeNotice",value:!0})},setMediaDescription:function(e){var t=this.newStatus.mediaDescriptions[e];if(t&&""!==t.trim())return G.a.setMediaDescription({store:this.$store,id:e,description:t})},setAllMediaDescriptions:function(){var e=this,t=this.newStatus.files.map((function(e){return e.id}));return Promise.all(t.map((function(t){return e.setMediaDescription(t)})))},handleEmojiInputShow:function(e){this.emojiInputShown=e},updateIdempotencyKey:function(){this.idempotencyKey=Date.now().toString()},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")}}};n(524);const Re=oe()(Le,[["render",function(e,t,n,z,M,U){const F=Object(r.J)("i18n-t"),E=Object(r.J)("FAIcon"),L=Object(r.J)("StatusContent"),R=Object(r.J)("EmojiInput"),A=Object(r.J)("scope-selector"),N=Object(r.J)("Select"),B=Object(r.J)("poll-form"),V=Object(r.J)("media-upload"),H=Object(r.J)("gallery"),q=Object(r.J)("Checkbox");return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{autocomplete:"off",onSubmit:t[26]||(t[26]=Object(r.Y)(()=>{},["prevent"])),onDragover:t[27]||(t[27]=Object(r.Y)((...t)=>e.fileDrag&&e.fileDrag(...t),["prevent"]))},[Object(r.k)("div",o,[e.$store.state.users.currentUser.locked||"private"!=e.newStatus.visibility||e.disableLockWarning?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(F,{key:0,keypath:"post_status.account_not_locked_warning",tag:"p",class:"visibility-notice",scope:"global"},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=(...t)=>e.openProfileTab&&e.openProfileTab(...t))},Object(r.O)(e.$t("post_status.account_not_locked_warning_link")),1)]),_:1})),e.hideScopeNotice||"public"!==e.newStatus.visibility?e.hideScopeNotice||"unlisted"!==e.newStatus.visibility?!e.hideScopeNotice&&"private"===e.newStatus.visibility&&e.$store.state.users.currentUser.locked?(Object(r.D)(),Object(r.j)("p",c,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.private")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[3]||(t[3]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):"direct"===e.newStatus.visibility?(Object(r.D)(),Object(r.j)("p",l,[e.safeDMEnabled?(Object(r.D)(),Object(r.j)("span",u,Object(r.O)(e.$t("post_status.direct_warning_to_first_only")),1)):(Object(r.D)(),Object(r.j)("span",d,Object(r.O)(e.$t("post_status.direct_warning_to_all")),1))])):Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("p",a,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.unlisted")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[2]||(t[2]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):(Object(r.D)(),Object(r.j)("p",s,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.public")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])),e.disablePreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",p,[Object(r.k)("a",{class:"preview-toggle faint",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.togglePreview&&e.togglePreview(...t),["stop","prevent"]))},[Object(r.l)(Object(r.O)(e.$t("post_status.preview"))+" ",1),Object(r.m)(E,{icon:e.showPreview?"chevron-left":"chevron-right"},null,8,["icon"])]),Object(r.W)(Object(r.k)("div",h,[Object(r.m)(E,{class:"fa-old-padding",spin:"",icon:"circle-notch"})],512),[[r.T,e.previewLoading]])])),e.showPreview?(Object(r.D)(),Object(r.j)("div",b,[e.preview?e.preview.error?(Object(r.D)(),Object(r.j)("div",f,Object(r.O)(e.preview.error),1)):(Object(r.D)(),Object(r.h)(L,{key:2,status:e.preview,class:"preview-status"},null,8,["status"])):(Object(r.D)(),Object(r.j)("div",m,Object(r.O)(e.$t("general.loading")),1))])):Object(r.i)("",!0),e.disableSubject||!e.newStatus.spoilerText&&!e.alwaysShowSubject?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(R,{key:7,modelValue:e.newStatus.spoilerText,"onUpdate:modelValue":t[6]||(t[6]=t=>e.newStatus.spoilerText=t),"enable-emoji-picker":"",suggest:e.emojiSuggestor,class:"form-control"},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[5]||(t[5]=t=>e.newStatus.spoilerText=t),type:"text",placeholder:e.$t("post_status.content_warning"),disabled:e.posting&&!e.optimisticPosting,size:"1",class:"form-post-subject"},null,8,O),[[r.S,e.newStatus.spoilerText]])]),_:1},8,["modelValue","suggest"])),Object(r.m)(R,{ref:"emoji-input",modelValue:e.newStatus.status,"onUpdate:modelValue":t[14]||(t[14]=t=>e.newStatus.status=t),suggest:e.emojiUserSuggestor,placement:e.emojiPickerPlacement,class:"form-control main-input","enable-emoji-picker":"","hide-emoji-button":"","newline-on-ctrl-enter":e.submitOnEnter,"enable-sticker-picker":"",onInput:e.onEmojiInputInput,onStickerUploaded:e.addMediaFile,onStickerUploadFailed:e.uploadFailed,onShown:e.handleEmojiInputShow},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("textarea",{ref:"textarea","onUpdate:modelValue":t[7]||(t[7]=t=>e.newStatus.status=t),placeholder:e.placeholder||e.$t("post_status.default"),rows:"1",cols:"1",disabled:e.posting&&!e.optimisticPosting,class:Object(r.w)(["form-post-body",{"scrollable-form":!!e.maxHeight}]),onKeydown:[t[8]||(t[8]=Object(r.X)(Object(r.Y)(t=>e.submitOnEnter&&e.postStatus(t,e.newStatus),["exact"]),["enter"])),t[9]||(t[9]=Object(r.X)(Object(r.Y)(t=>e.postStatus(t,e.newStatus),["meta"]),["enter"])),t[10]||(t[10]=Object(r.X)(Object(r.Y)(t=>!e.submitOnEnter&&e.postStatus(t,e.newStatus),["ctrl"]),["enter"]))],onInput:t[11]||(t[11]=(...t)=>e.resize&&e.resize(...t)),onCompositionupdate:t[12]||(t[12]=(...t)=>e.resize&&e.resize(...t)),onPaste:t[13]||(t[13]=(...t)=>e.paste&&e.paste(...t))},null,42,j),[[r.S,e.newStatus.status]]),e.hasStatusLengthLimit?(Object(r.D)(),Object(r.j)("p",{key:0,class:Object(r.w)(["character-counter faint",{error:e.isOverLengthLimit}])},Object(r.O)(e.charactersLeft),3)):Object(r.i)("",!0)]),_:1},8,["modelValue","suggest","placement","newline-on-ctrl-enter","onInput","onStickerUploaded","onStickerUploadFailed","onShown"]),e.disableScopeSelector?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.m)(A,{"show-all":e.showAllScopes,"user-default":e.userDefaultScope,"original-scope":e.copyMessageScope,"initial-scope":e.newStatus.visibility,"on-scope-change":e.changeVis},null,8,["show-all","user-default","original-scope","initial-scope","on-scope-change"]),e.postFormats.length>1?(Object(r.D)(),Object(r.j)("div",v,[Object(r.m)(N,{id:"post-content-type",modelValue:e.newStatus.contentType,"onUpdate:modelValue":t[15]||(t[15]=t=>e.newStatus.contentType=t),class:"form-control"},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.postFormats,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`post_status.content_type["${t}"]`)),9,y))),128))]),_:1},8,["modelValue"])])):Object(r.i)("",!0),1===e.postFormats.length&&"text/plain"!==e.postFormats[0]?(Object(r.D)(),Object(r.j)("div",w,[Object(r.k)("span",k,Object(r.O)(e.$t(`post_status.content_type["${e.postFormats[0]}"]`)),1)])):Object(r.i)("",!0)]))]),e.pollsAvailable?(Object(r.D)(),Object(r.h)(B,{key:0,ref:"pollForm",visible:e.pollFormVisible,onUpdatePoll:e.setPoll},null,8,["visible","onUpdatePoll"])):Object(r.i)("",!0),Object(r.k)("div",_,[Object(r.k)("div",S,[Object(r.m)(V,{ref:"mediaUpload",class:"media-upload-icon","drop-files":e.dropFiles,disabled:e.uploadFileLimitReached,onUploading:e.startedUploadingFiles,onUploaded:e.addMediaFile,onUploadFailed:e.uploadFailed,onAllUploaded:e.finishedUploadingFiles},null,8,["drop-files","disabled","onUploading","onUploaded","onUploadFailed","onAllUploaded"]),Object(r.k)("button",{class:"emoji-icon button-unstyled",title:e.$t("emoji.add_emoji"),onClick:t[16]||(t[16]=(...t)=>e.showEmojiPicker&&e.showEmojiPicker(...t))},[Object(r.m)(E,{icon:"smile-beam"})],8,C),e.pollsAvailable?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["poll-icon button-unstyled",{selected:e.pollFormVisible}]),title:e.$t("polls.add_poll"),onClick:t[17]||(t[17]=(...t)=>e.togglePollForm&&e.togglePollForm(...t))},[Object(r.m)(E,{icon:"poll-h"})],10,P)):Object(r.i)("",!0)]),e.posting?(Object(r.D)(),Object(r.j)("button",x,Object(r.O)(e.$t("post_status.posting")),1)):e.isOverLengthLimit?(Object(r.D)(),Object(r.j)("button",D,Object(r.O)(e.$t("post_status.post")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,disabled:e.uploadingFiles||e.disableSubmit,class:"btn button-default",onTouchstart:t[18]||(t[18]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"])),onClick:t[19]||(t[19]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"]))},Object(r.O)(e.$t("post_status.post")),41,T))],512),Object(r.W)(Object(r.k)("div",{style:Object(r.x)({animation:"show"===e.showDropIcon?"fade-in 0.25s":"fade-out 0.5s"}),class:"drop-indicator",onDragleave:t[20]||(t[20]=(...t)=>e.fileDragStop&&e.fileDragStop(...t)),onDrop:t[21]||(t[21]=Object(r.Y)((...t)=>e.fileDrop&&e.fileDrop(...t),["stop"]))},[Object(r.m)(E,{icon:e.uploadFileLimitReached?"ban":"upload"},null,8,["icon"])],36),[[r.T,"hide"!==e.showDropIcon]]),e.error?(Object(r.D)(),Object(r.j)("div",I,[Object(r.l)(" Error: "+Object(r.O)(e.error)+" ",1),Object(r.k)("button",{class:"button-unstyled",onClick:t[22]||(t[22]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(E,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])):Object(r.i)("",!0),e.newStatus.files&&e.newStatus.files.length>0?(Object(r.D)(),Object(r.h)(H,{key:2,class:"attachments",grid:!0,nsfw:!1,attachments:e.newStatus.files,descriptions:e.newStatus.mediaDescriptions,"set-media":()=>e.$store.dispatch("setMedia",e.newStatus.files),editable:!0,"edit-attachment":e.editAttachment,"remove-attachment":e.removeMediaFile,"shift-up-attachment":e.newStatus.files.length>1&&e.shiftUpMediaFile,"shift-dn-attachment":e.newStatus.files.length>1&&e.shiftDnMediaFile,onPlay:t[23]||(t[23]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[24]||(t[24]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["attachments","descriptions","set-media","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment"])):Object(r.i)("",!0),e.newStatus.files.length>0&&!e.disableSensitivityCheckbox?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(q,{modelValue:e.newStatus.nsfw,"onUpdate:modelValue":t[25]||(t[25]=t=>e.newStatus.nsfw=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("post_status.attachments_sensitive")),1)]),_:1},8,["modelValue"])])):Object(r.i)("",!0)],32)],512)}]]);t.a=Re},function(e,t,n){"use strict";var r=n(0);const i=["href","alt","title"],o={key:1,class:"attachment-buttons"},s=["placeholder"],a={key:1},c={class:"attachment-wrapper"},l=["href","alt","title"],u=["src"],d={key:1,class:"attachment-buttons"},p=["title"],h=["title"],b=["title"],m=["title"],f=["title"],O=["title"],j=["title"],g=["href"],v=["href"],y=["href"],w=["src","alt","title"],k={key:0,class:"image"},_=["src"],S={class:"text"},C=["href"],P=["innerHTML"],x=["href"],D=["placeholder"],T={key:1};var I=n(5),$=n.n(I),z=n(50),M=n(139),U=n(141),F=n(327),E=n.n(F),L=n(33),R=n(8),A=n(6),N=n(3);function B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}A.c.add(N.D,N.Q,N.K,N.xb,N.U,N.rb,N.lb,N.db,N.sb,N.T,N.b);var V={props:["attachment","description","hideDescription","nsfw","size","setMedia","remove","shiftUp","shiftDn","edit"],data:function(){return{localDescription:this.description||this.attachment.description,nsfwImage:this.$store.state.instance.nsfwCensorImage||E.a,hideNsfwLocal:this.$store.getters.mergedConfig.hideNsfw,preloadImage:this.$store.getters.mergedConfig.preloadImage,loading:!1,img:"image"===L.a.fileType(this.attachment.mimetype)&&document.createElement("img"),modalOpen:!1,showHidden:!1,flashLoaded:!1,showDescription:!1}},components:{Flash:M.a,StillImage:z.a,VideoAttachment:U.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?B(Object(n),!0).forEach((function(t){$()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classNames:function(){return[{"-loading":this.loading,"-nsfw-placeholder":this.hidden,"-editable":void 0!==this.edit},"-type-"+this.type,this.size&&"-size-"+this.size,"-".concat(this.useContainFit?"contain":"cover","-fit")]},usePlaceholder:function(){return"hide"===this.size},useContainFit:function(){return this.$store.getters.mergedConfig.useContainFit},placeholderName:function(){return""!==this.attachment.description&&this.attachment.description?this.attachment.description:this.type.toUpperCase()},placeholderIconClass:function(){return"image"===this.type?"image":"video"===this.type?"video":"audio"===this.type?"music":"file"},referrerpolicy:function(){return this.$store.state.instance.mediaProxyAvailable?"":"no-referrer"},type:function(){return L.a.fileType(this.attachment.mimetype)},hidden:function(){return this.nsfw&&this.hideNsfwLocal&&!this.showHidden},isEmpty:function(){return"html"===this.type&&!this.attachment.oembed},useModal:function(){var e=[];switch(this.size){case"hide":case"small":e=["image","video","audio","flash"];break;default:e=this.mergedConfig.playVideosInModal?["image","video","flash"]:["image"]}return e.includes(this.type)},videoTag:function(){return this.useModal?"button":"span"}},Object(R.c)(["mergedConfig"])),watch:{localDescription:function(e){this.onEdit(e)}},methods:{linkClicked:function(e){var t=e.target;"A"===t.tagName&&window.open(t.href,"_blank")},openModal:function(e){this.useModal?(this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)):"unknown"===this.type&&window.open(this.attachment.url)},openModalForce:function(e){this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)},onEdit:function(e){this.edit&&this.edit(this.attachment,e)},onRemove:function(){this.remove&&this.remove(this.attachment)},onShiftUp:function(){this.shiftUp&&this.shiftUp(this.attachment)},onShiftDn:function(){this.shiftDn&&this.shiftDn(this.attachment)},stopFlash:function(){this.$refs.flash.closePlayer()},setFlashLoaded:function(e){this.flashLoaded=e},toggleDescription:function(){this.showDescription=!this.showDescription},toggleHidden:function(e){var t=this;!this.mergedConfig.useOneClickNsfw||this.showHidden||"video"===this.type&&!this.mergedConfig.playVideosInModal?this.img&&!this.preloadImage?this.img.onload?this.img.onload():(this.loading=!0,this.img.src=this.attachment.url,this.img.onload=function(){t.loading=!1,t.showHidden=!t.showHidden}):this.showHidden=!this.showHidden:this.openModal(e)},onImageLoad:function(e){var t=e.naturalWidth,n=e.naturalHeight;this.$emit("naturalSizeLoad",{id:this.attachment.id,width:t,height:n})}}},H=(n(509),n(4));const q=n.n(H)()(V,[["render",function(e,t,n,I,$,z){const M=Object(r.J)("FAIcon"),U=Object(r.J)("StillImage"),F=Object(r.J)("VideoAttachment"),E=Object(r.J)("Flash");return e.usePlaceholder?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["Attachment -placeholder button-unstyled",e.classNames]),onClick:t[4]||(t[4]=(...t)=>e.openModal&&e.openModal(...t))},["html"!==e.type?(Object(r.D)(),Object(r.j)("a",{key:0,class:"placeholder",target:"_blank",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["prevent"]))},[Object(r.m)(M,{icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("b",null,Object(r.O)(e.nsfw?"NSFW / ":""),1),Object(r.l)(Object(r.O)(e.edit?"":e.placeholderName),1)],8,i)):Object(r.i)("",!0),e.edit||e.remove?(Object(r.D)(),Object(r.j)("div",o,[e.remove?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})])):Object(r.i)("",!0)])):Object(r.i)("",!0),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription||e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[2]||(t[2]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[3]||(t[3]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,s)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",a,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2)):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Attachment",e.classNames])},[Object(r.W)(Object(r.k)("div",c,[e.hidden?(Object(r.D)(),Object(r.j)("a",{key:0,class:"image-container",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[(Object(r.D)(),Object(r.j)("img",{key:e.nsfwImage,class:"nsfw",src:e.nsfwImage},null,8,u)),"video"===e.type?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)],8,l)):Object(r.i)("",!0),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",d,["flash"===e.type&&e.flashLoaded?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",title:e.$t("status.attachment_stop_flash"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.stopFlash&&e.stopFlash(...t),["prevent"]))},[Object(r.m)(M,{icon:"stop"})],8,p)):Object(r.i)("",!0),e.attachment.description&&"small"!==e.size&&!e.edit&&"unknown"!==e.type?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_description"),onClick:t[7]||(t[7]=Object(r.Y)((...t)=>e.toggleDescription&&e.toggleDescription(...t),["prevent"]))},[Object(r.m)(M,{icon:"align-right"})],8,h)):Object(r.i)("",!0),e.useModal||"unknown"===e.type?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_in_modal"),onClick:t[8]||(t[8]=Object(r.Y)((...t)=>e.openModalForce&&e.openModalForce(...t),["prevent"]))},[Object(r.m)(M,{icon:"search-plus"})],8,b)),e.nsfw&&e.hideNsfwLocal?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled attachment-button",title:e.$t("status.hide_attachment"),onClick:t[9]||(t[9]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent"]))},[Object(r.m)(M,{icon:"times"})],8,m)):Object(r.i)("",!0),e.shiftUp?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled attachment-button",title:e.$t("status.move_up"),onClick:t[10]||(t[10]=Object(r.Y)((...t)=>e.onShiftUp&&e.onShiftUp(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-left"})],8,f)):Object(r.i)("",!0),e.shiftDn?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-unstyled attachment-button",title:e.$t("status.move_down"),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.onShiftDn&&e.onShiftDn(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-right"})],8,O)):Object(r.i)("",!0),e.remove?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-unstyled attachment-button",title:e.$t("status.remove_attachment"),onClick:t[12]||(t[12]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})],8,j)):Object(r.i)("",!0)])),"image"!==e.type||e.hidden&&!e.preloadImage?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:2,class:Object(r.w)(["image-container",{"-hidden":e.hidden&&e.preloadImage}]),href:e.attachment.url,target:"_blank",onClick:t[13]||(t[13]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(U,{class:"image",referrerpolicy:e.referrerpolicy,mimetype:e.attachment.mimetype,src:e.attachment.large_thumb_url||e.attachment.url,"image-load-handler":e.onImageLoad,alt:e.attachment.description},null,8,["referrerpolicy","mimetype","src","image-load-handler","alt"])],10,g)),"unknown"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:3,class:"placeholder-container",href:e.attachment.url,target:"_blank"},[Object(r.m)(M,{size:"5x",icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("p",null,Object(r.O)(e.localDescription),1)],8,v)),"video"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(Object(r.L)(e.videoTag),{key:4,class:Object(r.w)(["video-container",{"button-unstyled":"isModal"}]),href:e.attachment.url,onClick:Object(r.Y)(e.openModal,["stop","prevent"])},{default:Object(r.V)(()=>[Object(r.m)(F,{class:"video",attachment:e.attachment,controls:!e.useModal,onPlay:t[14]||(t[14]=t=>e.$emit("play")),onPause:t[15]||(t[15]=t=>e.$emit("pause"))},null,8,["attachment","controls"]),e.useModal?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)]),_:1},8,["href","onClick"])),"audio"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:5,class:"audio-container",href:e.attachment.url,onClick:t[18]||(t[18]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},["audio"===e.type?(Object(r.D)(),Object(r.j)("audio",{key:0,src:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,controls:"",onPlay:t[16]||(t[16]=t=>e.$emit("play")),onPause:t[17]||(t[17]=t=>e.$emit("pause"))},null,40,w)):Object(r.i)("",!0)],8,y)),"html"===e.type&&e.attachment.oembed?(Object(r.D)(),Object(r.j)("div",{key:6,class:"oembed-container",onClick:t[19]||(t[19]=Object(r.Y)((...t)=>e.linkClicked&&e.linkClicked(...t),["prevent"]))},[e.attachment.thumb_url?(Object(r.D)(),Object(r.j)("div",k,[Object(r.k)("img",{src:e.attachment.thumb_url},null,8,_)])):Object(r.i)("",!0),Object(r.k)("div",S,[Object(r.k)("h1",null,[Object(r.k)("a",{href:e.attachment.url},Object(r.O)(e.attachment.oembed.title),9,C)]),Object(r.k)("div",{innerHTML:e.attachment.oembed.oembedHTML},null,8,P)])])):Object(r.i)("",!0),"flash"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:7,class:"flash-container",href:e.attachment.url,onClick:t[22]||(t[22]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(E,{ref:"flash",class:"flash",src:e.attachment.large_thumb_url||e.attachment.url,onPlayerOpened:t[20]||(t[20]=t=>e.setFlashLoaded(!0)),onPlayerClosed:t[21]||(t[21]=t=>e.setFlashLoaded(!1))},null,8,["src"])],8,x))],512),[[r.T,!e.isEmpty]]),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription&&e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[24]||(t[24]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,D)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",T,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2))}]]);t.a=q},function(e,t,n){"use strict";var r=n(0);const i=["datetime","title"];var o=n(47),s=n(38),a={name:"Timeago",props:["time","autoUpdate","longFormat","nowThreshold"],data:function(){return{relativeTime:{key:"time.now",num:0},interval:null}},computed:{localeDateString:function(){var e=s.a.internalToBrowserLocale(this.$i18n.locale);return"string"==typeof this.time?new Date(Date.parse(this.time)).toLocaleString(e):this.time.toLocaleString(e)}},created:function(){this.refreshRelativeTimeObject()},unmounted:function(){clearTimeout(this.interval)},methods:{refreshRelativeTimeObject:function(){var e="number"==typeof this.nowThreshold?this.nowThreshold:1;this.relativeTime=this.longFormat?o.d(this.time,e):o.e(this.time,e),this.autoUpdate&&(this.interval=setTimeout(this.refreshRelativeTimeObject,1e3*this.autoUpdate))}}},c=n(4);const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("time",{datetime:n.time,title:a.localeDateString},Object(r.O)(e.$t(s.relativeTime.key,[s.relativeTime.num])),9,i)}]]);t.a=l},,,,,,,,,,function(e,t,n){"use strict";var r=n(0);const i={class:"list"},o={key:0,class:"list-empty-content faint"};var s={props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}}},a=(n(562),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(n.items,t=>(Object(r.D)(),Object(r.j)("div",{key:n.getKey(t),class:"list-item"},[Object(r.I)(e.$slots,"item",{item:t})]))),128)),0===n.items.length&&e.$slots.empty?(Object(r.D)(),Object(r.j)("div",o,[Object(r.I)(e.$slots,"empty")])):Object(r.i)("",!0)])}]]);t.a=c},function(e,t,n){"use strict";var r,i=n(13),o=n.n(i),s=n(12),a=n.n(s),c=n(10),l=n.n(c),u={ar:function(){return n.e(5).then(n.bind(null,595))},ca:function(){return n.e(6).then(n.bind(null,596))},cs:function(){return n.e(7).then(n.bind(null,597))},de:function(){return n.e(8).then(n.bind(null,598))},eo:function(){return n.e(9).then(n.bind(null,599))},es:function(){return n.e(10).then(n.bind(null,600))},et:function(){return n.e(11).then(n.bind(null,601))},eu:function(){return n.e(12).then(n.bind(null,602))},fi:function(){return n.e(13).then(n.bind(null,603))},fr:function(){return n.e(14).then(n.bind(null,604))},ga:function(){return n.e(15).then(n.bind(null,605))},he:function(){return n.e(16).then(n.bind(null,606))},hu:function(){return n.e(17).then(n.bind(null,607))},it:function(){return n.e(18).then(n.bind(null,608))},ja:function(){return n.e(20).then(n.bind(null,609))},ja_easy:function(){return n.e(19).then(n.bind(null,610))},ko:function(){return n.e(21).then(n.bind(null,611))},nb:function(){return n.e(22).then(n.bind(null,612))},nl:function(){return n.e(23).then(n.bind(null,613))},oc:function(){return n.e(24).then(n.bind(null,614))},pl:function(){return n.e(25).then(n.bind(null,615))},pt:function(){return n.e(26).then(n.bind(null,616))},ro:function(){return n.e(27).then(n.bind(null,617))},ru:function(){return n.e(28).then(n.bind(null,618))},te:function(){return n.e(29).then(n.bind(null,619))},uk:function(){return n.e(30).then(n.bind(null,620))},zh:function(){return n.e(31).then(n.bind(null,621))},zh_Hant:function(){return n.e(32).then(n.bind(null,622))}},d={languages:["en"].concat(a()(Object.keys(u))),default:{en:n(442).default},setLanguage:(r=o()(l.a.mark((function e(t,n){var r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u[n]){e.next=5;break}return e.next=3,u[n]();case 3:r=e.sent,t.setLocaleMessage(n,r.default);case 5:t.locale=n;case 6:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)})};t.a=d},function(e,t,n){"use strict";var r=n(5),i=n.n(r),o=n(0),s=n(8),a=n(68);n(574);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var l=function(e){return e.findIndex((function(e){return e.props}))};t.a={name:"TabSwitcher",props:{renderOnlyFocused:{required:!1,type:Boolean,default:!1},onSwitch:{required:!1,type:Function,default:void 0},activeTab:{required:!1,type:String,default:void 0},scrollableTabs:{required:!1,type:Boolean,default:!1},sideTabBar:{required:!1,type:Boolean,default:!1},bodyScrollLock:{required:!1,type:Boolean,default:!1}},data:function(){return{active:l(this.slots())}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({activeIndex:function(){var e=this;return this.activeTab?this.slots().findIndex((function(t){return t&&t.props&&e.activeTab===t.props.key})):this.active},isActive:function(){var e=this;return function(t){return e.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}))===e.activeIndex}},settingsModalVisible:function(){return"visible"===this.settingsModalState}},Object(s.e)({settingsModalState:function(e){return e.interface.settingsModalState}})),beforeUpdate:function(){this.slots()[this.active].props||(this.active=l(this.slots()))},methods:{clickTab:function(e){var t=this;return function(n){n.preventDefault(),t.setTab(e)}},slots:function(){return this.$slots.default()[0].type===o.a?this.$slots.default()[0].children:this.$slots.default()},setTab:function(e){"function"==typeof this.onSwitch&&this.onSwitch.call(null,this.slots()[e].key),this.active=e,this.scrollableTabs&&(this.$refs.contents.scrollTop=0)}},render:function(){var e=this,t=this.slots().map((function(t,n){var r=t.props;if(r){var i=["tab","button-default"],s=["tab-wrapper"];return e.activeIndex===n&&(i.push("active"),s.push("active")),r.image?Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[Object(o.m)("img",{src:r.image,title:r["image-tooltip"]},null),r.label?"":r.label])]):Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[r.icon?Object(o.m)(a.a,{class:"tab-icon",size:"2x","fixed-width":!0,icon:r.icon},null):"",Object(o.m)("span",{class:"text"},[r.label])])])}})),n=this.slots().map((function(t,n){var r=t.props;if(r){var i=e.activeIndex===n,s=[i?"active":"hidden"];r.fullHeight&&s.push("full-height");var a=!e.renderOnlyFocused||i?t:"";return Object(o.m)("div",{class:s},[e.sideTabBar?Object(o.m)("h1",{class:"mobile-label"},[r.label]):"",a])}}));return Object(o.m)("div",{class:"tab-switcher "+(this.sideTabBar?"side-tabs":"top-tabs")},[Object(o.m)("div",{class:"tabs"},[t]),Object(o.W)(Object(o.m)("div",{ref:"contents",class:"contents"+(this.scrollableTabs?" scrollable-tabs":"")},[n]),[[Object(o.K)("body-scroll-lock"),this.bodyScrollLock]])])}}},,,,,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(15),s={postStatus:function(e){var t=e.store,n=e.status,r=e.spoilerText,s=e.visibility,a=e.sensitive,c=e.poll,l=e.media,u=void 0===l?[]:l,d=e.inReplyToStatusId,p=void 0===d?void 0:d,h=e.contentType,b=void 0===h?"text/plain":h,m=e.preview,f=void 0!==m&&m,O=e.idempotencyKey,j=void 0===O?"":O,g=i()(u,"id");return o.c.postStatus({credentials:t.state.users.currentUser.credentials,status:n,spoilerText:r,visibility:s,sensitive:a,mediaIds:g,inReplyToStatusId:p,contentType:b,poll:c,preview:f,idempotencyKey:j}).then((function(e){return e.error||f||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return{error:e.message}}))},uploadMedia:function(e){var t=e.store,n=e.formData,r=t.state.users.currentUser.credentials;return o.c.uploadMedia({credentials:r,formData:n})},setMediaDescription:function(e){var t=e.store,n=e.id,r=e.description,i=t.state.users.currentUser.credentials;return o.c.setMediaDescription({credentials:i,id:n,description:r})}};t.a=s},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"notifications-heading panel-heading -sticky"},o={class:"title"},s={key:0,class:"badge badge-notification unseen-count"},a={class:"panel-body"},c=Object(r.k)("div",{class:"notification-overlay"},null,-1),l={class:"panel-footer"},u={key:0,class:"new-status-notification text-center faint"},d={class:"new-status-notification text-center"},p={key:2,class:"new-status-notification text-center"};var h=n(5),b=n.n(h),m=n(8);const f={key:1},O={key:0,class:"Notification container -muted"},j=["href"],g={class:"notification-right"},v={class:"notification-details"},y={class:"name-and-action"},w={key:0},k=["title"],_=Object(r.l)(" "+Object(r.O)(" ")+" "),S={key:2},C=Object(r.l)(" "+Object(r.O)(" ")+" "),P={key:3},x=Object(r.l)(" "+Object(r.O)(" ")+" "),D={key:4},T=Object(r.l)(" "+Object(r.O)(" ")+" "),I={key:5},$=Object(r.l)(" "+Object(r.O)(" ")+" "),z={key:6},M=Object(r.l)(" "+Object(r.O)(" ")+" "),U={key:7},F=["src","name"],E={key:1,class:"emoji-reaction-emoji"},L={key:8},R=Object(r.l)(" "+Object(r.O)(" ")+" "),A={key:0,class:"timeago"},N={key:1,class:"timeago"},B={class:"faint"},V={key:1,class:"follow-text"},H={key:0,style:{"white-space":"nowrap"}},q=["title"],J=["title"],W={key:2,class:"move-text"};var Y=n(45),G=n(34),K=n(22),X=n(35),Z=n(59),Q=n(25),ee=n(26),te=n(31),ne=n(23),re=n(6),ie=n(3);function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.m,ie.rb,ie.jb,ie.Z,ie.vb,ie.ub,ie.C,ie.nb);var se={data:function(){return{userExpanded:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,unmuted:!1}},props:["notification"],components:{StatusContent:Y.a,UserAvatar:K.default,UserCard:X.a,Timeago:Z.a,Status:G.default,RichContent:Q.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e){return Object(ne.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},getUser:function(e){return this.$store.state.users.usersObject[e.from_profile.id]},toggleMute:function(){this.unmuted=!this.unmuted},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user),this.$store.dispatch("markSingleNotificationAsSeen",{id:this.notification.id}),this.$store.dispatch("updateNotification",{id:this.notification.id,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this;this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:e.notification.id}),e.$store.dispatch("removeFollowRequest",e.user)}))}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({userClass:function(){return Object(te.a)(this.notification.from_profile)},userStyle:function(){var e=this.$store.getters.mergedConfig.highlight,t=this.notification.from_profile;return Object(te.b)(e[t.screen_name])},user:function(){return this.$store.getters.findUser(this.notification.from_profile.id)},userProfileLink:function(){return this.generateUserProfileLink(this.user)},targetUser:function(){return this.$store.getters.findUser(this.notification.target.id)},targetUserProfileLink:function(){return this.generateUserProfileLink(this.targetUser)},needMute:function(){return this.$store.getters.relationship(this.user.id).muting},isStatusNotification:function(){return Object(ee.b)(this.notification.type)}},Object(m.e)({currentUser:function(e){return e.users.currentUser}}))},ae=(n(556),n(4)),ce=n.n(ae);var le=ce()(se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("router-link"),l=Object(r.J)("FAIcon"),u=Object(r.J)("UserAvatar"),d=Object(r.J)("UserCard"),p=Object(r.J)("RichContent"),h=Object(r.J)("i18n-t"),b=Object(r.J)("Timeago"),m=Object(r.J)("StatusContent");return"mention"===e.notification.type?(Object(r.D)(),Object(r.h)(a,{key:0,class:"Notification",compact:!0,statusoid:e.notification.status},null,8,["statusoid"])):(Object(r.D)(),Object(r.j)("div",f,[e.needMute&&!e.unmuted?(Object(r.D)(),Object(r.j)("div",O,[Object(r.k)("small",null,[Object(r.m)(c,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.k)("button",{class:"button-unstyled unmute",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Notification non-mention",[e.userClass,{highlighted:e.userStyle},"-type--"+e.notification.type]]),style:Object(r.x)([e.userStyle])},[Object(r.k)("a",{class:"avatar-container",href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(u,{compact:!0,"better-shadow":e.betterShadow,user:e.notification.from_profile},null,8,["better-shadow","user"])],40,j),Object(r.k)("div",g,[e.userExpanded?(Object(r.D)(),Object(r.h)(d,{key:0,"user-id":e.getUser(e.notification).id,rounded:!0,bordered:!0},null,8,["user-id"])):Object(r.i)("",!0),Object(r.k)("span",v,[Object(r.k)("div",y,[e.notification.from_profile.name_html?(Object(r.D)(),Object(r.j)("bdi",w,[Object(r.m)(p,{class:"username",title:"@"+e.notification.from_profile.screen_name_ui,html:e.notification.from_profile.name_html,emoji:e.notification.from_profile.emoji},null,8,["title","html","emoji"])])):(Object(r.D)(),Object(r.j)("span",{key:1,class:"username",title:"@"+e.notification.from_profile.screen_name_ui},Object(r.O)(e.notification.from_profile.name),9,k)),_,"like"===e.notification.type?(Object(r.D)(),Object(r.j)("span",S,[Object(r.m)(l,{class:"type-icon",icon:"star"}),C,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.favorited_you")),1)])):Object(r.i)("",!0),"repeat"===e.notification.type?(Object(r.D)(),Object(r.j)("span",P,[Object(r.m)(l,{class:"type-icon",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"]),x,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.repeated_you")),1)])):Object(r.i)("",!0),"follow"===e.notification.type?(Object(r.D)(),Object(r.j)("span",D,[Object(r.m)(l,{class:"type-icon",icon:"user-plus"}),T,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.followed_you")),1)])):Object(r.i)("",!0),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("span",I,[Object(r.m)(l,{class:"type-icon",icon:"user"}),$,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.follow_request")),1)])):Object(r.i)("",!0),"move"===e.notification.type?(Object(r.D)(),Object(r.j)("span",z,[Object(r.m)(l,{class:"type-icon",icon:"suitcase-rolling"}),M,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.migrated_to")),1)])):Object(r.i)("",!0),"pleroma:emoji_reaction"===e.notification.type?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("small",null,[Object(r.m)(h,{scope:"global",keypath:"notifications.reacted_with"},{default:Object(r.V)(()=>[null!==e.notification.emoji_url?(Object(r.D)(),Object(r.j)("img",{key:0,class:"notification-reaction-emoji",src:e.notification.emoji_url,name:e.notification.emoji},null,8,F)):(Object(r.D)(),Object(r.j)("span",E,Object(r.O)(e.notification.emoji),1))]),_:1})])])):Object(r.i)("",!0),"poll"===e.notification.type?(Object(r.D)(),Object(r.j)("span",L,[Object(r.m)(l,{class:"type-icon",icon:"poll-h"}),R,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.poll_ended")),1)])):Object(r.i)("",!0)]),e.isStatusNotification?(Object(r.D)(),Object(r.j)("div",A,[e.notification.status?(Object(r.D)(),Object(r.h)(c,{key:0,to:{name:"conversation",params:{id:e.notification.status.id}},class:"faint-link"},{default:Object(r.V)(()=>[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])]),_:1},8,["to"])):Object(r.i)("",!0)])):(Object(r.D)(),Object(r.j)("div",N,[Object(r.k)("span",B,[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])])])),e.needMute?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])):Object(r.i)("",!0)]),"follow"===e.notification.type||"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",V,[Object(r.m)(c,{to:e.userProfileLink,class:"follow-name"},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"]),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.accept_follow_request"),onClick:t[3]||(t[3]=t=>e.approveUser())},[Object(r.m)(l,{icon:"check",class:"fa-scale-110 fa-old-padding follow-request-accept"})],8,q),Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.reject_follow_request"),onClick:t[4]||(t[4]=t=>e.denyUser())},[Object(r.m)(l,{icon:"times",class:"fa-scale-110 fa-old-padding follow-request-reject"})],8,J)])):Object(r.i)("",!0)])):"move"===e.notification.type?(Object(r.D)(),Object(r.j)("div",W,[Object(r.m)(c,{to:e.targetUserProfileLink},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.target.screen_name_ui),1)]),_:1},8,["to"])])):(Object(r.D)(),Object(r.h)(m,{key:3,class:"faint",compact:!0,status:e.notification.action},null,8,["status"]))])],6))]))}]]);const ue={class:"dropdown-menu"},de={class:"filter-trigger-button button-unstyled"};var pe=n(24);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function be(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}re.c.add(ie.G);var me={components:{Popover:pe.default},computed:{filters:function(){return this.$store.getters.mergedConfig.notificationVisibility}},methods:{toggleNotificationFilter:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:be(be({},this.filters),{},b()({},e,!this.filters[e]))})}}};n(557);var fe=ce()(me,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"NotificationFilters",placement:"bottom","bound-to":{x:"container"}},{content:Object(r.V)(()=>[Object(r.k)("div",ue,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=e=>s.toggleNotificationFilter("likes"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.likes}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_likes")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=e=>s.toggleNotificationFilter("repeats"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.repeats}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_repeats")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=e=>s.toggleNotificationFilter("follows"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.follows}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_follows")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=e=>s.toggleNotificationFilter("mentions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.mentions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_mentions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=e=>s.toggleNotificationFilter("emojiReactions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.emojiReactions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=e=>s.toggleNotificationFilter("moves"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.moves}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_moves")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=e=>s.toggleNotificationFilter("polls"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.polls}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_polls")),1)])])]),trigger:Object(r.V)(()=>[Object(r.k)("button",de,[Object(r.m)(a,{icon:"filter"})])]),_:1})}]]),Oe=n(99),je=n(101);function ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.r);var ve={components:{Notification:le,NotificationFilters:fe},props:{minimalMode:Boolean,filterMode:Array,disableTeleport:Boolean},data:function(){return{bottomedOut:!1,seenToDisplayCount:30}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ge(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mainClass:function(){return this.minimalMode?"":"panel panel-default"},notifications:function(){return Object(ee.e)(this.$store)},error:function(){return this.$store.state.statuses.notifications.error},unseenNotifications:function(){return Object(ee.f)(this.$store)},filteredNotifications:function(){return Object(ee.a)(this.$store,this.filterMode)},unseenCount:function(){return this.unseenNotifications.length},unseenCountTitle:function(){return this.unseenCount+this.unreadChatCount},loading:function(){return this.$store.state.statuses.notifications.loading},noHeading:function(){var e=this.$store.state.interface.layoutType;return this.minimalMode||"mobile"===e},teleportTarget:function(){return{wide:"#notifs-column",mobile:"#mobile-notifications"}[this.$store.state.interface.layoutType]||"#notifs-sidebar"},notificationsToDisplay:function(){return this.filteredNotifications.slice(0,this.unseenCount+this.seenToDisplayCount)}},Object(m.c)(["unreadChatCount"])),watch:{unseenCountTitle:function(e){e>0?(je.a.drawFaviconBadge(),this.$store.dispatch("setPageTitle","(".concat(e,")"))):(je.a.clearFaviconBadge(),this.$store.dispatch("setPageTitle",""))}},methods:{markAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen"),this.seenToDisplayCount=30},fetchOlderNotifications:function(){var e=this;if(!this.loading){var t=this.filteredNotifications.length-this.unseenCount;if(this.seenToDisplayCount<t)this.seenToDisplayCount=Math.min(this.seenToDisplayCount+20,t);else{this.seenToDisplayCount>t&&(this.seenToDisplayCount=t);var n=this.$store,r=n.state.users.currentUser.credentials;n.commit("setNotificationsLoading",{value:!0}),Oe.a.fetchAndUpdate({store:n,credentials:r,older:!0}).then((function(t){n.commit("setNotificationsLoading",{value:!1}),0===t.length&&(e.bottomedOut=!0),e.seenToDisplayCount+=t.length}))}}}}};n(558);const ye=ce()(ve,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("NotificationFilters"),O=Object(r.J)("notification"),j=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.h)(r.c,{disabled:e.minimalMode||e.disableTeleport,to:e.teleportTarget},[Object(r.k)("div",{class:Object(r.w)([{minimal:e.minimalMode},"Notifications"])},[Object(r.k)("div",{class:Object(r.w)(e.mainClass)},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("div",o,[Object(r.l)(Object(r.O)(e.$t("notifications.notifications"))+" ",1),e.unseenCount?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.unseenCount),1)):Object(r.i)("",!0)]),e.unseenCount?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default read-button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.markAsSeen&&e.markAsSeen(...t),["prevent"]))},Object(r.O)(e.$t("notifications.read")),1)):Object(r.i)("",!0),Object(r.m)(f)])),Object(r.k)("div",a,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.notificationsToDisplay,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:Object(r.w)(["notification",{unseen:!e.minimalMode&&!t.seen}])},[c,Object(r.m)(O,{notification:t},null,8,["notification"])],2))),128))]),Object(r.k)("div",l,[e.bottomedOut?(Object(r.D)(),Object(r.j)("div",u,Object(r.O)(e.$t("notifications.no_more_notifications")),1)):e.loading?(Object(r.D)(),Object(r.j)("div",p,[Object(r.m)(j,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled -link -fullwidth",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.fetchOlderNotifications(),["prevent"]))},[Object(r.k)("div",d,Object(r.O)(e.minimalMode?e.$t("interactions.load_older"):e.$t("notifications.load_older")),1)]))])],2)],2)],8,["disabled","to"])}]]);t.default=ye},function(e,t,n){"use strict";var r=n(0);const i={class:"gallery-rows"},o={key:0,class:"many-attachments"},s={class:"many-attachments-text"},a={class:"many-attachments-buttons"},c={key:0,class:"many-attachments-button"},l={key:1,class:"many-attachments-button"},u={key:2,class:"many-attachments-button"};var d=n(12),p=n.n(d),h=n(39),b=n.n(h),m=n(134),f=n.n(m),O={props:["attachments","limitRows","descriptions","limit","nsfw","setMedia","size","editable","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","grid"],data:function(){return{sizes:{},hidingLong:!0}},components:{Attachment:n(58).a},computed:{rows:function(){var e=this;if(!this.attachments)return[];var t=this.limit>0?this.attachments.slice(0,this.limit):this.attachments;if("hide"===this.size)return t.map((function(e){return{minimal:!0,items:[e]}}));var n=this.grid?[{grid:!0,items:t}]:t.reduce((function(t,n,r){if(n.mimetype.includes("audio"))return[].concat(p()(t),[{audio:!0,items:[n]},{items:[]}]);if(!(n.mimetype.includes("image")||n.mimetype.includes("video")||n.mimetype.includes("flash")))return[].concat(p()(t),[{minimal:!0,items:[n]},{items:[]}]);var i=e.attachments.length-r+1,o=t[t.length-1].items;return o.push(n),o.length>=3&&i>3?[].concat(p()(t),[{items:[]}]):t}),[{items:[]}]).filter((function(e){return e.items.length>0}));return n},attachmentsDimensionalScore:function(){return this.rows.reduce((function(e,t){var n=0;return t.minimal?n+=1/8:t.audio?n+=1/4:n+=1/(t.items.length+.6),e+n}),0)},tooManyAttachments:function(){return!this.editable&&"small"!==this.size&&("hide"===this.size?this.attachments.length>8:this.attachmentsDimensionalScore>1)}},methods:{onNaturalSizeLoad:function(e){var t=e.id,n=e.width,r=e.height;b()(this.sizes,t,{width:n,height:r})},rowStyle:function(e){return e.audio?{"padding-bottom":"25%"}:e.minimal||e.grid?void 0:{"padding-bottom":"".concat(100/(e.items.length+.6),"%")}},itemStyle:function(e,t){var n=this,r=f()(t,(function(e){return n.getAspectRatio(e.id)}));return{flex:"".concat(this.getAspectRatio(e)/r," 1 0%")}},getAspectRatio:function(e){var t=this.sizes[e];return t?t.width/t.height:1},toggleHidingLong:function(e){this.hidingLong=e},openGallery:function(){this.$store.dispatch("setMedia",this.attachments),this.$store.dispatch("setCurrentMedia",this.attachments[0])},onMedia:function(){this.$store.dispatch("setMedia",this.attachments)}}},j=(n(510),n(4));const g=n.n(j)()(O,[["render",function(e,t,n,d,p,h){const b=Object(r.J)("Attachment");return Object(r.D)(),Object(r.j)("div",{ref:"galleryContainer",class:Object(r.w)(["Gallery",{"-long":e.tooManyAttachments&&e.hidingLong}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.rows,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["gallery-row",{"-audio":t.audio,"-minimal":t.minimal,"-grid":e.grid}]),style:Object(r.x)(e.rowStyle(t))},[Object(r.k)("div",{class:Object(r.w)(["gallery-row-inner",{"-grid":e.grid}])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.items,(i,o)=>(Object(r.D)(),Object(r.h)(b,{key:i.id,class:"gallery-item",nsfw:e.nsfw,attachment:i,size:e.size,editable:e.editable,remove:e.removeAttachment,"shift-up":!(0===o&&0===n)&&e.shiftUpAttachment,"shift-dn":!(o===t.items.length-1&&n===e.rows.length-1)&&e.shiftDnAttachment,edit:e.editAttachment,description:e.descriptions&&e.descriptions[i.id],"hide-description":"small"===e.size||e.tooManyAttachments&&e.hidingLong,style:Object(r.x)(e.itemStyle(i.id,t.items)),onSetMedia:e.onMedia,onNaturalSizeLoad:e.onNaturalSizeLoad},null,8,["nsfw","attachment","size","editable","remove","shift-up","shift-dn","edit","description","hide-description","style","onSetMedia","onNaturalSizeLoad"]))),128))],2)],6))),128))]),e.tooManyAttachments?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("div",s,Object(r.O)(e.$t("status.many_attachments",{number:e.attachments.length})),1),Object(r.k)("div",a,[e.hidingLong?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",c,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=t=>e.toggleHidingLong(!0))},Object(r.O)(e.$t("status.collapse_attachments")),1)])),e.hidingLong?(Object(r.D)(),Object(r.j)("span",l,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[1]||(t[1]=t=>e.toggleHidingLong(!1))},Object(r.O)(e.$t("status.show_all_attachments")),1)])):Object(r.i)("",!0),e.hidingLong?(Object(r.D)(),Object(r.j)("span",u,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[2]||(t[2]=(...t)=>e.openGallery&&e.openGallery(...t))},Object(r.O)(e.$t("status.open_gallery")),1)])):Object(r.i)("",!0)])])):Object(r.i)("",!0)],2)}]]);t.a=g},function(e,t,n){"use strict";var r=n(0);const i={class:"MentionLink"},o=["href","innerHTML"],s=["href"],a={class:"shortName"},c=Object(r.l)("@"),l=["innerHTML"],u=["innerHTML"],d={class:"userNameFull"},p=Object(r.l)(" @"),h=["innerHTML"],b=["innerHTML"];var m=n(40),f=n.n(m),O=n(5),j=n.n(O),g=n(23),v=n(8),y=n(31),w=n(22),k=n(6),_=n(3),S=["backgroundColor","backgroundPosition","backgroundImage"];function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C(Object(n),!0).forEach((function(t){j()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}k.c.add(_.f);var x={name:"MentionLink",components:{UserAvatar:w.default},props:{url:{required:!0,type:String},content:{required:!0,type:String},userId:{required:!1,type:String},userScreenName:{required:!1,type:String}},methods:{onClick:function(){var e=Object(g.a)(this.userId||this.user.id,this.userScreenName||this.user.screen_name);this.$router.push(e)}},computed:P(P({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(y.a)(this.user)},style:function(){if(this.highlight){var e=Object(y.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return f()(e,S)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(v.c)(["mergedConfig"])),Object(v.e)({currentUser:function(e){return e.users.currentUser}}))},D=(n(513),n(4));const T=n.n(D)()(x,[["render",function(e,t,n,m,f,O){return Object(r.D)(),Object(r.j)("span",i,[e.user?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:0,href:e.url,class:"original",target:"_blank",innerHTML:e.content},null,8,o)),e.user?(Object(r.D)(),Object(r.j)("span",{key:1,class:Object(r.w)(["new",e.classnames]),style:Object(r.x)(e.style)},[Object(r.k)("a",{class:Object(r.w)(["short button-unstyled",{"-with-tooltip":e.shouldShowTooltip}]),href:e.url,onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"]))},[Object(r.k)("span",a,[c,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,l),e.shouldShowFullUserName?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,u)):Object(r.i)("",!0)]),e.isYou&&e.shouldShowYous?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)({"-you":e.shouldBoldenYou})},Object(r.O)(" "+e.$t("status.you")),3)):Object(r.i)("",!0)],10,s),e.shouldShowTooltip?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["full popover-default",[e.highlightType]])},[Object(r.k)("span",d,[p,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,h),Object(r.k)("span",{class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,b)])],2)):Object(r.i)("",!0)],6)):Object(r.i)("",!0)])}]]);t.a=T},,function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var r=n(0);const i={class:"MentionsLine"},o={key:0,class:"extraMentions"},s={key:0,class:"fullExtraMentions"};var a=n(5),c=n.n(a),l=n(79),u=n(8);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=5,h={name:"MentionsLine",props:{mentions:{required:!0,type:Array}},data:function(){return{expanded:!1}},components:{MentionLink:l.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mentionsComputed:function(){return this.mentions.slice(0,p)},extraMentions:function(){return this.mentions.slice(p)},manyMentions:function(){return this.extraMentions.length>0}},Object(u.c)(["mergedConfig"])),methods:{toggleShowMore:function(){this.expanded=!this.expanded}}},b=(n(514),n(4));const m=n.n(b)()(h,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("MentionLink");return Object(r.D)(),Object(r.j)("span",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.mentionsComputed,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128)),e.manyMentions?(Object(r.D)(),Object(r.j)("span",o,[e.expanded?(Object(r.D)(),Object(r.j)("span",s,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.extraMentions,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128))])):Object(r.i)("",!0),e.expanded?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled showMoreLess",onClick:t[0]||(t[0]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("status.plus_more",{number:e.extraMentions.length})),1)),e.expanded?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled showMoreLess",onClick:t[1]||(t[1]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("general.show_less")),1)):Object(r.i)("",!0)])):Object(r.i)("",!0)])}]]);t.b=m},,,,,,,,,,,,,,,function(e,t,n){"use strict";var r={fileSizeFormat:function(e){var t,n=["B","KiB","MiB","GiB","TiB"];return e<1?e+" "+n[0]:(t=Math.min(Math.floor(Math.log(e)/Math.log(1024)),n.length-1),{num:e=1*(e/Math.pow(1024,t)).toFixed(2),unit:n[t]})}};t.a=r},,,function(e,t,n){"use strict";var r=n(12),i=n.n(r),o=n(15),s=n(44),a=function(e){var t=e.store,n=e.credentials,r=e.older,o=void 0!==r&&r,s=e.since,a={credentials:n},l=t.getters,u=(t.rootState||t.state).statuses.notifications,d=l.mergedConfig.hideMutedPosts;if(a.withMuted=!d,a.timeline="notifications",o)return u.minId!==Number.POSITIVE_INFINITY&&(a.until=u.minId),c({store:t,args:a,older:o});void 0===s&&u.maxId!==Number.POSITIVE_INFINITY?a.since=u.maxId:null!==s&&(a.since=s);var p=c({store:t,args:a,older:o}),h=u.data,b=h.filter((function(e){return e.seen})).map((function(e){return e.id}));return h.length-b.length>0&&b.length>0&&(a.since=Math.max.apply(Math,i()(b)),c({store:t,args:a,older:o})),p},c=function(e){var t=e.store,n=e.args,r=e.older;return o.c.fetchTimeline(n).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data;return function(e){var t=e.store,n=e.notifications,r=e.older;t.dispatch("addNewNotifications",{notifications:n,older:r})}({store:t,notifications:n,older:r}),n})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"notifications.error",messageArgs:[e.message],timeout:5e3})}))},l={fetchAndUpdate:a,startFetching:function(e){var t=e.credentials,n=e.store;setTimeout((function(){return n.dispatch("setNotificationsSilence",!1)}),1e4);var r=function(){return a({credentials:t,store:n})};return r(),Object(s.a)(r,2e4)}};t.a=l},,function(e,t,n){"use strict";var r,i,o,s=(r=[],i=function(e){return e.complete&&0!==e.naturalHeight},{initFaviconService:function(){document.querySelectorAll('link[rel="icon"]').forEach((function(e){if(e){var t=document.createElement("canvas");t.width=128,t.height=128;var n=new Image;n.crossOrigin="anonymous",n.src=e.href;var i=t.getContext("2d");r.push({favcanvas:t,favimg:n,favcontext:i,favicon:e})}}))},clearFaviconBadge:o=function(){0!==r.length&&r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;t&&r&&o&&(r.clearRect(0,0,128,128),i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),o.href=n.toDataURL("image/png"))}))},drawFaviconBadge:function(){0!==r.length&&(o(),r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;if(t&&r&&r){var s=getComputedStyle(document.body),a="".concat(s.getPropertyValue("--badgeNotification")||"rgb(240, 100, 100)");i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),r.fillStyle=a,r.beginPath(),r.arc(96,32,32,0,2*Math.PI,!1),r.fill(),o.href=n.toDataURL("image/png")}})))}});t.a=s},,,function(e,t,n){"use strict";var r=n(0);const i=["disabled"];var o={props:{disabled:{type:Boolean},click:{type:Function,default:function(){return Promise.resolve()}}},data:function(){return{progress:!1}},methods:{onClick:function(){var e=this;this.progress=!0,this.click().then((function(){e.progress=!1}))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{disabled:s.progress||n.disabled,onClick:t[0]||(t[0]=(...e)=>a.onClick&&a.onClick(...e))},[s.progress&&e.$slots.progress?Object(r.I)(e.$slots,"progress",{key:0}):Object(r.I)(e.$slots,"default",{key:1})],8,i)}]]);t.a=a},,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return O}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(317),c=n.n(a),l=n(43),u=n(70),d=n(38);function p(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f={expertLevel:0,colors:{},theme:void 0,customTheme:void 0,customThemeSource:void 0,hideISP:!1,hideInstanceWallpaper:!1,hideShoutbox:!1,hideMutedPosts:void 0,hideMutedThreads:void 0,hideWordFilteredPosts:void 0,muteBotStatuses:void 0,collapseMessageWithSubject:void 0,padEmoji:!0,hideAttachments:!1,hideAttachmentsInConv:!1,maxThumbnails:16,hideNsfw:!0,preloadImage:!0,loopVideo:!0,loopVideoSilentOnly:!0,streaming:!1,emojiReactionsOnTimeline:!0,alwaysShowNewPostButton:!1,autohideFloatingPostButton:!1,pauseOnUnfocused:!0,stopGifs:!0,replyVisibility:"all",thirdColumnMode:"notifications",notificationVisibility:{follows:!0,mentions:!0,likes:!0,repeats:!0,moves:!0,emojiReactions:!0,followRequest:!0,chatMention:!0,polls:!0},webPushNotifications:!1,muteWords:[],highlight:{},interfaceLanguage:(window.navigator.language||"en").split("-")[0],hideScopeNotice:!1,useStreamingApi:!0,sidebarRight:void 0,scopeCopy:void 0,subjectLineBehavior:void 0,alwaysShowSubjectInput:void 0,postContentType:void 0,minimalScopesMode:void 0,hideFilteredStatuses:void 0,playVideosInModal:!1,useOneClickNsfw:!1,useContainFit:!0,disableStickyHeaders:!1,showScrollbars:!1,greentext:void 0,useAtIcon:void 0,mentionLinkDisplay:void 0,mentionLinkShowTooltip:void 0,mentionLinkShowAvatar:void 0,mentionLinkFadeDomain:void 0,mentionLinkShowYous:void 0,mentionLinkBoldenYou:void 0,hidePostStats:void 0,hideBotIndication:void 0,hideUserStats:void 0,virtualScrolling:void 0,sensitiveByDefault:void 0,sensitiveIfSubject:void 0,renderMisskeyMarkdown:void 0,conversationDisplay:void 0,conversationTreeAdvanced:void 0,conversationOtherRepliesButton:void 0,conversationTreeFadeAncestors:void 0,maxDepthInThread:void 0},O=Object.entries(f).filter((function(e){var t=s()(e,2);t[0];return void 0===t[1]})).map((function(e){var t=s()(e,2),n=t[0];t[1];return n})),j={state:m({},f),getters:{defaultConfig:function(e,t,n,r){var i=n.instance;return m(m({},f),Object.fromEntries(O.map((function(e){return[e,i[e]]}))))},mergedConfig:function(e,t,n,r){return m(m({},r.defaultConfig),Object.fromEntries(Object.entries(e).filter((function(e){var t=s()(e,2);t[0];return void 0!==t[1]}))))}},mutations:{setOption:function(e,t){var n=t.name,r=t.value;e[n]=r},setHighlight:function(e,t){var n=t.user,r=t.color,i=t.type,o=this.state.config.highlight[n];r||i?e.highlight[n]={color:r||o.color,type:i||o.type}:delete e.highlight[n]}},actions:{loadSettings:function(e,t){var n,r=e.dispatch,i=new Set(Object.keys(f)),o=new Set(Object.keys(t)),s=new Set,a=p(o);try{for(a.s();!(n=a.n()).done;){var c=n.value;i.has(c)&&s.add(c)}}catch(e){a.e(e)}finally{a.f()}s.forEach((function(e){return r("setOption",{name:e,value:t[e]})}))},setHighlight:function(e,t){var n=e.commit;e.dispatch;n("setHighlight",{user:t.user,color:t.color,type:t.type})},setOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setOption",{name:i,value:o}),i){case"theme":Object(l.l)(o);break;case"customTheme":case"customThemeSource":Object(l.b)(o);break;case"interfaceLanguage":u.a.setLanguage(this.getters.i18n,o),c.a.set("userLanguage",d.a.internalToBackendLocale(o));break;case"thirdColumnMode":r("setLayoutWidth",void 0)}}}};t.a=j},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(49),i=n.n(r),o=function(e,t){var n=e.text.toLowerCase(),r=e.summary.toLowerCase();return i()(t,(function(e){return n.includes(e.toLowerCase())||r.includes(e.toLowerCase())}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){if("Notification"in window&&"granted"===window.Notification.permission&&!e.statuses.notifications.desktopNotificationSilence){var n=new window.Notification(t.title,t);setTimeout(n.close.bind(n),5e3)}}},,,,,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r.top,s=void 0===o?0:o,a=r.left,c=void 0===a?0:a,l=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u={top:s+t.offsetTop,left:c+t.offsetLeft};if(!l&&t!==window){var d=i(t),p=d.topPadding,h=d.leftPadding;u.top+=l?0:p,u.left+=l?0:h}if(t.offsetParent&&"sticky"!==window.getComputedStyle(t.offsetParent).position&&(n===window||n.contains(t.offsetParent)||n===t.offsetParent))return e(t.offsetParent,n,u,!1);if(n!==window){var b=i(n),m=b.topPadding,f=b.leftPadding;u.top+=m,u.left+=f}return u},i=function(e){var t=window.getComputedStyle(e)["padding-top"],n=Number(t.substring(0,t.length-2)),r=window.getComputedStyle(e)["padding-left"];return{topPadding:n,leftPadding:Number(r.substring(0,r.length-2))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var r=function(e){var t=e.filename,n=void 0===t?"data":t,r=e.getExportedObject;return{exportData:function(){var e=JSON.stringify(r(),null,2),t=document.createElement("a");t.setAttribute("download","".concat(n,".json")),t.setAttribute("href","data:application/json;base64,"+window.btoa(e)),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}}},i=function(e){var t=e.onImport,n=e.onImportFailure,r=e.validator,i=void 0===r?function(){return!0}:r;return{importData:function(){var e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".json"),e.addEventListener("change",(function(e){if(e.target.files[0]){var r=new FileReader;r.onload=function(e){var r=e.target;try{var o=JSON.parse(r.result),s=i(o);!0===s?t(o):n({validationResult:s})}catch(e){n({error:e})}},r.readAsText(e.target.files[0])}})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}},function(e,t,n){"use strict";var r=n(0);const i={class:"Flash"},o={key:0,class:"label"},s={key:1,class:"label"},a={key:2,class:"label"};var c,l=(c=null,{getRuffle:function(){return new Promise((function(e,t){if(c)e(c);else{window.RufflePlayer={},window.RufflePlayer.config={polyfills:!1,publicPath:"/static/ruffle"};var n=document.createElement("script");n.src="/static/ruffle/ruffle.js",n.type="text/javascript",n.onerror=function(e){t(e)},n.onabort=function(e){t(e)},n.oncancel=function(e){t(e)},n.onload=function(){c=window.RufflePlayer,e(c)},document.body.appendChild(n)}}))}}),u=n(6),d=n(3);u.c.add(d.lb,d.z);var p={props:["src"],data:function(){return{player:!1,loaded:!1,ruffleInstance:null}},methods:{openPlayer:function(){var e=this;this.player||(this.player="hidden",l.getRuffle().then((function(t){var n=t.newest().createPlayer();n.config={letterbox:"on"},e.$refs.container.appendChild(n),n.style.width="100%",n.style.height="100%",n.load(e.src).then((function(){e.player=!0})).catch((function(t){console.error("Error loading ruffle",t),e.player="error"})),e.ruffleInstance=n,e.$emit("playerOpened")})))},closePlayer:function(){this.ruffleInstance&&this.ruffleInstance.remove(),this.player=!1,this.$emit("playerClosed")}}},h=(n(508),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",i,[!0===e.player||"hidden"===e.player?(Object(r.D)(),Object(r.j)("div",{key:0,ref:"container",class:Object(r.w)(["player",{hidden:"hidden"===e.player}])},null,2)):Object(r.i)("",!0),!0!==e.player?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled placeholder",onClick:t[0]||(t[0]=(...t)=>e.openPlayer&&e.openPlayer(...t))},["hidden"===e.player?(Object(r.D)(),Object(r.j)("span",o,Object(r.O)(e.$t("general.loading")),1)):Object(r.i)("",!0),"error"===e.player?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.$t("general.flash_fail")),1)):(Object(r.D)(),Object(r.j)("span",a,[Object(r.k)("p",null,Object(r.O)(e.$t("general.flash_content")),1),Object(r.k)("p",null,[Object(r.m)(d,{icon:"exclamation-triangle"}),Object(r.l)(" "+Object(r.O)(e.$t("general.flash_security")),1)])]))])):Object(r.i)("",!0)])}]]);t.a=b},function(e,t,n){"use strict";var r=n(0);const i=["disabled","title"];var o=n(11),s=n.n(o),a=function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.followUser({id:e}).then((function(e){if(t.commit("updateUserRelationship",[e]),!(e.following||e.locked&&e.requested))return function e(t,n,r){return new Promise((function(e,i){setTimeout((function(){r.state.api.backendInteractor.fetchUserRelationship({id:n}).then((function(e){return r.commit("updateUserRelationship",[e]),e})).then((function(n){return e([n.following,n.requested,n.locked,t])})).catch((function(e){return i(e)}))}),500)})).then((function(t){var i=s()(t,4),o=i[0],a=i[1],c=i[2],l=i[3];o||c&&a||!(l<=3)||e(++l,n,r)}))}(1,e,t).then((function(){n()}));n()}))}))},c={props:["relationship","user","labelFollowing","buttonClass"],data:function(){return{inProgress:!1}},computed:{isPressed:function(){return this.inProgress||this.relationship.following},title:function(){return this.inProgress||this.relationship.following?this.$t("user_card.follow_unfollow"):this.relationship.requested?this.$t("user_card.follow_cancel"):this.$t("user_card.follow")},label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.relationship.following?this.labelFollowing||this.$t("user_card.following"):this.relationship.requested?this.$t("user_card.follow_sent"):this.$t("user_card.follow")},disabled:function(){return this.inProgress||this.user.deactivated}},methods:{onClick:function(){this.relationship.following||this.relationship.requested?this.unfollow():this.follow()},follow:function(){var e=this;this.inProgress=!0,a(this.relationship.id,this.$store).then((function(){e.inProgress=!1}))},unfollow:function(){var e=this,t=this.$store;this.inProgress=!0,function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.unfollowUser({id:e}).then((function(e){t.commit("updateUserRelationship",[e]),n({updated:e})}))}))}(this.relationship.id,t).then((function(){e.inProgress=!1,t.commit("removeStatus",{timeline:"friends",userId:e.relationship.id})}))}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{class:Object(r.w)(["btn button-default follow-button",{toggled:e.isPressed}]),disabled:e.disabled,title:e.title,onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},Object(r.O)(e.label),11,i)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i=["src","loop","controls","alt","title"];var o={props:["attachment","controls"],data:function(){return{blocksSuspend:!1,hasAudio:!0}},computed:{loopVideo:function(){return this.$store.getters.mergedConfig.loopVideoSilentOnly?!this.hasAudio:this.$store.getters.mergedConfig.loopVideo}},methods:{onPlaying:function(e){this.setHasAudio(e),this.loopVideo?this.$emit("play",{looping:!0}):this.$emit("play")},onPaused:function(e){this.$emit("pause")},setHasAudio:function(e){var t=e.srcElement||e.target;this.hasAudio&&(void 0!==t.webkitAudioDecodedByteCount&&t.webkitAudioDecodedByteCount>0||void 0!==t.mozHasAudio&&t.mozHasAudio||void 0!==t.audioTracks&&t.audioTracks.length>0||(this.hasAudio=!1))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("video",{class:"video",preload:"metadata",src:e.attachment.url,loop:e.loopVideo,controls:e.controls,alt:e.attachment.description,title:e.attachment.description,playsinline:"",onPlaying:t[0]||(t[0]=(...t)=>e.onPlaying&&e.onPlaying(...t)),onPause:t[1]||(t[1]=(...t)=>e.onPaused&&e.onPaused(...t))},null,40,i)}]]);t.a=a},function(e,t,n){"use strict";var r=n(0);const i=["href"],o={key:0,class:"card-image"},s=["src"],a={class:"card-content"},c={class:"card-host faint"},l={key:0,class:"nsfw-alert alert warning"},u={class:"card-title"},d={key:0,class:"card-description"};var p=n(5),h=n.n(p),b=n(8);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var f={name:"LinkPreview",props:["card","size","nsfw"],data:function(){return{imageLoaded:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({useImage:function(){return this.card.image&&!this.censored&&"hide"!==this.size},censored:function(){return this.nsfw&&this.hideNsfwConfig},useDescription:function(){return this.card.description&&/\S/.test(this.card.description)},hideNsfwConfig:function(){return this.mergedConfig.hideNsfw}},Object(b.c)(["mergedConfig"])),created:function(){var e=this;if(this.useImage){var t=new Image;t.onload=function(){e.imageLoaded=!0},t.src=this.card.image}}},O=(n(522),n(4));const j=n.n(O)()(f,[["render",function(e,t,n,p,h,b){return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("a",{class:"link-preview-card",href:e.card.url,target:"_blank",rel:"noopener"},[e.useImage&&e.imageLoaded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("img",{src:e.card.image},null,8,s)])):Object(r.i)("",!0),Object(r.k)("div",a,[Object(r.k)("span",c,[e.censored?(Object(r.D)(),Object(r.j)("span",l,Object(r.O)(e.$t("status.nsfw")),1)):Object(r.i)("",!0),Object(r.l)(" "+Object(r.O)(e.card.provider_name),1)]),Object(r.k)("h4",u,Object(r.O)(e.card.title),1),e.useDescription?(Object(r.D)(),Object(r.j)("p",d,Object(r.O)(e.card.description),1)):Object(r.i)("",!0)])],8,i)])}]]);t.a=j},function(e,t,n){"use strict";var r=n(0);const i={class:"remote-follow"},o=["action"],s=["value"],a=Object(r.k)("input",{type:"hidden",name:"profile",value:""},null,-1),c={click:"submit",class:"button-default remote-button"};var l={props:["user"],computed:{subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")}}},u=(n(525),n(4));const d=n.n(u)()(l,[["render",function(e,t,n,l,u,d){return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{method:"POST",action:e.subscribeUrl},[Object(r.k)("input",{type:"hidden",name:"nickname",value:e.user.screen_name},null,8,s),a,Object(r.k)("button",c,Object(r.O)(e.$t("user_card.remote_follow")),1)],8,o)])}]]);t.a=d},function(e,t,n){"use strict";var r=n(0);const i={class:"avatars"};var o=n(22),s=n(23),a={props:["users"],computed:{slicedUsers:function(){return this.users?this.users.slice(0,15):[]}},components:{UserAvatar:o.default},methods:{userProfileLink:function(e){return Object(s.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},c=(n(551),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){const c=Object(r.J)("UserAvatar"),l=Object(r.J)("router-link");return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.slicedUsers,t=>(Object(r.D)(),Object(r.h)(l,{key:t.id,to:e.userProfileLink(t),class:"avatars-item"},{default:Object(r.V)(()=>[Object(r.m)(c,{user:t,class:"avatar-small"},null,8,["user"])]),_:2},1032,["to"]))),128))])}]]);t.a=l},,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(13),i=n.n(r),o=n(10),s=n.n(o);t.a=function(e){var t=a(e.emoji),n=e.store&&c(e.store);return function(r){var i=r[0];return":"===i&&e.emoji?t(r):"@"===i&&n?n(r):[]}};var a=function(e){return function(t){var n=t.toLowerCase().substr(1);return e.filter((function(e){return e.displayText.toLowerCase().match(n)})).sort((function(e,t){var r=0,i=0;return r+=e.displayText.toLowerCase()===n?200:0,i+=t.displayText.toLowerCase()===n?200:0,r+=e.imageUrl?100:0,i+=t.imageUrl?100:0,r+=e.displayText.toLowerCase().startsWith(n)?10:0,i+=t.displayText.toLowerCase().startsWith(n)?10:0,r-=e.displayText.length,(i-=t.displayText.length)-r+(e.displayText>t.displayText?.5:-.5)}))}},c=function(e){var t,n=e.dispatch,r=e.state,o=[],a="",c=null,l=null,u=function(e){return l&&l(),new Promise((function(t,r){c=setTimeout((function(){(function(e){return n("searchUsers",{query:e})})(e).then(t).catch(r)}),300),l=function(){clearTimeout(c),t([])}}))};return t=i()(s.a.mark((function e(t){var n,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.toLowerCase().substr(1),a!==n){e.next=3;break}return e.abrupt("return",o);case 3:if(o=[],a=n,n.includes("@")){e.next=8;break}return e.next=8,u(n);case 8:return i=r.users.users.filter((function(e){return e.screen_name.toLowerCase().startsWith(n)||e.name.toLowerCase().startsWith(n)})).slice(0,20).sort((function(e,t){var r=0,i=0;return r+=e.screen_name.toLowerCase().startsWith(n)?2:0,i+=t.screen_name.toLowerCase().startsWith(n)?2:0,r+=e.name.toLowerCase().startsWith(n)?1:0,10*((i+=t.name.toLowerCase().startsWith(n)?1:0)-r)+(e.name>t.name?1:-1)+(e.screen_name>t.screen_name?1:-1)})).map((function(e){var t=e.screen_name;return{displayText:e.screen_name_ui,detailText:e.name,imageUrl:e.profile_image_url_original,replacement:"@"+t+" "}})),o=i||[],e.abrupt("return",o);case 11:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)}}},,,,,,,function(e,t,n){"use strict";var r=n(0);const i={for:"interface-language-switcher"},o=Object(r.l)(" "+Object(r.O)(" ")+" "),s=["value"];var a=n(38),c={components:{Select:n(52).a},props:{promptText:{type:String,required:!0},language:{type:String,required:!0},setLanguage:{type:Function,required:!0}},computed:{languages:function(){return a.a.languages},controlledLanguage:{get:function(){return this.language},set:function(e){this.setLanguage(e)}}},methods:{getLanguageName:function(e){return a.a.getLanguageName(e)}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Select");return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("label",i,Object(r.O)(n.promptText),1),o,Object(r.m)(u,{id:"interface-language-switcher",modelValue:l.controlledLanguage,"onUpdate:modelValue":t[0]||(t[0]=e=>l.controlledLanguage=e)},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(l.languages,e=>(Object(r.D)(),Object(r.j)("option",{key:e.code,value:e.code},Object(r.O)(e.name),9,s))),128))]),_:1},8,["modelValue"])])}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={key:0,class:"ScopeSelector"},o=["title"],s=Object(r.l)(" "+Object(r.O)(" ")+" "),a=["title"],c=Object(r.l)(" "+Object(r.O)(" ")+" "),l=["title"],u=Object(r.l)(" "+Object(r.O)(" ")+" "),d=["title"],p=["title"];var h=n(6),b=n(3);h.c.add(b.y,b.I,b.O,b.P);var m={props:["showAll","userDefault","originalScope","initialScope","onScopeChange"],data:function(){return{currentScope:this.initialScope}},computed:{showNothing:function(){return!(this.showPublic||this.showUnlisted||this.showPrivate||this.showDirect)},showPublic:function(){return"direct"!==this.originalScope&&this.shouldShow("public")},showLocal:function(){return"direct"!==this.originalScope&&this.shouldShow("local")},showUnlisted:function(){return"direct"!==this.originalScope&&this.shouldShow("unlisted")},showPrivate:function(){return"direct"!==this.originalScope&&this.shouldShow("private")},showDirect:function(){return this.shouldShow("direct")},css:function(){return{public:{selected:"public"===this.currentScope},unlisted:{selected:"unlisted"===this.currentScope},private:{selected:"private"===this.currentScope},direct:{selected:"direct"===this.currentScope},local:{selected:"local"===this.currentScope}}}},methods:{shouldShow:function(e){return this.showAll||this.currentScope===e||this.originalScope===e||this.userDefault===e||"direct"===e},changeVis:function(e){this.currentScope=e,this.onScopeChange&&this.onScopeChange(e)}}},f=(n(501),n(4));const O=n.n(f)()(m,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("FAIcon");return e.showNothing?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[e.showDirect?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled scope",e.css.direct]),title:e.$t("post_status.scope.direct"),type:"button",onClick:t[0]||(t[0]=t=>e.changeVis("direct"))},[Object(r.m)(f,{icon:"envelope",class:"fa-scale-110 fa-old-padding"})],10,o)):Object(r.i)("",!0),s,e.showPrivate?(Object(r.D)(),Object(r.j)("button",{key:1,class:Object(r.w)(["button-unstyled scope",e.css.private]),title:e.$t("post_status.scope.private"),type:"button",onClick:t[1]||(t[1]=t=>e.changeVis("private"))},[Object(r.m)(f,{icon:"lock",class:"fa-scale-110 fa-old-padding"})],10,a)):Object(r.i)("",!0),c,e.showUnlisted?(Object(r.D)(),Object(r.j)("button",{key:2,class:Object(r.w)(["button-unstyled scope",e.css.unlisted]),title:e.$t("post_status.scope.unlisted"),type:"button",onClick:t[2]||(t[2]=t=>e.changeVis("unlisted"))},[Object(r.m)(f,{icon:"lock-open",class:"fa-scale-110 fa-old-padding"})],10,l)):Object(r.i)("",!0),u,e.showPublic?(Object(r.D)(),Object(r.j)("button",{key:3,class:Object(r.w)(["button-unstyled scope",e.css.public]),title:e.$t("post_status.scope.public"),type:"button",onClick:t[3]||(t[3]=t=>e.changeVis("public"))},[Object(r.m)(f,{icon:"globe",class:"fa-scale-110 fa-old-padding"})],10,d)):Object(r.i)("",!0),e.showLocal?(Object(r.D)(),Object(r.j)("button",{key:4,class:Object(r.w)(["button-unstyled scope",e.css.local]),title:e.$t("post_status.scope.local"),type:"button",onClick:t[4]||(t[4]=t=>e.changeVis("local"))},[Object(r.m)(f,{icon:"users",class:"fa-scale-110 fa-old-padding"})],10,p)):Object(r.i)("",!0)]))}]]);t.a=O},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return m}));var r=n(11),i=n.n(r),o=n(5),s=n.n(o),a=n(39),c=n.n(a),l=n(16),u=n.n(l);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s={};return c()(s,i,o),n.api.backendInteractor.updateProfile({params:s}).then((function(e){r("addNewUsers",[e]),r("setCurrentUser",e)}))},h=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s=t.oldValue,a={};return c()(a,i,o),n.api.backendInteractor.updateNotificationSettings({settings:a}).then((function(e){"success"===e.status?r("confirmServerSideOption",{name:name,value:o}):r("confirmServerSideOption",{name:name,value:s})}))},b={defaultScope:"source.privacy",defaultNSFW:"source.sensitive",stripRichContent:{get:"source.pleroma.no_rich_text",set:"no_rich_text"},locked:"locked",acceptChatMessages:{get:"pleroma.accepts_chat_messages",set:"accepts_chat_messages"},allowFollowingMove:{get:"pleroma.allow_following_move",set:"allow_following_move"},discoverable:{get:"source.pleroma.discoverable",set:"discoverable"},hideFavorites:{get:"pleroma.hide_favorites",set:"hide_favorites"},hideFollowers:{get:"pleroma.hide_followers",set:"hide_followers"},hideFollows:{get:"pleroma.hide_follows",set:"hide_follows"},hideFollowersCount:{get:"pleroma.hide_followers_count",set:"hide_followers_count"},hideFollowsCount:{get:"pleroma.hide_follows_count",set:"hide_follows_count"},webPushHideContents:{get:"pleroma.notification_settings.hide_notification_contents",set:"hide_notification_contents",api:h},blockNotificationsFromStrangers:{get:"pleroma.notification_settings.block_from_strangers",set:"block_from_strangers",api:h}},m=Object.fromEntries(Object.keys(b).map((function(e){return[e,null]}))),f={state:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},m),mutations:{confirmServerSideOption:function(e,t){var n=t.name,r=t.value;c()(e,n,r)},wipeServerSideOption:function(e,t){var n=t.name;c()(e,n,null)},wipeAllServerSideOptions:function(e){Object.keys(b).forEach((function(t){c()(e,t,null)}))},setCurrentUser:function(e,t){Object.entries(b).forEach((function(n){var r=i()(n,2),o=r[0],s=r[1],a=s.get,l=void 0===a?s:a;c()(e,o,u()(t._original,l))}))}},actions:{setServerSideOption:function(e,t){var n=e.rootState,r=e.state,i=e.commit,o=(e.dispatch,t.name),s=t.value,a=u()(r,o),c=b[o];if(!c)throw new Error("Invalid server-side setting");var l=c.set,d=void 0===l?c:l,h=c.api,m=void 0===h?p:h;i("wipeServerSideOption",{name:o}),m({rootState:n,commit:i},{path:d,value:s,oldValue:a}).catch((function(e){console.warn("Error setting server-side option:",e),i("confirmServerSideOption",{name:o,value:a})}))},logout:function(e){(0,e.commit)("wipeAllServerSideOptions")}}};t.a=f},,,function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(95),i=n.n(r),o=function(e){return function(e){return i()(e)?e.options:e}(e).props}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";var r=n(0);const i={ref:"panel-body",class:"autocomplete-panel-body"},o=["onClick"],s={class:"image"},a=["src"],c={key:1},l={class:"label"},u={class:"displayText"},d={class:"detailText"};var p=n(5),h=n.n(p),b=n(40),m=n.n(b),f=n(13),O=n.n(f),j=n(326),g=n.n(j),v=n(10),y=n.n(v),w=n(30),k=n.n(w),_=n(55),S=n.n(_),C=function(e){return S()(e,(function(e,t){var n={word:t,start:0,end:t.length};if(e.length>0){var r=e.pop();n.start+=r.end,n.end+=r.end,e.push(r)}return e.push(n),e}),[])},P=function(e){for(var t=[],n="",r=0;r<e.length;r++){var i=e[r];n?!!i.trim()==!!n.trim()?n+=i:(t.push(n),n=i):n=i}return n&&t.push(n),t},x={wordAtPosition:function(e,t){var n=P(e),r=C(n);return k()(r,(function(e){var n=e.start,r=e.end;return n<=t&&r>t}))},addPositionToWords:C,splitByWhitespaceBoundary:P,replaceWord:function(e,t,n){return e.slice(0,t.start)+n+e.slice(t.end)}};const D={class:"emoji-picker panel panel-default panel-body"},T={class:"heading"},I={class:"emoji-tabs"},$=["title","onClick"],z={key:0,class:"additional-tabs"},M=["title"],U={class:"content"},F={class:"emoji-search"},E=["placeholder"],L=["title","onClick"],R={key:0},A=["src"],N={class:"keep-open"},B={key:0,class:"stickers-content"};var V=n(51),H=n(6),q=n(3);function J(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return W(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}H.c.add(q.k,q.kb,q.ib);var Y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e;var n,r=t.toLowerCase(),i=[],o=J(e);try{for(o.s();!(n=o.n()).done;){var s=n.value,a=s.displayText.toLowerCase().indexOf(r);a>-1&&(Array.isArray(i[a])||(i[a]=[]),i[a].push(s))}}catch(e){o.e(e)}finally{o.f()}return i.flat()},G={props:{enableStickerPicker:{required:!1,type:Boolean,default:!1}},data:function(){return{keyword:"",activeGroup:"custom",showingStickers:!1,groupsScrolledClass:"scrolled-top",keepOpen:!1,customEmojiBufferSlice:60,customEmojiTimeout:null,customEmojiLoadAllConfirmed:!1}},components:{StickerPicker:Object(r.n)((function(){return n.e(4).then(n.bind(null,709))})),Checkbox:V.a},methods:{onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-failed",e)},onEmoji:function(e){var t=e.imageUrl?":".concat(e.displayText,":"):e.replacement;this.$emit("emoji",{insertion:t,keepOpen:this.keepOpen})},onScroll:function(e){var t=e&&e.target||this.$refs["emoji-groups"];this.updateScrolledClass(t),this.scrolledGroup(t),this.triggerLoadMore(t)},highlight:function(e){var t=this,n=this.$refs["group-"+e].offsetTop;this.setShowStickers(!1),this.activeGroup=e,this.$nextTick((function(){t.$refs["emoji-groups"].scrollTop=n+1}))},updateScrolledClass:function(e){e.scrollTop<=5?this.groupsScrolledClass="scrolled-top":e.scrollTop>=e.scrollTopMax-5?this.groupsScrolledClass="scrolled-bottom":this.groupsScrolledClass="scrolled-middle"},triggerLoadMore:function(e){var t=this.$refs["group-end-custom"];if(t){var n=t.offsetTop+t.offsetHeight,r=e.scrollTop+e.clientHeight,i=e.scrollTop,o=e.scrollHeight;n<i||r===o||!(n-r<64)&&!(i<5)||this.loadEmoji()}},scrolledGroup:function(e){var t=this,n=e.scrollTop+5;this.$nextTick((function(){t.emojisView.forEach((function(e){t.$refs["group-"+e.id].offsetTop<=n&&(t.activeGroup=e.id)}))}))},loadEmoji:function(){this.customEmojiBuffer.length===this.filteredEmoji.length||(this.customEmojiBufferSlice+=60)},startEmojiLoad:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];t||(this.keyword=""),this.$nextTick((function(){e.$refs["emoji-groups"].scrollTop=0}));var n=this.customEmojiBuffer.length,r=n===this.filteredEmoji.length;r&&!t||(this.customEmojiBufferSlice=60)},toggleStickers:function(){this.showingStickers=!this.showingStickers},setShowStickers:function(e){this.showingStickers=e}},watch:{keyword:function(){this.customEmojiLoadAllConfirmed=!1,this.onScroll(),this.startEmojiLoad(!0)}},computed:{activeGroupView:function(){return this.showingStickers?"":this.activeGroup},stickersAvailable:function(){return this.$store.state.instance.stickers?this.$store.state.instance.stickers.length>0:0},filteredEmoji:function(){return Y(this.$store.state.instance.customEmoji||[],this.keyword)},customEmojiBuffer:function(){return this.filteredEmoji.slice(0,this.customEmojiBufferSlice)},emojis:function(){var e=this.$store.state.instance.emoji||[],t=this.customEmojiBuffer;return[{id:"custom",text:this.$t("emoji.custom"),icon:"smile-beam",emojis:t},{id:"standard",text:this.$t("emoji.unicode"),icon:"box-open",emojis:Y(e,this.keyword)}]},emojisView:function(){return this.emojis.filter((function(e){return e.emojis.length>0}))},stickerPickerEnabled:function(){return 0!==(this.$store.state.instance.stickers||[]).length}}},K=(n(503),n(4)),X=n.n(K);var Z=X()(G,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Checkbox"),l=Object(r.J)("sticker-picker");return Object(r.D)(),Object(r.j)("div",D,[Object(r.k)("div",T,[Object(r.k)("span",I,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.id,class:Object(r.w)(["emoji-tabs-item",{active:e.activeGroupView===t.id,disabled:0===t.emojis.length}]),title:t.text,onClick:Object(r.Y)(n=>e.highlight(t.id),["prevent"])},[Object(r.m)(a,{icon:t.icon,"fixed-width":""},null,8,["icon"])],10,$))),128))]),e.stickerPickerEnabled?(Object(r.D)(),Object(r.j)("span",z,[Object(r.k)("span",{class:Object(r.w)(["stickers-tab-icon additional-tabs-item",{active:e.showingStickers}]),title:e.$t("emoji.stickers"),onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleStickers&&e.toggleStickers(...t),["prevent"]))},[Object(r.m)(a,{icon:"sticky-note","fixed-width":""})],10,M)])):Object(r.i)("",!0)]),Object(r.k)("div",U,[Object(r.k)("div",{class:Object(r.w)(["emoji-content",{hidden:e.showingStickers}])},[Object(r.k)("div",F,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.keyword=t),type:"text",class:"form-control",placeholder:e.$t("emoji.search_emoji")},null,8,E),[[r.S,e.keyword]])]),Object(r.k)("div",{ref:"emoji-groups",class:Object(r.w)(["emoji-groups",e.groupsScrolledClass]),onScroll:t[2]||(t[2]=(...t)=>e.onScroll&&e.onScroll(...t))},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojisView,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:"emoji-group"},[Object(r.k)("h6",{ref_for:!0,ref:"group-"+t.id,class:"emoji-group-title"},Object(r.O)(t.text),513),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.emojis,n=>(Object(r.D)(),Object(r.j)("span",{key:t.id+n.displayText,title:n.displayText,class:"emoji-item",onClick:Object(r.Y)(t=>e.onEmoji(n),["stop","prevent"])},[n.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:1,src:n.imageUrl},null,8,A)):(Object(r.D)(),Object(r.j)("span",R,Object(r.O)(n.replacement),1))],8,L))),128)),Object(r.k)("span",{ref_for:!0,ref:"group-end-"+t.id},null,512)]))),128))],34),Object(r.k)("div",N,[Object(r.m)(c,{modelValue:e.keepOpen,"onUpdate:modelValue":t[3]||(t[3]=t=>e.keepOpen=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("emoji.keep_open")),1)]),_:1},8,["modelValue"])])],2),e.showingStickers?(Object(r.D)(),Object(r.j)("div",B,[Object(r.m)(l,{onUploaded:e.onStickerUploaded,onUploadFailed:e.onStickerUploadFailed},null,8,["onUploaded","onUploadFailed"])])):Object(r.i)("",!0)])])}]]),Q=n(137),ee=n(41),te=["imageUrl"];function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(ee.c);var ie,oe={emits:["update:modelValue","shown"],props:{suggest:{required:!0,type:Function},modelValue:{required:!0,type:String},enableEmojiPicker:{required:!1,type:Boolean,default:!1},hideEmojiButton:{required:!1,type:Boolean,default:!1},enableStickerPicker:{required:!1,type:Boolean,default:!1},placement:{required:!1,type:String,default:"auto"},newlineOnCtrlEnter:{required:!1,type:Boolean,default:!1}},data:function(){return{input:void 0,highlighted:0,caret:0,focused:!1,blurTimeout:null,showPicker:!1,temporarilyHideSuggestions:!1,keepOpen:!1,disableClickOutside:!1,suggestions:[]}},components:{EmojiPicker:Z},computed:{padEmoji:function(){return this.$store.getters.mergedConfig.padEmoji},showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length>0&&!this.showPicker&&!this.temporarilyHideSuggestions},textAtCaret:function(){return(this.wordAtCaret||{}).word||""},wordAtCaret:function(){if(this.modelValue&&this.caret)return x.wordAtPosition(this.modelValue,this.caret-1)||{}}},mounted:function(){var e=this.$refs.root,t=e.querySelector(".emoji-input > input")||e.querySelector(".emoji-input > textarea");t&&(this.input=t,this.resize(),t.addEventListener("blur",this.onBlur),t.addEventListener("focus",this.onFocus),t.addEventListener("paste",this.onPaste),t.addEventListener("keyup",this.onKeyUp),t.addEventListener("keydown",this.onKeyDown),t.addEventListener("click",this.onClickInput),t.addEventListener("transitionend",this.onTransition),t.addEventListener("input",this.onInput))},unmounted:function(){var e=this.input;e&&(e.removeEventListener("blur",this.onBlur),e.removeEventListener("focus",this.onFocus),e.removeEventListener("paste",this.onPaste),e.removeEventListener("keyup",this.onKeyUp),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("click",this.onClickInput),e.removeEventListener("transitionend",this.onTransition),e.removeEventListener("input",this.onInput))},watch:{showSuggestions:function(e){this.$emit("shown",e)},textAtCaret:(ie=O()(y.a.mark((function e(t){var n,r;return y.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.charAt(0),this.suggestions=[],t!==n){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,this.suggest(t);case 6:if(r=e.sent,this.textAtCaret===t){e.next=9;break}return e.abrupt("return");case 9:if(!(r.length<=0)){e.next=11;break}return e.abrupt("return");case 11:this.suggestions=g()(r,5).map((function(e){var t=e.imageUrl;return re(re({},m()(e,te)),{},{img:t||""})}));case 12:case"end":return e.stop()}}),e,this)}))),function(e){return ie.apply(this,arguments)}),suggestions:{handler:function(e){this.$nextTick(this.resize)},deep:!0}},methods:{focusPickerInput:function(){var e=this.$refs.picker.$el;if(e){var t=e.querySelector("input");t&&t.focus()}},triggerShowPicker:function(){var e=this;this.showPicker=!0,this.$refs.picker.startEmojiLoad(),this.$nextTick((function(){e.scrollIntoView(),e.focusPickerInput()})),this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0)},togglePicker:function(){this.input.focus(),this.showPicker=!this.showPicker,this.showPicker&&(this.scrollIntoView(),this.$refs.picker.startEmojiLoad(),this.$nextTick(this.focusPickerInput))},replace:function(e){var t=x.replaceWord(this.modelValue,this.wordAtCaret,e);this.$emit("update:modelValue",t),this.caret=0},insert:function(e){var t=e.insertion,n=e.keepOpen,r=e.surroundingSpace,i=void 0===r||r,o=this.modelValue.substring(0,this.caret)||"",s=this.modelValue.substring(this.caret)||"",a=/\s/,c=i&&!a.exec(o.slice(-1))&&o.length&&this.padEmoji>0?" ":"",l=i&&!a.exec(s[0])&&this.padEmoji?" ":"",u=[o,c,t,l,s].join("");this.keepOpen=n,this.$emit("update:modelValue",u);var d=this.caret+(t+l+c).length;n||this.input.focus(),this.$nextTick((function(){this.input.setSelectionRange(d,d),this.caret=d}))},replaceText:function(e,t){var n=this.suggestions.length||0;if(1!==this.textAtCaret.length&&(n>0||t)){var r=(t||this.suggestions[this.highlighted]).replacement,i=x.replaceWord(this.modelValue,this.wordAtCaret,r);this.$emit("update:modelValue",i),this.highlighted=0;var o=this.wordAtCaret.start+r.length;this.$nextTick((function(){this.input.focus(),this.input.setSelectionRange(o,o),this.caret=o})),e.preventDefault()}},cycleBackward:function(e){(this.suggestions.length||0)>1?(this.highlighted-=1,this.highlighted<0&&(this.highlighted=this.suggestions.length-1),e.preventDefault()):this.highlighted=0},cycleForward:function(e){var t=this.suggestions.length||0;t>1?(this.highlighted+=1,this.highlighted>=t&&(this.highlighted=0),e.preventDefault()):this.highlighted=0},scrollIntoView:function(){var e=this,t=this.$refs.picker.$el,n=this.$el.closest(".sidebar-scroller")||this.$el.closest(".post-form-modal-view")||window,r=n===window?n.scrollY:n.scrollTop,i=r+(n===window?n.innerHeight:n.offsetHeight),o=t.offsetHeight+Object(Q.a)(t,n).top,s=r+Math.max(0,o-i);n===window?n.scroll(0,s):n.scrollTop=s,this.$nextTick((function(){var t=e.input.offsetHeight,n=e.$refs.picker;n.$el.getBoundingClientRect().bottom>window.innerHeight&&(n.$el.style.top="auto",n.$el.style.bottom=t+"px")}))},onTransition:function(e){this.resize()},onBlur:function(e){var t=this;this.blurTimeout=setTimeout((function(){t.focused=!1,t.setCaret(e),t.resize()}),200)},onClick:function(e,t){this.replaceText(e,t)},onFocus:function(e){this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.keepOpen||(this.showPicker=!1),this.focused=!0,this.setCaret(e),this.resize(),this.temporarilyHideSuggestions=!1},onKeyUp:function(e){var t=e.key;this.setCaret(e),this.resize(),this.temporarilyHideSuggestions="Escape"===t},onPaste:function(e){this.setCaret(e),this.resize()},onKeyDown:function(e){var t=this,n=e.ctrlKey,r=e.shiftKey,i=e.key;this.newlineOnCtrlEnter&&n&&"Enter"===i&&(this.insert({insertion:"\n",surroundingSpace:!1}),e.stopPropagation(),e.preventDefault(),this.$nextTick((function(){t.input.blur(),t.input.focus()}))),this.temporarilyHideSuggestions||("Tab"===i&&(r?this.cycleBackward(e):this.cycleForward(e)),"ArrowUp"===i?this.cycleBackward(e):"ArrowDown"===i&&this.cycleForward(e),"Enter"===i&&(n||this.replaceText(e))),"Escape"===i&&(this.temporarilyHideSuggestions||this.input.focus()),this.showPicker=!1,this.resize()},onInput:function(e){this.showPicker=!1,this.setCaret(e),this.resize(),this.$emit("update:modelValue",e.target.value)},onClickInput:function(e){this.showPicker=!1},onClickOutside:function(e){this.disableClickOutside||(this.showPicker=!1)},onStickerUploaded:function(e){this.showPicker=!1,this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.showPicker=!1,this.$emit("sticker-upload-Failed",e)},setCaret:function(e){var t=e.target.selectionStart;this.caret=t},resize:function(){var e=this.$refs.panel;if(e){var t=this.$refs.picker.$el,n=this.$refs["panel-body"],r=this.input,i=r.offsetHeight,o=r.offsetTop+i;this.setPlacement(n,e,o),this.setPlacement(t,t,o)}},setPlacement:function(e,t,n){e&&t&&(t.style.top=n+"px",t.style.bottom="auto",("top"===this.placement||"auto"===this.placement&&this.overflowsBottom(e))&&(t.style.top="auto",t.style.bottom=this.input.offsetHeight+"px"))},overflowsBottom:function(e){return e.getBoundingClientRect().bottom>window.innerHeight}}};n(504);const se=X()(oe,[["render",function(e,t,n,p,h,b){const m=Object(r.J)("FAIcon"),f=Object(r.J)("EmojiPicker"),O=Object(r.K)("click-outside");return Object(r.W)((Object(r.D)(),Object(r.j)("div",{ref:"root",class:Object(r.w)(["emoji-input",{"with-picker":!e.hideEmojiButton}])},[Object(r.I)(e.$slots,"default"),e.enableEmojiPicker?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.hideEmojiButton?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled emoji-picker-icon",type:"button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.togglePicker&&e.togglePicker(...t),["prevent"]))},[Object(r.m)(m,{icon:["far","smile-beam"]})])),e.enableEmojiPicker?(Object(r.D)(),Object(r.h)(f,{key:1,ref:"picker",class:Object(r.w)([{hide:!e.showPicker},"emoji-picker-panel"]),"enable-sticker-picker":e.enableStickerPicker,onEmoji:e.insert,onStickerUploaded:e.onStickerUploaded,onStickerUploadFailed:e.onStickerUploadFailed},null,8,["class","enable-sticker-picker","onEmoji","onStickerUploaded","onStickerUploadFailed"])):Object(r.i)("",!0)],64)):Object(r.i)("",!0),Object(r.k)("div",{ref:"panel",class:Object(r.w)(["autocomplete-panel",{hide:!e.showSuggestions}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.suggestions,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["autocomplete-item",{highlighted:n===e.highlighted}]),onClick:Object(r.Y)(n=>e.onClick(n,t),["stop","prevent"])},[Object(r.k)("span",s,[t.img?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.img},null,8,a)):(Object(r.D)(),Object(r.j)("span",c,Object(r.O)(t.replacement),1))]),Object(r.k)("div",l,[Object(r.k)("span",u,Object(r.O)(t.displayText),1),Object(r.k)("span",d,Object(r.O)(t.detailText),1)])],10,o))),128))],512)],2)],2)),[[O,e.onClickOutside]])}]]);t.a=se},,,,,,,,,,,,,,,,,function(e,t,n){e.exports=n.p+"static/img/nsfw.ca95de9.png"},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t),t.default={about:{mrf:{federation:e=>{const{normalize:t}=e;return t(["Federation"])},keyword:{keyword_policies:e=>{const{normalize:t}=e;return t(["Keyword policies"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "The Whole Known Network" Timeline'])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},replace:e=>{const{normalize:t}=e;return t(["Replace"])},is_replaced_by:e=>{const{normalize:t}=e;return t(["→"])}},mrf_policies:e=>{const{normalize:t}=e;return t(["Enabled MRF policies"])},mrf_policies_desc:e=>{const{normalize:t}=e;return t(["MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:"])},simple:{simple_policies:e=>{const{normalize:t}=e;return t(["Instance-specific policies"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},reason:e=>{const{normalize:t}=e;return t(["Reason"])},not_applicable:e=>{const{normalize:t}=e;return t(["N/A"])},accept:e=>{const{normalize:t}=e;return t(["Accept"])},accept_desc:e=>{const{normalize:t}=e;return t(["This instance only accepts messages from the following instances:"])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},reject_desc:e=>{const{normalize:t}=e;return t(["This instance will not accept messages from the following instances:"])},quarantine:e=>{const{normalize:t}=e;return t(["Quarantine"])},quarantine_desc:e=>{const{normalize:t}=e;return t(["This instance will send only public posts to the following instances:"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "Known Network" Timeline'])},ftl_removal_desc:e=>{const{normalize:t}=e;return t(['This instance removes these instances from "Known Network" timeline:'])},media_removal:e=>{const{normalize:t}=e;return t(["Media Removal"])},media_removal_desc:e=>{const{normalize:t}=e;return t(["This instance removes media from posts on the following instances:"])},media_nsfw:e=>{const{normalize:t}=e;return t(["Media force-set as sensitive"])},media_nsfw_desc:e=>{const{normalize:t}=e;return t(["This instance forces media to be set sensitive in posts on the following instances:"])}}},staff:e=>{const{normalize:t}=e;return t(["Staff"])}},shoutbox:{title:e=>{const{normalize:t}=e;return t(["Shoutbox"])}},domain_mute_card:{mute:e=>{const{normalize:t}=e;return t(["Mute"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])}},exporter:{export:e=>{const{normalize:t}=e;return t(["Export"])},processing:e=>{const{normalize:t}=e;return t(["Processing, you'll soon be asked to download your file"])}},features_panel:{shout:e=>{const{normalize:t}=e;return t(["Shoutbox"])},pleroma_chat_messages:e=>{const{normalize:t}=e;return t(["Pleroma Chat"])},gopher:e=>{const{normalize:t}=e;return t(["Gopher"])},media_proxy:e=>{const{normalize:t}=e;return t(["Media proxy"])},scope_options:e=>{const{normalize:t}=e;return t(["Scope options"])},text_limit:e=>{const{normalize:t}=e;return t(["Text limit"])},title:e=>{const{normalize:t}=e;return t(["Features"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},upload_limit:e=>{const{normalize:t}=e;return t(["Upload limit"])}},finder:{error_fetching_user:e=>{const{normalize:t}=e;return t(["Error fetching user"])},find_user:e=>{const{normalize:t}=e;return t(["Find user"])}},general:{apply:e=>{const{normalize:t}=e;return t(["Apply"])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},more:e=>{const{normalize:t}=e;return t(["More"])},loading:e=>{const{normalize:t}=e;return t(["Loading…"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occured"])},error_retry:e=>{const{normalize:t}=e;return t(["Please try again"])},retry:e=>{const{normalize:t}=e;return t(["Try again"])},optional:e=>{const{normalize:t}=e;return t(["optional"])},show_more:e=>{const{normalize:t}=e;return t(["Show more"])},show_less:e=>{const{normalize:t}=e;return t(["Show less"])},dismiss:e=>{const{normalize:t}=e;return t(["Dismiss"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])},disable:e=>{const{normalize:t}=e;return t(["Disable"])},enable:e=>{const{normalize:t}=e;return t(["Enable"])},confirm:e=>{const{normalize:t}=e;return t(["Confirm"])},verify:e=>{const{normalize:t}=e;return t(["Verify"])},close:e=>{const{normalize:t}=e;return t(["Close"])},peek:e=>{const{normalize:t}=e;return t(["Peek"])},role:{admin:e=>{const{normalize:t}=e;return t(["Admin"])},moderator:e=>{const{normalize:t}=e;return t(["Moderator"])}},flash_content:e=>{const{normalize:t}=e;return t(["Click to show Flash content using Ruffle (Experimental, may not work)."])},flash_security:e=>{const{normalize:t}=e;return t(["Note that this can be potentially dangerous since Flash content is still arbitrary code."])},flash_fail:e=>{const{normalize:t}=e;return t(["Failed to load flash content, see console for details."])},scope_in_timeline:{direct:e=>{const{normalize:t}=e;return t(["Direct"])},private:e=>{const{normalize:t}=e;return t(["Followers-only"])},public:e=>{const{normalize:t}=e;return t(["Public"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted"])}}},image_cropper:{crop_picture:e=>{const{normalize:t}=e;return t(["Crop picture"])},save:e=>{const{normalize:t}=e;return t(["Save"])},save_without_cropping:e=>{const{normalize:t}=e;return t(["Save without cropping"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},importer:{submit:e=>{const{normalize:t}=e;return t(["Submit"])},success:e=>{const{normalize:t}=e;return t(["Imported successfully."])},error:e=>{const{normalize:t}=e;return t(["An error occured while importing this file."])}},login:{login:e=>{const{normalize:t}=e;return t(["Log in"])},description:e=>{const{normalize:t}=e;return t(["Log in with OAuth"])},logout:e=>{const{normalize:t}=e;return t(["Log out"])},password:e=>{const{normalize:t}=e;return t(["Password"])},placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},register:e=>{const{normalize:t}=e;return t(["Register"])},username:e=>{const{normalize:t}=e;return t(["Username"])},hint:e=>{const{normalize:t}=e;return t(["Log in to join the discussion"])},authentication_code:e=>{const{normalize:t}=e;return t(["Authentication code"])},enter_recovery_code:e=>{const{normalize:t}=e;return t(["Enter a recovery code"])},enter_two_factor_code:e=>{const{normalize:t}=e;return t(["Enter a two-factor code"])},recovery_code:e=>{const{normalize:t}=e;return t(["Recovery code"])},heading:{totp:e=>{const{normalize:t}=e;return t(["Two-factor authentication"])},recovery:e=>{const{normalize:t}=e;return t(["Two-factor recovery"])}}},media_modal:{previous:e=>{const{normalize:t}=e;return t(["Previous"])},next:e=>{const{normalize:t}=e;return t(["Next"])},counter:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("current"))," / ",n(r("total"))])},hide:e=>{const{normalize:t}=e;return t(["Close media viewer"])}},nav:{about:e=>{const{normalize:t}=e;return t(["About"])},administration:e=>{const{normalize:t}=e;return t(["Administration"])},back:e=>{const{normalize:t}=e;return t(["Back"])},friend_requests:e=>{const{normalize:t}=e;return t(["Follow requests"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},interactions:e=>{const{normalize:t}=e;return t(["Interactions"])},dms:e=>{const{normalize:t}=e;return t(["Direct messages"])},public_tl:e=>{const{normalize:t}=e;return t(["Public timeline"])},timeline:e=>{const{normalize:t}=e;return t(["Timeline"])},home_timeline:e=>{const{normalize:t}=e;return t(["Home timeline"])},twkn:e=>{const{normalize:t}=e;return t(["Known Network"])},bookmarks:e=>{const{normalize:t}=e;return t(["Bookmarks"])},user_search:e=>{const{normalize:t}=e;return t(["User Search"])},search:e=>{const{normalize:t}=e;return t(["Search"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},preferences:e=>{const{normalize:t}=e;return t(["Preferences"])},timelines:e=>{const{normalize:t}=e;return t(["Timelines"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])}},notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching notifications: ",n(r(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["reacted with ",n(r(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}},polls:{add_poll:e=>{const{normalize:t}=e;return t(["Add poll"])},add_option:e=>{const{normalize:t}=e;return t(["Add option"])},option:e=>{const{normalize:t}=e;return t(["Option"])},votes:e=>{const{normalize:t}=e;return t(["votes"])},people_voted_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," person voted"]),t([n(r("count"))," people voted"])])},votes_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," vote"]),t([n(r("count"))," votes"])])},vote:e=>{const{normalize:t}=e;return t(["Vote"])},type:e=>{const{normalize:t}=e;return t(["Poll type"])},single_choice:e=>{const{normalize:t}=e;return t(["Single choice"])},multiple_choices:e=>{const{normalize:t}=e;return t(["Multiple choices"])},expiry:e=>{const{normalize:t}=e;return t(["Poll age"])},expires_in:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ends in ",n(r(0))])},expired:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ended ",n(r(0))," ago"])},not_enough_options:e=>{const{normalize:t}=e;return t(["Too few unique options in poll"])}},emoji:{stickers:e=>{const{normalize:t}=e;return t(["Stickers"])},emoji:e=>{const{normalize:t}=e;return t(["Emoji"])},keep_open:e=>{const{normalize:t}=e;return t(["Keep picker open"])},search_emoji:e=>{const{normalize:t}=e;return t(["Search for an emoji"])},add_emoji:e=>{const{normalize:t}=e;return t(["Insert emoji"])},custom:e=>{const{normalize:t}=e;return t(["Custom emoji"])},unicode:e=>{const{normalize:t}=e;return t(["Unicode emoji"])},load_all_hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loaded first ",n(r("saneAmount"))," emoji, loading all emoji may cause performance issues."])},load_all:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loading all ",n(r("emojiAmount"))," emoji"])}},errors:{storage_unavailable:e=>{const{normalize:t}=e;return t(["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."])}},interactions:{favs_repeats:e=>{const{normalize:t}=e;return t(["Repeats and favorites"])},follows:e=>{const{normalize:t}=e;return t(["New follows"])},moves:e=>{const{normalize:t}=e;return t(["User migrates"])},load_older:e=>{const{normalize:t}=e;return t(["Load older interactions"])}},post_status:{new_status:e=>{const{normalize:t}=e;return t(["Post new status"])},account_not_locked_warning:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your account is not ",n(r(0)),". Anyone can follow you to view your follower-only posts."])},account_not_locked_warning_link:e=>{const{normalize:t}=e;return t(["locked"])},attachments_sensitive:e=>{const{normalize:t}=e;return t(["Mark attachments as sensitive"])},media_description:e=>{const{normalize:t}=e;return t(["Media description"])},content_type:{"text/plain":e=>{const{normalize:t}=e;return t(["Plain text"])},"text/html":e=>{const{normalize:t}=e;return t(["HTML"])},"text/markdown":e=>{const{normalize:t}=e;return t(["Markdown"])},"text/bbcode":e=>{const{normalize:t}=e;return t(["BBCode"])},"text/x.misskeymarkdown":e=>{const{normalize:t}=e;return t(["MFM"])}},content_warning:e=>{const{normalize:t}=e;return t(["Subject (optional)"])},default:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},direct_warning_to_all:e=>{const{normalize:t}=e;return t(["This post will be visible to all the mentioned users."])},direct_warning_to_first_only:e=>{const{normalize:t}=e;return t(["This post will only be visible to the mentioned users at the beginning of the message."])},posting:e=>{const{normalize:t}=e;return t(["Posting"])},post:e=>{const{normalize:t}=e;return t(["Post"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},preview_empty:e=>{const{normalize:t}=e;return t(["Empty"])},empty_status_error:e=>{const{normalize:t}=e;return t(["Can't post an empty status with no files"])},media_description_error:e=>{const{normalize:t}=e;return t(["Failed to update media, try again"])},scope_notice:{public:e=>{const{normalize:t}=e;return t(["This post will be visible to everyone"])},private:e=>{const{normalize:t}=e;return t(["This post will be visible to your followers only"])},unlisted:e=>{const{normalize:t}=e;return t(["This post will not be visible in Public Timeline and The Whole Known Network"])},local:e=>{const{normalize:t}=e;return t(["This post will not be visible on other instances"])}},scope:{direct:e=>{const{normalize:t}=e;return t(["Direct - post to mentioned users only"])},private:e=>{const{normalize:t}=e;return t(["Followers-only - post to followers only"])},public:e=>{const{normalize:t}=e;return t(["Public - post to public timelines"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted - do not post to public timelines"])},local:e=>{const{normalize:t}=e;return t(["Local - do not federate this post"])}}},registration:{bio:e=>{const{normalize:t}=e;return t(["Bio"])},email:e=>{const{normalize:t}=e;return t(["Email"])},fullname:e=>{const{normalize:t}=e;return t(["Display name"])},password_confirm:e=>{const{normalize:t}=e;return t(["Password confirmation"])},registration:e=>{const{normalize:t}=e;return t(["Registration"])},token:e=>{const{normalize:t}=e;return t(["Invite token"])},captcha:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},new_captcha:e=>{const{normalize:t}=e;return t(["Click the image to get a new captcha"])},username_placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},fullname_placeholder:e=>{const{normalize:t}=e;return t(["e.g. Lain Iwakura"])},bio_placeholder:e=>{const{normalize:t}=e;return t(["e.g.\nHi, I'm Lain.\nI’m an anime girl living in suburban Japan. You may know me from the Wired."])},reason:e=>{const{normalize:t}=e;return t(["Reason to register"])},reason_placeholder:e=>{const{normalize:t}=e;return t(["This instance approves registrations manually.\nLet the administration know why you want to register."])},register:e=>{const{normalize:t}=e;return t(["Register"])},validations:{username_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},fullname_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},email_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_match:e=>{const{normalize:t}=e;return t(["should be the same as password"])}},email_language:e=>{const{normalize:t}=e;return t(["In which language do you want to receive emails from the server?"])}},remote_user_resolver:{remote_user_resolver:e=>{const{normalize:t}=e;return t(["Remote user resolver"])},searching_for:e=>{const{normalize:t}=e;return t(["Searching for"])},error:e=>{const{normalize:t}=e;return t(["Not found."])}},selectable_list:{select_all:e=>{const{normalize:t}=e;return t(["Select all"])}},settings:{app_name:e=>{const{normalize:t}=e;return t(["App name"])},expert_mode:e=>{const{normalize:t}=e;return t(["Show advanced"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},security:e=>{const{normalize:t}=e;return t(["Security"])},setting_changed:e=>{const{normalize:t}=e;return t(["Setting is different from default"])},setting_server_side:e=>{const{normalize:t}=e;return t(["This setting is tied to your profile and affects all sessions and clients"])},enter_current_password_to_confirm:e=>{const{normalize:t}=e;return t(["Enter your current password to confirm your identity"])},post_look_feel:e=>{const{normalize:t}=e;return t(["Posts Look & Feel"])},mention_links:e=>{const{normalize:t}=e;return t(["Mention links"])},mfa:{otp:e=>{const{normalize:t}=e;return t(["OTP"])},setup_otp:e=>{const{normalize:t}=e;return t(["Setup OTP"])},wait_pre_setup_otp:e=>{const{normalize:t}=e;return t(["presetting OTP"])},confirm_and_enable:e=>{const{normalize:t}=e;return t(["Confirm & enable OTP"])},title:e=>{const{normalize:t}=e;return t(["Two-factor Authentication"])},generate_new_recovery_codes:e=>{const{normalize:t}=e;return t(["Generate new recovery codes"])},warning_of_generate_new_codes:e=>{const{normalize:t}=e;return t(["When you generate new recovery codes, your old codes won’t work anymore."])},recovery_codes:e=>{const{normalize:t}=e;return t(["Recovery codes."])},waiting_a_recovery_codes:e=>{const{normalize:t}=e;return t(["Receiving backup codes…"])},recovery_codes_warning:e=>{const{normalize:t}=e;return t(["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."])},authentication_methods:e=>{const{normalize:t}=e;return t(["Authentication methods"])},scan:{title:e=>{const{normalize:t}=e;return t(["Scan"])},desc:e=>{const{normalize:t}=e;return t(["Using your two-factor app, scan this QR code or enter text key:"])},secret_code:e=>{const{normalize:t}=e;return t(["Key"])}},verify:{desc:e=>{const{normalize:t}=e;return t(["To enable two-factor authentication, enter the code from your two-factor app:"])}}},allow_following_move:e=>{const{normalize:t}=e;return t(["Allow auto-follow when following account moves"])},attachmentRadius:e=>{const{normalize:t}=e;return t(["Attachments"])},attachments:e=>{const{normalize:t}=e;return t(["Attachments"])},avatar:e=>{const{normalize:t}=e;return t(["Avatar"])},avatarAltRadius:e=>{const{normalize:t}=e;return t(["Avatars (notifications)"])},avatarRadius:e=>{const{normalize:t}=e;return t(["Avatars"])},background:e=>{const{normalize:t}=e;return t(["Background"])},bio:e=>{const{normalize:t}=e;return t(["Bio"])},email_language:e=>{const{normalize:t}=e;return t(["Language for receiving emails from the server"])},block_export:e=>{const{normalize:t}=e;return t(["Block export"])},block_export_button:e=>{const{normalize:t}=e;return t(["Export your blocks to a csv file"])},block_import:e=>{const{normalize:t}=e;return t(["Block import"])},block_import_error:e=>{const{normalize:t}=e;return t(["Error importing blocks"])},blocks_imported:e=>{const{normalize:t}=e;return t(["Blocks imported! Processing them will take a while."])},mute_export:e=>{const{normalize:t}=e;return t(["Mute export"])},mute_export_button:e=>{const{normalize:t}=e;return t(["Export your mutes to a csv file"])},mute_import:e=>{const{normalize:t}=e;return t(["Mute import"])},mute_import_error:e=>{const{normalize:t}=e;return t(["Error importing mutes"])},mutes_imported:e=>{const{normalize:t}=e;return t(["Mutes imported! Processing them will take a while."])},import_mutes_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import mutes from a csv file"])},blocks_tab:e=>{const{normalize:t}=e;return t(["Blocks"])},bot:e=>{const{normalize:t}=e;return t(["This is a bot account"])},btnRadius:e=>{const{normalize:t}=e;return t(["Buttons"])},cBlue:e=>{const{normalize:t}=e;return t(["Blue (Reply, follow)"])},cGreen:e=>{const{normalize:t}=e;return t(["Green (Retweet)"])},cOrange:e=>{const{normalize:t}=e;return t(["Orange (Favorite)"])},cRed:e=>{const{normalize:t}=e;return t(["Red (Cancel)"])},change_email:e=>{const{normalize:t}=e;return t(["Change email"])},change_email_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your email."])},changed_email:e=>{const{normalize:t}=e;return t(["Email changed successfully!"])},change_password:e=>{const{normalize:t}=e;return t(["Change password"])},change_password_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your password."])},changed_password:e=>{const{normalize:t}=e;return t(["Password changed successfully!"])},chatMessageRadius:e=>{const{normalize:t}=e;return t(["Chat message"])},collapse_subject:e=>{const{normalize:t}=e;return t(["Collapse posts with subjects"])},composing:e=>{const{normalize:t}=e;return t(["Composing"])},confirm_new_password:e=>{const{normalize:t}=e;return t(["Confirm new password"])},current_avatar:e=>{const{normalize:t}=e;return t(["Your current avatar"])},current_mascot:e=>{const{normalize:t}=e;return t(["Your current mascot"])},current_password:e=>{const{normalize:t}=e;return t(["Current password"])},mutes_and_blocks:e=>{const{normalize:t}=e;return t(["Mutes and Blocks"])},data_import_export_tab:e=>{const{normalize:t}=e;return t(["Data import / export"])},default_vis:e=>{const{normalize:t}=e;return t(["Default visibility scope"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},delete_account_description:e=>{const{normalize:t}=e;return t(["Permanently delete your data and deactivate your account."])},delete_account_error:e=>{const{normalize:t}=e;return t(["There was an issue deleting your account. If this persists please contact your instance administrator."])},delete_account_instructions:e=>{const{normalize:t}=e;return t(["Type your password in the input below to confirm account deletion."])},discoverable:e=>{const{normalize:t}=e;return t(["Allow discovery of this account in search results and other services"])},domain_mutes:e=>{const{normalize:t}=e;return t(["Domains"])},avatar_size_instruction:e=>{const{normalize:t}=e;return t(["The recommended minimum size for avatar images is 150x150 pixels."])},pad_emoji:e=>{const{normalize:t}=e;return t(["Pad emoji with spaces when adding from picker"])},emoji_reactions_on_timeline:e=>{const{normalize:t}=e;return t(["Show emoji reactions on timeline"])},export_theme:e=>{const{normalize:t}=e;return t(["Save preset"])},filtering:e=>{const{normalize:t}=e;return t(["Filtering"])},wordfilter:e=>{const{normalize:t}=e;return t(["Wordfilter"])},filtering_explanation:e=>{const{normalize:t}=e;return t(["All statuses containing these words will be muted, one per line"])},word_filter:e=>{const{normalize:t}=e;return t(["Word filter"])},follow_export:e=>{const{normalize:t}=e;return t(["Follow export"])},follow_export_button:e=>{const{normalize:t}=e;return t(["Export your follows to a csv file"])},follow_import:e=>{const{normalize:t}=e;return t(["Follow import"])},follow_import_error:e=>{const{normalize:t}=e;return t(["Error importing followers"])},follows_imported:e=>{const{normalize:t}=e;return t(["Follows imported! Processing them will take a while."])},accent:e=>{const{normalize:t}=e;return t(["Accent"])},foreground:e=>{const{normalize:t}=e;return t(["Foreground"])},general:e=>{const{normalize:t}=e;return t(["General"])},hide_attachments_in_convo:e=>{const{normalize:t}=e;return t(["Hide attachments in conversations"])},hide_attachments_in_tl:e=>{const{normalize:t}=e;return t(["Hide attachments in timeline"])},hide_media_previews:e=>{const{normalize:t}=e;return t(["Hide media previews"])},hide_muted_posts:e=>{const{normalize:t}=e;return t(["Hide posts of muted users"])},mute_bot_posts:e=>{const{normalize:t}=e;return t(["Mute bot posts"])},hide_bot_indication:e=>{const{normalize:t}=e;return t(["Hide bot indication in posts"])},hide_all_muted_posts:e=>{const{normalize:t}=e;return t(["Hide muted posts"])},max_thumbnails:e=>{const{normalize:t}=e;return t(["Maximum amount of thumbnails per post (empty = no limit)"])},hide_isp:e=>{const{normalize:t}=e;return t(["Hide instance-specific panel"])},hide_shoutbox:e=>{const{normalize:t}=e;return t(["Hide instance shoutbox"])},right_sidebar:e=>{const{normalize:t}=e;return t(["Reverse order of columns"])},always_show_post_button:e=>{const{normalize:t}=e;return t(["Always show floating New Post button"])},hide_wallpaper:e=>{const{normalize:t}=e;return t(["Hide instance wallpaper"])},preload_images:e=>{const{normalize:t}=e;return t(["Preload images"])},use_one_click_nsfw:e=>{const{normalize:t}=e;return t(["Open NSFW attachments with just one click"])},hide_post_stats:e=>{const{normalize:t}=e;return t(["Hide post statistics (e.g. the number of favorites)"])},hide_user_stats:e=>{const{normalize:t}=e;return t(["Hide user statistics (e.g. the number of followers)"])},hide_filtered_statuses:e=>{const{normalize:t}=e;return t(["Hide all filtered posts"])},hide_wordfiltered_statuses:e=>{const{normalize:t}=e;return t(["Hide word-filtered statuses"])},hide_muted_threads:e=>{const{normalize:t}=e;return t(["Hide muted threads"])},import_blocks_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import blocks from a csv file"])},import_followers_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import follows from a csv file"])},import_theme:e=>{const{normalize:t}=e;return t(["Load preset"])},inputRadius:e=>{const{normalize:t}=e;return t(["Input fields"])},checkboxRadius:e=>{const{normalize:t}=e;return t(["Checkboxes"])},instance_default:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["(default: ",n(r("value")),")"])},instance_default_simple:e=>{const{normalize:t}=e;return t(["(default)"])},interface:e=>{const{normalize:t}=e;return t(["Interface"])},interfaceLanguage:e=>{const{normalize:t}=e;return t(["Interface language"])},invalid_theme_imported:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma theme. No changes to your theme were made."])},limited_availability:e=>{const{normalize:t}=e;return t(["Unavailable in your browser"])},links:e=>{const{normalize:t}=e;return t(["Links"])},lock_account_description:e=>{const{normalize:t}=e;return t(["Restrict your account to approved followers only"])},loop_video:e=>{const{normalize:t}=e;return t(["Loop videos"])},loop_video_silent_only:e=>{const{normalize:t}=e;return t(['Loop only videos without sound (i.e. Mastodon\'s "gifs")'])},mutes_tab:e=>{const{normalize:t}=e;return t(["Mutes"])},play_videos_in_modal:e=>{const{normalize:t}=e;return t(["Play videos in a popup frame"])},file_export_import:{backup_restore:e=>{const{normalize:t}=e;return t(["Settings backup"])},backup_settings:e=>{const{normalize:t}=e;return t(["Backup settings to file"])},backup_settings_theme:e=>{const{normalize:t}=e;return t(["Backup settings and theme to file"])},restore_settings:e=>{const{normalize:t}=e;return t(["Restore settings from file"])},errors:{invalid_file:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma settings backup. No changes were made."])},file_too_new:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", this PleromaFE (settings ver ",n(r("feMajor")),") is too old to handle it"])},file_too_old:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", file version is too old and not supported (min. set. ver. ",n(r("feMajor")),")"])},file_slightly_new:e=>{const{normalize:t}=e;return t(["File minor version is different, some settings might not load"])}}},profile_fields:{label:e=>{const{normalize:t}=e;return t(["Profile metadata"])},add_field:e=>{const{normalize:t}=e;return t(["Add field"])},name:e=>{const{normalize:t}=e;return t(["Label"])},value:e=>{const{normalize:t}=e;return t(["Content"])}},account_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},use_contain_fit:e=>{const{normalize:t}=e;return t(["Don't crop the attachment in thumbnails"])},name:e=>{const{normalize:t}=e;return t(["Name"])},name_bio:e=>{const{normalize:t}=e;return t(["Name & bio"])},new_email:e=>{const{normalize:t}=e;return t(["New email"])},new_password:e=>{const{normalize:t}=e;return t(["New password"])},posts:e=>{const{normalize:t}=e;return t(["Posts"])},user_profiles:e=>{const{normalize:t}=e;return t(["User Profiles"])},notification_visibility:e=>{const{normalize:t}=e;return t(["Types of notifications to show"])},notification_visibility_follows:e=>{const{normalize:t}=e;return t(["Follows"])},notification_visibility_likes:e=>{const{normalize:t}=e;return t(["Favorites"])},notification_visibility_mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},notification_visibility_repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},notification_visibility_moves:e=>{const{normalize:t}=e;return t(["User Migrates"])},notification_visibility_emoji_reactions:e=>{const{normalize:t}=e;return t(["Reactions"])},notification_visibility_polls:e=>{const{normalize:t}=e;return t(["Ends of polls you voted in"])},no_rich_text_description:e=>{const{normalize:t}=e;return t(["Strip rich text formatting from all posts"])},no_blocks:e=>{const{normalize:t}=e;return t(["No blocks"])},no_mutes:e=>{const{normalize:t}=e;return t(["No mutes"])},hide_favorites_description:e=>{const{normalize:t}=e;return t(["Don't show list of my favorites (people still get notified)"])},hide_follows_description:e=>{const{normalize:t}=e;return t(["Don't show who I'm following"])},hide_followers_description:e=>{const{normalize:t}=e;return t(["Don't show who's following me"])},hide_follows_count_description:e=>{const{normalize:t}=e;return t(["Don't show follow count"])},hide_followers_count_description:e=>{const{normalize:t}=e;return t(["Don't show follower count"])},show_admin_badge:e=>{const{normalize:t}=e;return t(['Show "Admin" badge in my profile'])},show_moderator_badge:e=>{const{normalize:t}=e;return t(['Show "Moderator" badge in my profile'])},nsfw_clickthrough:e=>{const{normalize:t}=e;return t(["Hide sensitive/NSFW media"])},oauth_tokens:e=>{const{normalize:t}=e;return t(["OAuth tokens"])},token:e=>{const{normalize:t}=e;return t(["Token"])},refresh_token:e=>{const{normalize:t}=e;return t(["Refresh token"])},valid_until:e=>{const{normalize:t}=e;return t(["Valid until"])},revoke_token:e=>{const{normalize:t}=e;return t(["Revoke"])},panelRadius:e=>{const{normalize:t}=e;return t(["Panels"])},pause_on_unfocused:e=>{const{normalize:t}=e;return t(["Pause when tab is not focused"])},presets:e=>{const{normalize:t}=e;return t(["Presets"])},profile_background:e=>{const{normalize:t}=e;return t(["Profile background"])},profile_banner:e=>{const{normalize:t}=e;return t(["Profile banner"])},profile_tab:e=>{const{normalize:t}=e;return t(["Profile"])},radii_help:e=>{const{normalize:t}=e;return t(["Set up interface edge rounding (in pixels)"])},replies_in_timeline:e=>{const{normalize:t}=e;return t(["Replies in timeline"])},reply_visibility_all:e=>{const{normalize:t}=e;return t(["Show all replies"])},reply_visibility_following:e=>{const{normalize:t}=e;return t(["Only show replies directed at me or users I'm following"])},reply_visibility_self:e=>{const{normalize:t}=e;return t(["Only show replies directed at me"])},reply_visibility_following_short:e=>{const{normalize:t}=e;return t(["Show replies to my follows"])},reply_visibility_self_short:e=>{const{normalize:t}=e;return t(["Show replies to self only"])},autohide_floating_post_button:e=>{const{normalize:t}=e;return t(["Automatically hide New Post button (mobile)"])},saving_err:e=>{const{normalize:t}=e;return t(["Error saving settings"])},saving_ok:e=>{const{normalize:t}=e;return t(["Settings saved"])},search_user_to_block:e=>{const{normalize:t}=e;return t(["Search whom you want to block"])},search_user_to_mute:e=>{const{normalize:t}=e;return t(["Search whom you want to mute"])},security_tab:e=>{const{normalize:t}=e;return t(["Security"])},scope_copy:e=>{const{normalize:t}=e;return t(["Copy scope when replying (DMs are always copied)"])},mascot:e=>{const{normalize:t}=e;return t(["Mastodon FE Mascot"])},minimal_scopes_mode:e=>{const{normalize:t}=e;return t(["Minimize post scope selection options"])},set_new_avatar:e=>{const{normalize:t}=e;return t(["Set new avatar"])},set_new_mascot:e=>{const{normalize:t}=e;return t(["Set new mascot"])},set_new_profile_background:e=>{const{normalize:t}=e;return t(["Set new profile background"])},set_new_profile_banner:e=>{const{normalize:t}=e;return t(["Set new profile banner"])},reset_avatar:e=>{const{normalize:t}=e;return t(["Reset avatar"])},reset_profile_background:e=>{const{normalize:t}=e;return t(["Reset profile background"])},reset_profile_banner:e=>{const{normalize:t}=e;return t(["Reset profile banner"])},reset_avatar_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the avatar?"])},reset_banner_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the banner?"])},reset_background_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the background?"])},settings:e=>{const{normalize:t}=e;return t(["Settings"])},subject_input_always_show:e=>{const{normalize:t}=e;return t(["Always show subject field"])},subject_line_behavior:e=>{const{normalize:t}=e;return t(["Copy subject when replying"])},subject_line_email:e=>{const{normalize:t}=e;return t(['Like email: "re: subject"'])},subject_line_mastodon:e=>{const{normalize:t}=e;return t(["Like mastodon: copy as is"])},subject_line_noop:e=>{const{normalize:t}=e;return t(["Do not copy"])},conversation_display:e=>{const{normalize:t}=e;return t(["Conversation display style"])},conversation_display_tree:e=>{const{normalize:t}=e;return t(["Tree-style"])},disable_sticky_headers:e=>{const{normalize:t}=e;return t(["Don't stick column headers to top of the screen"])},show_scrollbars:e=>{const{normalize:t}=e;return t(["Show side column's scrollbars"])},third_column_mode:e=>{const{normalize:t}=e;return t(["When there's enough space, show third column containing"])},third_column_mode_none:e=>{const{normalize:t}=e;return t(["Don't show third column at all"])},third_column_mode_notifications:e=>{const{normalize:t}=e;return t(["Notifications column"])},third_column_mode_postform:e=>{const{normalize:t}=e;return t(["Main post form and navigation"])},tree_advanced:e=>{const{normalize:t}=e;return t(["Allow more flexible navigation in tree view"])},tree_fade_ancestors:e=>{const{normalize:t}=e;return t(["Display ancestors of the current status in faint text"])},conversation_display_linear:e=>{const{normalize:t}=e;return t(["Linear-style"])},conversation_other_replies_button:e=>{const{normalize:t}=e;return t(['Show the "other replies" button'])},conversation_other_replies_button_below:e=>{const{normalize:t}=e;return t(["Below statuses"])},conversation_other_replies_button_inside:e=>{const{normalize:t}=e;return t(["Inside statuses"])},max_depth_in_thread:e=>{const{normalize:t}=e;return t(["Maximum number of levels in thread to display by default"])},post_status_content_type:e=>{const{normalize:t}=e;return t(["Post status content type"])},sensitive_by_default:e=>{const{normalize:t}=e;return t(["Mark posts as sensitive by default"])},sensitive_if_subject:e=>{const{normalize:t}=e;return t(["Automatically mark images as sensitive if a subject line is specified"])},render_mfm:e=>{const{normalize:t}=e;return t(["Render Misskey Markdown"])},useStreamingApiWarning:e=>{const{normalize:t}=e;return t(["It's cool use it. If it breaks refresh I guess?"])},stop_gifs:e=>{const{normalize:t}=e;return t(["Pause animated images until you hover on them"])},streaming:e=>{const{normalize:t}=e;return t(["Automatically show new posts when scrolled to the top"])},user_mutes:e=>{const{normalize:t}=e;return t(["Users"])},useStreamingApi:e=>{const{normalize:t}=e;return t(["Receive posts and notifications real-time"])},text:e=>{const{normalize:t}=e;return t(["Text"])},theme:e=>{const{normalize:t}=e;return t(["Theme"])},theme_help:e=>{const{normalize:t}=e;return t(["Use hex color codes (#rrggbb) to customize your color theme."])},theme_help_v2_1:e=>{const{normalize:t}=e;return t(['You can also override certain component\'s colors and opacity by toggling the checkbox, use "Clear all" button to clear all overrides.'])},theme_help_v2_2:e=>{const{normalize:t}=e;return t(["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."])},tooltipRadius:e=>{const{normalize:t}=e;return t(["Tooltips/alerts"])},type_domains_to_mute:e=>{const{normalize:t}=e;return t(["Search domains to mute"])},upload_a_photo:e=>{const{normalize:t}=e;return t(["Upload a photo"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},values:{false:e=>{const{normalize:t}=e;return t(["no"])},true:e=>{const{normalize:t}=e;return t(["yes"])}},virtual_scrolling:e=>{const{normalize:t}=e;return t(["Optimize timeline rendering"])},use_at_icon:e=>{const{normalize:t}=e;return t(["Display ","@"," symbol as an icon instead of text"])},mention_link_display:e=>{const{normalize:t}=e;return t(["Display mention links"])},mention_link_display_short:e=>{const{normalize:t}=e;return t(["always as short names (e.g. ","@","foo)"])},mention_link_display_full_for_remote:e=>{const{normalize:t}=e;return t(["as full names only for remote users (e.g. ","@","foo","@","example.org)"])},mention_link_display_full:e=>{const{normalize:t}=e;return t(["always as full names (e.g. ","@","foo","@","example.org)"])},mention_link_show_tooltip:e=>{const{normalize:t}=e;return t(["Show full user names as tooltip for remote users"])},mention_link_show_avatar:e=>{const{normalize:t}=e;return t(["Show user avatar beside the link"])},mention_link_fade_domain:e=>{const{normalize:t}=e;return t(["Fade domains (e.g. ","@","example.org in ","@","foo","@","example.org)"])},mention_link_bolden_you:e=>{const{normalize:t}=e;return t(["Highlight mention of you when you are mentioned"])},fun:e=>{const{normalize:t}=e;return t(["Fun"])},greentext:e=>{const{normalize:t}=e;return t(["Meme arrows"])},show_yous:e=>{const{normalize:t}=e;return t(["Show (You)s"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},notification_setting_filters:e=>{const{normalize:t}=e;return t(["Filters"])},notification_setting_block_from_strangers:e=>{const{normalize:t}=e;return t(["Block notifications from users who you do not follow"])},notification_setting_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},notification_setting_hide_notification_contents:e=>{const{normalize:t}=e;return t(["Hide the sender and contents of push notifications"])},notification_mutes:e=>{const{normalize:t}=e;return t(["To stop receiving notifications from a specific user, use a mute."])},notification_blocks:e=>{const{normalize:t}=e;return t(["Blocking a user stops all notifications as well as unsubscribes them."])},enable_web_push_notifications:e=>{const{normalize:t}=e;return t(["Enable web push notifications"])},more_settings:e=>{const{normalize:t}=e;return t(["More settings"])},style:{switcher:{keep_color:e=>{const{normalize:t}=e;return t(["Keep colors"])},keep_shadows:e=>{const{normalize:t}=e;return t(["Keep shadows"])},keep_opacity:e=>{const{normalize:t}=e;return t(["Keep opacity"])},keep_roundness:e=>{const{normalize:t}=e;return t(["Keep roundness"])},keep_fonts:e=>{const{normalize:t}=e;return t(["Keep fonts"])},save_load_hint:e=>{const{normalize:t}=e;return t(['"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.'])},reset:e=>{const{normalize:t}=e;return t(["Reset"])},clear_all:e=>{const{normalize:t}=e;return t(["Clear all"])},clear_opacity:e=>{const{normalize:t}=e;return t(["Clear opacity"])},load_theme:e=>{const{normalize:t}=e;return t(["Load theme"])},keep_as_is:e=>{const{normalize:t}=e;return t(["Keep as is"])},use_snapshot:e=>{const{normalize:t}=e;return t(["Old version"])},use_source:e=>{const{normalize:t}=e;return t(["New version"])},help:{upgraded_from_v2:e=>{const{normalize:t}=e;return t(["PleromaFE has been upgraded, theme could look a little bit different than you remember."])},v2_imported:e=>{const{normalize:t}=e;return t(["File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies."])},future_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in newer version of FE."])},older_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in older version of FE."])},snapshot_present:e=>{const{normalize:t}=e;return t(["Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead."])},snapshot_missing:e=>{const{normalize:t}=e;return t(["No theme snapshot was in the file so it could look different than originally envisioned."])},fe_upgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's theme engine upgraded after version update."])},fe_downgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's version rolled back."])},migration_snapshot_ok:e=>{const{normalize:t}=e;return t(["Just to be safe, theme snapshot loaded. You can try loading theme data."])},migration_napshot_gone:e=>{const{normalize:t}=e;return t(["For whatever reason snapshot was missing, some stuff could look different than you remember."])},snapshot_source_mismatch:e=>{const{normalize:t}=e;return t(["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."])}}},common:{color:e=>{const{normalize:t}=e;return t(["Color"])},opacity:e=>{const{normalize:t}=e;return t(["Opacity"])},contrast:{hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Contrast ratio is ",n(r("ratio")),", it ",n(r("level"))," ",n(r("context"))])},level:{aa:e=>{const{normalize:t}=e;return t(["meets Level AA guideline (minimal)"])},aaa:e=>{const{normalize:t}=e;return t(["meets Level AAA guideline (recommended)"])},bad:e=>{const{normalize:t}=e;return t(["doesn't meet any accessibility guidelines"])}},context:{"18pt":e=>{const{normalize:t}=e;return t(["for large (18pt+) text"])},text:e=>{const{normalize:t}=e;return t(["for text"])}}}},common_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Common"])},main:e=>{const{normalize:t}=e;return t(["Common colors"])},foreground_hint:e=>{const{normalize:t}=e;return t(['See "Advanced" tab for more detailed control'])},rgbo:e=>{const{normalize:t}=e;return t(["Icons, accents, badges"])}},advanced_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Advanced"])},alert:e=>{const{normalize:t}=e;return t(["Alert background"])},alert_error:e=>{const{normalize:t}=e;return t(["Error"])},alert_warning:e=>{const{normalize:t}=e;return t(["Warning"])},alert_neutral:e=>{const{normalize:t}=e;return t(["Neutral"])},post:e=>{const{normalize:t}=e;return t(["Posts/User bios"])},badge:e=>{const{normalize:t}=e;return t(["Badge background"])},popover:e=>{const{normalize:t}=e;return t(["Tooltips, menus, popovers"])},badge_notification:e=>{const{normalize:t}=e;return t(["Notification"])},panel_header:e=>{const{normalize:t}=e;return t(["Panel header"])},top_bar:e=>{const{normalize:t}=e;return t(["Top bar"])},borders:e=>{const{normalize:t}=e;return t(["Borders"])},buttons:e=>{const{normalize:t}=e;return t(["Buttons"])},inputs:e=>{const{normalize:t}=e;return t(["Input fields"])},faint_text:e=>{const{normalize:t}=e;return t(["Faded text"])},underlay:e=>{const{normalize:t}=e;return t(["Underlay"])},wallpaper:e=>{const{normalize:t}=e;return t(["Wallpaper"])},poll:e=>{const{normalize:t}=e;return t(["Poll graph"])},icons:e=>{const{normalize:t}=e;return t(["Icons"])},highlight:e=>{const{normalize:t}=e;return t(["Highlighted elements"])},pressed:e=>{const{normalize:t}=e;return t(["Pressed"])},selectedPost:e=>{const{normalize:t}=e;return t(["Selected post"])},selectedMenu:e=>{const{normalize:t}=e;return t(["Selected menu item"])},disabled:e=>{const{normalize:t}=e;return t(["Disabled"])},toggled:e=>{const{normalize:t}=e;return t(["Toggled"])},tabs:e=>{const{normalize:t}=e;return t(["Tabs"])},chat:{incoming:e=>{const{normalize:t}=e;return t(["Incoming"])},outgoing:e=>{const{normalize:t}=e;return t(["Outgoing"])},border:e=>{const{normalize:t}=e;return t(["Border"])}}},radii:{_tab_label:e=>{const{normalize:t}=e;return t(["Roundness"])}},shadows:{_tab_label:e=>{const{normalize:t}=e;return t(["Shadow and lighting"])},component:e=>{const{normalize:t}=e;return t(["Component"])},override:e=>{const{normalize:t}=e;return t(["Override"])},shadow_id:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Shadow #",n(r("value"))])},blur:e=>{const{normalize:t}=e;return t(["Blur"])},spread:e=>{const{normalize:t}=e;return t(["Spread"])},inset:e=>{const{normalize:t}=e;return t(["Inset"])},hintV3:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["For shadows you can also use the ",n(r(0))," notation to use other color slot."])},filter_hint:{always_drop_shadow:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Warning, this shadow always uses ",n(r(0))," when browser supports it."])},drop_shadow_syntax:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," does not support ",n(r(1))," parameter and ",n(r(2))," keyword."])},avatar_inset:e=>{const{normalize:t}=e;return t(["Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars."])},spread_zero:e=>{const{normalize:t}=e;return t(["Shadows with spread > 0 will appear as if it was set to zero"])},inset_classic:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Inset shadows will be using ",n(r(0))])}},components:{panel:e=>{const{normalize:t}=e;return t(["Panel"])},panelHeader:e=>{const{normalize:t}=e;return t(["Panel header"])},topBar:e=>{const{normalize:t}=e;return t(["Top bar"])},avatar:e=>{const{normalize:t}=e;return t(["User avatar (in profile view)"])},avatarStatus:e=>{const{normalize:t}=e;return t(["User avatar (in post display)"])},popup:e=>{const{normalize:t}=e;return t(["Popups and tooltips"])},button:e=>{const{normalize:t}=e;return t(["Button"])},buttonHover:e=>{const{normalize:t}=e;return t(["Button (hover)"])},buttonPressed:e=>{const{normalize:t}=e;return t(["Button (pressed)"])},buttonPressedHover:e=>{const{normalize:t}=e;return t(["Button (pressed+hover)"])},input:e=>{const{normalize:t}=e;return t(["Input field"])}}},fonts:{_tab_label:e=>{const{normalize:t}=e;return t(["Fonts"])},help:e=>{const{normalize:t}=e;return t(['Select font to use for elements of UI. For "custom" you have to enter exact font name as it appears in system.'])},components:{interface:e=>{const{normalize:t}=e;return t(["Interface"])},input:e=>{const{normalize:t}=e;return t(["Input fields"])},post:e=>{const{normalize:t}=e;return t(["Post text"])},postCode:e=>{const{normalize:t}=e;return t(["Monospaced text in a post (rich text)"])}},family:e=>{const{normalize:t}=e;return t(["Font name"])},size:e=>{const{normalize:t}=e;return t(["Size (in px)"])},weight:e=>{const{normalize:t}=e;return t(["Weight (boldness)"])},custom:e=>{const{normalize:t}=e;return t(["Custom"])}},preview:{header:e=>{const{normalize:t}=e;return t(["Preview"])},content:e=>{const{normalize:t}=e;return t(["Content"])},error:e=>{const{normalize:t}=e;return t(["Example error"])},button:e=>{const{normalize:t}=e;return t(["Button"])},text:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["A bunch of more ",n(r(0))," and ",n(r(1))])},mono:e=>{const{normalize:t}=e;return t(["content"])},input:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},faint_link:e=>{const{normalize:t}=e;return t(["helpful manual"])},fine_print:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Read our ",n(r(0))," to learn nothing useful!"])},header_faint:e=>{const{normalize:t}=e;return t(["This is fine"])},checkbox:e=>{const{normalize:t}=e;return t(["I have skimmed over terms and conditions"])},link:e=>{const{normalize:t}=e;return t(["a nice lil' link"])}}},version:{title:e=>{const{normalize:t}=e;return t(["Version"])},backend_version:e=>{const{normalize:t}=e;return t(["Backend version"])},frontend_version:e=>{const{normalize:t}=e;return t(["Frontend version"])}}},time:{day:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," day"])},days:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," days"])},day_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},days_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},hour:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hour"])},hours:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hours"])},hour_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},hours_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},in_future:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["in ",n(r(0))])},in_past:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," ago"])},minute:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minute"])},minutes:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minutes"])},minute_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},minutes_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},month:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," month"])},months:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," months"])},month_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},months_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},now:e=>{const{normalize:t}=e;return t(["just now"])},now_short:e=>{const{normalize:t}=e;return t(["now"])},second:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," second"])},seconds:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," seconds"])},second_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},seconds_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},week:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," week"])},weeks:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," weeks"])},week_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},weeks_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},year:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," year"])},years:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," years"])},year_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])},years_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])}},timeline:{collapse:e=>{const{normalize:t}=e;return t(["Collapse"])},conversation:e=>{const{normalize:t}=e;return t(["Conversation"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching timeline: ",n(r(0))])},load_older:e=>{const{normalize:t}=e;return t(["Load older statuses"])},no_retweet_hint:e=>{const{normalize:t}=e;return t(["Post is marked as followers-only or direct and cannot be repeated"])},repeated:e=>{const{normalize:t}=e;return t(["repeated"])},show_new:e=>{const{normalize:t}=e;return t(["Show new"])},reload:e=>{const{normalize:t}=e;return t(["Reload"])},up_to_date:e=>{const{normalize:t}=e;return t(["Up-to-date"])},no_more_statuses:e=>{const{normalize:t}=e;return t(["No more statuses"])},no_statuses:e=>{const{normalize:t}=e;return t(["No statuses"])},socket_reconnected:e=>{const{normalize:t}=e;return t(["Realtime connection established"])},socket_broke:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Realtime connection lost: CloseEvent code ",n(r(0))])}},status:{favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},delete:e=>{const{normalize:t}=e;return t(["Delete status"])},pin:e=>{const{normalize:t}=e;return t(["Pin on profile"])},unpin:e=>{const{normalize:t}=e;return t(["Unpin from profile"])},pinned:e=>{const{normalize:t}=e;return t(["Pinned"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},unbookmark:e=>{const{normalize:t}=e;return t(["Unbookmark"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this status?"])},reply_to:e=>{const{normalize:t}=e;return t(["Reply to"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},replies_list:e=>{const{normalize:t}=e;return t(["Replies:"])},replies_list_with_others:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Replies (+",n(r("numReplies"))," other):"]),t(["Replies (+",n(r("numReplies"))," others):"])])},mute_conversation:e=>{const{normalize:t}=e;return t(["Mute conversation"])},unmute_conversation:e=>{const{normalize:t}=e;return t(["Unmute conversation"])},status_unavailable:e=>{const{normalize:t}=e;return t(["Status unavailable"])},copy_link:e=>{const{normalize:t}=e;return t(["Copy link to status"])},external_source:e=>{const{normalize:t}=e;return t(["External source"])},thread_muted:e=>{const{normalize:t}=e;return t(["Thread muted"])},thread_muted_and_words:e=>{const{normalize:t}=e;return t([", has words:"])},show_full_subject:e=>{const{normalize:t}=e;return t(["Show full subject"])},hide_full_subject:e=>{const{normalize:t}=e;return t(["Hide full subject"])},show_content:e=>{const{normalize:t}=e;return t(["Show content"])},hide_content:e=>{const{normalize:t}=e;return t(["Hide content"])},status_deleted:e=>{const{normalize:t}=e;return t(["This post was deleted"])},nsfw:e=>{const{normalize:t}=e;return t(["NSFW"])},expand:e=>{const{normalize:t}=e;return t(["Expand"])},you:e=>{const{normalize:t}=e;return t(["(You)"])},plus_more:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["+",n(r("number"))," more"])},many_attachments:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Post has ",n(r("number"))," attachment(s)"])},collapse_attachments:e=>{const{normalize:t}=e;return t(["Collapse attachments"])},show_all_attachments:e=>{const{normalize:t}=e;return t(["Show all attachments"])},show_attachment_in_modal:e=>{const{normalize:t}=e;return t(["Show in media modal"])},show_attachment_description:e=>{const{normalize:t}=e;return t(["Preview description (open attachment for full description)"])},hide_attachment:e=>{const{normalize:t}=e;return t(["Hide attachment"])},remove_attachment:e=>{const{normalize:t}=e;return t(["Remove attachment"])},attachment_stop_flash:e=>{const{normalize:t}=e;return t(["Stop Flash player"])},move_up:e=>{const{normalize:t}=e;return t(["Shift attachment left"])},move_down:e=>{const{normalize:t}=e;return t(["Shift attachment right"])},open_gallery:e=>{const{normalize:t}=e;return t(["Open gallery"])},thread_hide:e=>{const{normalize:t}=e;return t(["Hide this thread"])},thread_show:e=>{const{normalize:t}=e;return t(["Show this thread"])},thread_show_full:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show everything under this thread (",n(r("numStatus"))," status in total, max depth ",n(r("depth")),")"]),t(["Show everything under this thread (",n(r("numStatus"))," statuses in total, max depth ",n(r("depth")),")"])])},thread_show_full_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},thread_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See the remaining part of this thread (",n(r("numStatus"))," status in total)"]),t(["See the remaining part of this thread (",n(r("numStatus"))," statuses in total)"])])},thread_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},ancestor_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See ",n(r("numReplies"))," other reply under this status"]),t(["See ",n(r("numReplies"))," other replies under this status"])])},ancestor_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show full conversation (",n(r("numStatus"))," other status)"]),t(["Show full conversation (",n(r("numStatus"))," other statuses)"])])},show_only_conversation_under_this:e=>{const{normalize:t}=e;return t(["Only show replies to this status"])}},user_card:{approve:e=>{const{normalize:t}=e;return t(["Approve"])},block:e=>{const{normalize:t}=e;return t(["Block"])},blocked:e=>{const{normalize:t}=e;return t(["Blocked!"])},deactivated:e=>{const{normalize:t}=e;return t(["Deactivated"])},deny:e=>{const{normalize:t}=e;return t(["Deny"])},edit_profile:e=>{const{normalize:t}=e;return t(["Edit profile"])},favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},follow:e=>{const{normalize:t}=e;return t(["Follow"])},follow_cancel:e=>{const{normalize:t}=e;return t(["Cancel request"])},follow_sent:e=>{const{normalize:t}=e;return t(["Request sent!"])},follow_progress:e=>{const{normalize:t}=e;return t(["Requesting…"])},follow_unfollow:e=>{const{normalize:t}=e;return t(["Unfollow"])},followees:e=>{const{normalize:t}=e;return t(["Following"])},followers:e=>{const{normalize:t}=e;return t(["Followers"])},following:e=>{const{normalize:t}=e;return t(["Following!"])},follows_you:e=>{const{normalize:t}=e;return t(["Follows you!"])},hidden:e=>{const{normalize:t}=e;return t(["Hidden"])},its_you:e=>{const{normalize:t}=e;return t(["It's you!"])},media:e=>{const{normalize:t}=e;return t(["Media"])},mention:e=>{const{normalize:t}=e;return t(["Mention"])},message:e=>{const{normalize:t}=e;return t(["Message"])},mute:e=>{const{normalize:t}=e;return t(["Mute"])},muted:e=>{const{normalize:t}=e;return t(["Muted"])},per_day:e=>{const{normalize:t}=e;return t(["per day"])},remote_follow:e=>{const{normalize:t}=e;return t(["Remote follow"])},report:e=>{const{normalize:t}=e;return t(["Report"])},statuses:e=>{const{normalize:t}=e;return t(["Statuses"])},subscribe:e=>{const{normalize:t}=e;return t(["Subscribe"])},unsubscribe:e=>{const{normalize:t}=e;return t(["Unsubscribe"])},unblock:e=>{const{normalize:t}=e;return t(["Unblock"])},unblock_progress:e=>{const{normalize:t}=e;return t(["Unblocking…"])},block_progress:e=>{const{normalize:t}=e;return t(["Blocking…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},hide_repeats:e=>{const{normalize:t}=e;return t(["Hide repeats"])},show_repeats:e=>{const{normalize:t}=e;return t(["Show repeats"])},domain_muted:e=>{const{normalize:t}=e;return t(["Unblock domain"])},mute_domain:e=>{const{normalize:t}=e;return t(["Block domain"])},bot:e=>{const{normalize:t}=e;return t(["Bot"])},admin_menu:{moderation:e=>{const{normalize:t}=e;return t(["Moderation"])},grant_admin:e=>{const{normalize:t}=e;return t(["Grant Admin"])},revoke_admin:e=>{const{normalize:t}=e;return t(["Revoke Admin"])},grant_moderator:e=>{const{normalize:t}=e;return t(["Grant Moderator"])},revoke_moderator:e=>{const{normalize:t}=e;return t(["Revoke Moderator"])},activate_account:e=>{const{normalize:t}=e;return t(["Activate account"])},deactivate_account:e=>{const{normalize:t}=e;return t(["Deactivate account"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},force_nsfw:e=>{const{normalize:t}=e;return t(["Mark all posts as NSFW"])},strip_media:e=>{const{normalize:t}=e;return t(["Remove media from posts"])},force_unlisted:e=>{const{normalize:t}=e;return t(["Force posts to be unlisted"])},sandbox:e=>{const{normalize:t}=e;return t(["Force posts to be followers-only"])},disable_remote_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user from remote instances"])},disable_any_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user at all"])},quarantine:e=>{const{normalize:t}=e;return t(["Disallow user posts from federating"])},delete_user:e=>{const{normalize:t}=e;return t(["Delete user"])},delete_user_confirmation:e=>{const{normalize:t}=e;return t(["Are you absolutely sure? This action cannot be undone."])}},highlight:{disabled:e=>{const{normalize:t}=e;return t(["No highlight"])},solid:e=>{const{normalize:t}=e;return t(["Solid bg"])},striped:e=>{const{normalize:t}=e;return t(["Striped bg"])},side:e=>{const{normalize:t}=e;return t(["Side stripe"])}}},user_profile:{timeline_title:e=>{const{normalize:t}=e;return t(["User timeline"])},profile_does_not_exist:e=>{const{normalize:t}=e;return t(["Sorry, this profile does not exist."])},profile_loading_error:e=>{const{normalize:t}=e;return t(["Sorry, there was an error loading this profile."])}},user_reporting:{title:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Reporting ",n(r(0))])},add_comment_description:e=>{const{normalize:t}=e;return t(["The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:"])},additional_comments:e=>{const{normalize:t}=e;return t(["Additional comments"])},forward_description:e=>{const{normalize:t}=e;return t(["The account is from another server. Send a copy of the report there as well?"])},forward_to:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Forward to ",n(r(0))])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occurred while processing your request."])}},who_to_follow:{more:e=>{const{normalize:t}=e;return t(["More"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])}},tool_tip:{media_upload:e=>{const{normalize:t}=e;return t(["Upload media"])},repeat:e=>{const{normalize:t}=e;return t(["Repeat"])},reply:e=>{const{normalize:t}=e;return t(["Reply"])},favorite:e=>{const{normalize:t}=e;return t(["Favorite"])},add_reaction:e=>{const{normalize:t}=e;return t(["Add Reaction"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},accept_follow_request:e=>{const{normalize:t}=e;return t(["Accept follow request"])},reject_follow_request:e=>{const{normalize:t}=e;return t(["Reject follow request"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])}},upload:{error:{base:e=>{const{normalize:t}=e;return t(["Upload failed."])},message:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Upload failed: ",n(r(0))])},file_too_big:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["File too big [",n(r("filesize")),n(r("filesizeunit"))," / ",n(r("allowedsize")),n(r("allowedsizeunit")),"]"])},default:e=>{const{normalize:t}=e;return t(["Try again later"])}},file_size_units:{B:e=>{const{normalize:t}=e;return t(["B"])},KiB:e=>{const{normalize:t}=e;return t(["KiB"])},MiB:e=>{const{normalize:t}=e;return t(["MiB"])},GiB:e=>{const{normalize:t}=e;return t(["GiB"])},TiB:e=>{const{normalize:t}=e;return t(["TiB"])}}},search:{people:e=>{const{normalize:t}=e;return t(["People"])},hashtags:e=>{const{normalize:t}=e;return t(["Hashtags"])},person_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," person talking"])},people_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," people talking"])},no_results:e=>{const{normalize:t}=e;return t(["No results"])}},password_reset:{forgot_password:e=>{const{normalize:t}=e;return t(["Forgot password?"])},password_reset:e=>{const{normalize:t}=e;return t(["Password reset"])},instruction:e=>{const{normalize:t}=e;return t(["Enter your email address or username. We will send you a link to reset your password."])},placeholder:e=>{const{normalize:t}=e;return t(["Your email or username"])},check_email:e=>{const{normalize:t}=e;return t(["Check your email for a link to reset your password."])},return_home:e=>{const{normalize:t}=e;return t(["Return to the home page"])},too_many_requests:e=>{const{normalize:t}=e;return t(["You have reached the limit of attempts, try again later."])},password_reset_disabled:e=>{const{normalize:t}=e;return t(["Password reset is disabled. Please contact your instance administrator."])},password_reset_required:e=>{const{normalize:t}=e;return t(["You must reset your password to log in."])},password_reset_required_but_mailer_is_disabled:e=>{const{normalize:t}=e;return t(["You must reset your password, but password reset is disabled. Please contact your instance administrator."])}},chats:{you:e=>{const{normalize:t}=e;return t(["You:"])},message_user:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Message ",n(r("nickname"))])},delete:e=>{const{normalize:t}=e;return t(["Delete"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},new:e=>{const{normalize:t}=e;return t(["New Chat"])},empty_message_error:e=>{const{normalize:t}=e;return t(["Cannot post empty message"])},more:e=>{const{normalize:t}=e;return t(["More"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this message?"])},error_loading_chat:e=>{const{normalize:t}=e;return t(["Something went wrong when loading the chat."])},error_sending_message:e=>{const{normalize:t}=e;return t(["Something went wrong when sending the message."])},empty_chat_list_placeholder:e=>{const{normalize:t}=e;return t(["You don't have any chats yet. Start a new chat!"])}},file_type:{audio:e=>{const{normalize:t}=e;return t(["Audio"])},video:e=>{const{normalize:t}=e;return t(["Video"])},image:e=>{const{normalize:t}=e;return t(["Image"])},file:e=>{const{normalize:t}=e;return t(["File"])}},display_date:{today:e=>{const{normalize:t}=e;return t(["Today"])}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n(223)},,function(e,t,n){"use strict";n(225)},function(e,t,n){"use strict";n(226)},function(e,t,n){"use strict";n(227)},function(e,t,n){"use strict";n(228)},function(e,t,n){"use strict";n(229)},function(e,t,n){"use strict";n(230)},function(e,t,n){"use strict";n(231)},function(e,t,n){"use strict";n(232)},function(e,t,n){"use strict";n(233)},function(e,t,n){"use strict";n(234)},function(e,t,n){"use strict";n(235)},,function(e,t,n){"use strict";n(236)},function(e,t,n){"use strict";n(237)},function(e,t,n){"use strict";n(238)},function(e,t,n){"use strict";n(239)},function(e,t,n){},function(e,t,n){"use strict";n(240)},,,,function(e,t,n){"use strict";n(242)},function(e,t,n){"use strict";n(243)},function(e,t,n){"use strict";n(244)},function(e,t,n){"use strict";n(245)},function(e,t,n){"use strict";n(246)},function(e,t,n){"use strict";n(247)},function(e,t,n){"use strict";n(248)},function(e,t,n){"use strict";n(249)},function(e,t,n){"use strict";n(250)},function(e,t,n){"use strict";n(251)},function(e,t,n){"use strict";n(252)},function(e,t,n){"use strict";n(253)},function(e,t,n){"use strict";n(254)},,,,function(e,t,n){"use strict";n(256)},function(e,t,n){"use strict";n(257)},function(e,t,n){"use strict";n(258)},function(e,t,n){"use strict";n(259)},function(e,t,n){"use strict";n(260)},function(e,t,n){"use strict";n(261)},function(e,t,n){"use strict";n(262)},function(e,t,n){"use strict";n(263)},function(e,t,n){"use strict";n(264)},function(e,t,n){"use strict";n(265)},function(e,t,n){"use strict";n(266)},function(e,t,n){"use strict";n(267)},function(e,t,n){"use strict";n(268)},function(e,t,n){"use strict";n(269)},function(e,t,n){"use strict";n(270)},function(e,t,n){"use strict";n(271)},function(e,t,n){"use strict";n(272)},function(e,t,n){"use strict";n(273)},function(e,t,n){"use strict";n(274)},function(e,t,n){"use strict";n(275)},function(e,t,n){"use strict";n(276)},function(e,t,n){"use strict";n(277)},function(e,t,n){"use strict";n(278)},function(e,t,n){"use strict";n(279)},function(e,t,n){"use strict";n(280)},function(e,t,n){"use strict";n(281)},function(e,t,n){"use strict";n(282)},function(e,t,n){"use strict";n(283)},function(e,t,n){"use strict";n(284)},function(e,t,n){"use strict";n(285)},,,function(e,t,n){"use strict";n(287)},function(e,t,n){"use strict";n(288)},function(e,t,n){"use strict";n(289)},function(e,t,n){"use strict";n(290)},function(e,t,n){"use strict";n(291)},function(e,t,n){},function(e,t,n){"use strict";n(292)},function(e,t,n){"use strict";n(293)},function(e,t,n){"use strict";n(294)},function(e,t,n){"use strict";n(295)},function(e,t,n){"use strict";n(296)},function(e,t,n){"use strict";n(297)},function(e,t,n){"use strict";n(298)},function(e,t,n){"use strict";n(299)},function(e,t,n){},function(e,t,n){"use strict";n(302)},function(e,t,n){"use strict";n(303)},,function(e,t,n){"use strict";n(304)},function(e,t,n){"use strict";n(305)},function(e,t,n){"use strict";n(306)},function(e,t,n){"use strict";n(307)},function(e,t,n){"use strict";n(308)},function(e,t,n){"use strict";n(309)},function(e,t,n){"use strict";n.r(t);var r=n(13),i=n.n(r),o=n(10),s=n.n(o),a=n(8),c=(n(348),n(311));try{new EventTarget}catch(e){window.EventTarget=c.a}var l={state:{settingsModalState:"hidden",settingsModalLoaded:!1,settingsModalTargetTab:null,settings:{currentSaveStateNotice:null,noticeClearTimeout:null,notificationPermission:null},browserSupport:{cssFilter:window.CSS&&window.CSS.supports&&(window.CSS.supports("filter","drop-shadow(0 0)")||window.CSS.supports("-webkit-filter","drop-shadow(0 0)"))},layoutType:"normal",globalNotices:[],layoutHeight:0,lastTimeline:null},mutations:{settingsSaved:function(e,t){var n=t.success,r=t.error;n?(e.noticeClearTimeout&&clearTimeout(e.noticeClearTimeout),e.settings.currentSaveStateNotice={error:!1,data:n},e.settings.noticeClearTimeout=setTimeout((function(){return delete e.settings.currentSaveStateNotice}),2e3)):e.settings.currentSaveStateNotice={error:!0,errorData:r}},setNotificationPermission:function(e,t){e.notificationPermission=t},setLayoutType:function(e,t){e.layoutType=t},closeSettingsModal:function(e){e.settingsModalState="hidden"},togglePeekSettingsModal:function(e){switch(e.settingsModalState){case"minimized":return void(e.settingsModalState="visible");case"visible":return void(e.settingsModalState="minimized");default:throw new Error("Illegal minimization state of settings modal")}},openSettingsModal:function(e){e.settingsModalState="visible",e.settingsModalLoaded||(e.settingsModalLoaded=!0)},setSettingsModalTargetTab:function(e,t){e.settingsModalTargetTab=t},pushGlobalNotice:function(e,t){e.globalNotices.push(t)},removeGlobalNotice:function(e,t){e.globalNotices=e.globalNotices.filter((function(e){return e!==t}))},setLayoutHeight:function(e,t){e.layoutHeight=t},setLayoutWidth:function(e,t){e.layoutWidth=t},setLastTimeline:function(e,t){e.lastTimeline=t}},actions:{setPageTitle:function(e){var t=e.rootState,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";document.title="".concat(n," ").concat(t.instance.name)},settingsSaved:function(e,t){var n=e.commit;e.dispatch;n("settingsSaved",{success:t.success,error:t.error})},setNotificationPermission:function(e,t){(0,e.commit)("setNotificationPermission",t)},closeSettingsModal:function(e){(0,e.commit)("closeSettingsModal")},openSettingsModal:function(e){(0,e.commit)("openSettingsModal")},togglePeekSettingsModal:function(e){(0,e.commit)("togglePeekSettingsModal")},clearSettingsModalTargetTab:function(e){(0,e.commit)("setSettingsModalTargetTab",null)},openSettingsModalTab:function(e,t){var n=e.commit;n("setSettingsModalTargetTab",t),n("openSettingsModal")},pushGlobalNotice:function(e,t){var n=e.commit,r=e.dispatch,i=e.state,o=t.messageKey,s=t.messageArgs,a=void 0===s?{}:s,c=t.level,l=void 0===c?"error":c,u=t.timeout,d=void 0===u?0:u;n("pushGlobalNotice",{messageKey:o,messageArgs:a,level:l});var p=i.globalNotices[i.globalNotices.length-1];return d&&setTimeout((function(){return r("removeGlobalNotice",p)}),d),p},removeGlobalNotice:function(e,t){(0,e.commit)("removeGlobalNotice",t)},setLayoutHeight:function(e,t){(0,e.commit)("setLayoutHeight",t)},setLayoutWidth:function(e,t){var n=e.commit,r=e.state,i=e.rootGetters,o=e.rootState,s=t;void 0!==t?n("setLayoutWidth",t):s=r.layoutWidth;var a=s<=800?"mobile":"normal";"none"!==i.mergedConfig.thirdColumnMode&&o.users.currentUser?n("setLayoutType",s>=1300?"wide":a):n("setLayoutType",a)},setLastTimeline:function(e,t){(0,e.commit)("setLastTimeline",t)}}},u=n(12),d=n.n(u),p=n(5),h=n.n(p),b=n(11),m=n.n(b),f=n(43),O=n(54),j=n(15),g=n(121);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var w={state:{name:"Pleroma FE",registrationOpen:!0,server:"http://localhost:4040/",textlimit:5e3,themeData:void 0,vapidPublicKey:void 0,alwaysShowSubjectInput:!0,defaultAvatar:"/images/avi.png",defaultBanner:"/images/banner.png",background:"/static/aurora_borealis.jpg",collapseMessageWithSubject:!1,greentext:!1,useAtIcon:!1,mentionLinkDisplay:"short",mentionLinkShowTooltip:!0,mentionLinkShowAvatar:!1,mentionLinkFadeDomain:!0,mentionLinkShowYous:!1,mentionLinkBoldenYou:!0,hideFilteredStatuses:!1,hideMutedPosts:!1,hideMutedThreads:!0,hideWordFilteredPosts:!1,hidePostStats:!1,hideBotIndication:!1,hideSitename:!1,hideUserStats:!1,muteBotStatuses:!1,loginMethod:"password",logo:"/static/logo.svg",logoMargin:".2em",logoMask:!0,logoLeft:!1,minimalScopesMode:!1,nsfwCensorImage:void 0,postContentType:"text/plain",redirectRootLogin:"/main/friends",redirectRootNoLogin:"/main/all",scopeCopy:!0,showFeaturesPanel:!0,showInstanceSpecificPanel:!1,sidebarRight:!1,subjectLineBehavior:"email",theme:"pleroma-dark",virtualScrolling:!0,sensitiveByDefault:!1,sensitiveIfSubject:!1,renderMisskeyMarkdown:!1,conversationDisplay:"linear",conversationTreeAdvanced:!1,conversationOtherRepliesButton:"below",conversationTreeFadeAncestors:!1,maxDepthInThread:6,customEmoji:[],customEmojiFetched:!1,emoji:[],emojiFetched:!1,pleromaBackend:!0,postFormats:[],restrictedNicknames:[],safeDM:!0,knownDomains:[],shoutAvailable:!1,pleromaChatMessagesAvailable:!1,gopherAvailable:!1,mediaProxyAvailable:!1,suggestionsEnabled:!1,suggestionsWeb:"",instanceSpecificPanelContent:"",tos:"",backendVersion:"",frontendVersion:"",pollsAvailable:!1,pollLimits:{max_options:4,max_option_chars:255,min_expiration:60,max_expiration:86400}},mutations:{setInstanceOption:function(e,t){var n=t.name,r=t.value;void 0!==r&&(e[n]=r)},setKnownDomains:function(e,t){e.knownDomains=t}},getters:{instanceDefaultConfig:function(e){return g.c.map((function(t){return[t,e[t]]})).reduce((function(e,t){var n=m()(t,2),r=n[0],i=n[1];return y(y({},e),{},h()({},r,i))}),{})},instanceDomain:function(e){return new URL(e.server).hostname}},actions:{setInstanceOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setInstanceOption",{name:i,value:o}),i){case"name":r("setPageTitle");break;case"shoutAvailable":o&&r("initializeSocket");break;case"theme":r("setTheme",o)}},getStaticEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,t.prev=1,t.next=4,window.fetch("/static/emoji.json");case 4:if(!(r=t.sent).ok){t.next=13;break}return t.next=8,r.json();case 8:i=t.sent,o=Object.keys(i).map((function(e){return{displayText:e,imageUrl:!1,replacement:i[e]}})).sort((function(e,t){return e.name>t.name?1:-1})),n("setInstanceOption",{name:"emoji",value:o}),t.next=14;break;case 13:throw r;case 14:t.next=20;break;case 16:t.prev=16,t.t0=t.catch(1),console.warn("Can't load static emoji"),console.warn(t.t0);case 20:case"end":return t.stop()}}),t,null,[[1,16]])})))()},getCustomEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o,a,c;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.state,t.prev=1,t.next=4,window.fetch("/api/pleroma/emoji.json");case 4:if(!(i=t.sent).ok){t.next=14;break}return t.next=8,i.json();case 8:o=t.sent,a=Array.isArray(o)?Object.assign.apply(Object,[{}].concat(d()(o))):o,c=Object.entries(a).map((function(e){var t=m()(e,2),n=t[0],i=t[1],o=i.image_url;return{displayText:n,imageUrl:o?r.server+o:i,tags:o?i.tags.sort((function(e,t){return e>t?1:0})):["utf"],replacement:":".concat(n,": ")}})).sort((function(e,t){return e.displayText.toLowerCase()>t.displayText.toLowerCase()?1:-1})),n("setInstanceOption",{name:"customEmoji",value:c}),t.next=15;break;case 14:throw i;case 15:t.next=21;break;case 17:t.prev=17,t.t0=t.catch(1),console.warn("Can't load custom emojis"),console.warn(t.t0);case 21:case"end":return t.stop()}}),t,null,[[1,17]])})))()},setTheme:function(e,t){var n=e.commit,r=e.rootState;n("setInstanceOption",{name:"theme",value:t}),Object(f.j)(t).then((function(e){if(n("setInstanceOption",{name:"themeData",value:e}),!r.config.customTheme){var t=e.source;!e.theme||t&&t.themeEngineVersion===O.a?Object(f.b)(t):Object(f.b)(e.theme)}}))},fetchEmoji:function(e){var t=e.dispatch,n=e.state;n.customEmojiFetched||(n.customEmojiFetched=!0,t("getCustomEmoji")),n.emojiFetched||(n.emojiFetched=!0,t("getStaticEmoji"))},getKnownDomains:function(e){return i()(s.a.mark((function t(){var n,r,i;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.rootState,t.prev=1,t.next=4,j.c.fetchKnownDomains({credentials:r.users.currentUser.credentials});case 4:i=t.sent,n("setKnownDomains",i),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(1),console.warn("Can't load known domains"),console.warn(t.t0);case 12:case"end":return t.stop()}}),t,null,[[1,8]])})))()}}},k=n(131),_=n.n(k),S=n(19),C=n.n(S),P=n(46),x=n.n(P),D=n(318),T=n.n(D),I=n(122),$=n.n(I),z=n(132),M=n.n(z),U=n(133),F=n.n(U),E=n(30),L=n.n(E),R=n(60),A=n.n(R),N=n(29),B=n.n(N),V=n(319),H=n.n(V),q=n(61),J=n.n(q),W=n(26);function Y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var K=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return{statuses:[],statusesObject:{},faves:[],visibleStatuses:[],visibleStatusesObject:{},newStatusCount:0,maxId:0,minId:0,minVisibleId:0,loading:!1,followers:[],friends:[],userId:e,flushMarker:0}},X=function(){return{desktopNotificationSilence:!0,maxId:0,minId:Number.POSITIVE_INFINITY,data:[],idStore:{},loading:!1}},Z=function(){return{allStatuses:[],allStatusesObject:{},conversationsObject:{},maxId:0,notifications:X(),favorites:new Set,timelines:{mentions:K(),public:K(),user:K(),favorites:K(),media:K(),publicAndExternal:K(),friends:K(),tag:K(),dms:K(),bookmarks:K()}}},Q=function(e,t,n){var r=t[n.id];return r?($()(r,_()(n,(function(e,t){return null===e||"user"===t}))),r.attachments.splice(r.attachments.length),{item:r,new:!1}):(function(e){e.deleted=!1,e.attachments=e.attachments||[]}(n),e.push(n),t[n.id]=n,{item:n,new:!0})},ee=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},te=function(e){return e.visibleStatuses=e.visibleStatuses.sort(ee),e.statuses=e.statuses.sort(ee),e.minVisibleId=(x()(e.visibleStatuses)||{}).id,e},ne=function(e,t){var n=Q(e.allStatuses,e.allStatusesObject,t);if(n.new){var r=n.item,i=e.conversationsObject,o=r.statusnet_conversation_id;i[o]?i[o].push(r):i[o]=[r]}return n},re=function(e,t){e.notifications.maxId=t.id>e.notifications.maxId?t.id:e.notifications.maxId,e.notifications.minId=t.id<e.notifications.minId?t.id:e.notifications.minId},ie={addNewStatuses:function(e,t){var n=t.statuses,r=t.showImmediately,i=void 0!==r&&r,o=t.timeline,s=t.user,a=void 0===s?{}:s,c=t.noIdUpdate,l=void 0!==c&&c,u=t.userId,d=t.pagination,p=void 0===d?{}:d;if(!C()(n))return!1;var h=e.allStatuses,b=e.timelines[o],m=p.maxId||(n.length>0?M()(n,"id").id:0),f=p.minId||(n.length>0?F()(n,"id").id:0),O=o&&(f>b.maxId||0===b.maxId)&&n.length>0,j=o&&(m<b.minId||0===b.minId)&&n.length>0;if(!l&&O&&(b.maxId=f),!l&&j&&(b.minId=m),"user"!==o&&"media"!==o||b.userId===u){var g=function(t,n){var r,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=ne(e,t),c=s.item;if(s.new){if("status"===c.type&&L()(c.attentions,{id:a.id})){var l=e.timelines.mentions;b!==l&&(Q(l.statuses,l.statusesObject,c),l.newStatusCount+=1,te(l))}if("direct"===c.visibility){var u=e.timelines.dms;Q(u.statuses,u.statusesObject,c),u.newStatusCount+=1,te(u)}}return o&&i&&(r=Q(b.statuses,b.statusesObject,c)),o&&n?Q(b.visibleStatuses,b.visibleStatusesObject,c):o&&i&&r.new&&(b.newStatusCount+=1),c},v={status:function(e){g(e,i)},retweet:function(e){var t,n=g(e.retweeted_status,!1,!1);t=o&&L()(b.statuses,(function(e){return e.retweeted_status?e.id===n.id||e.retweeted_status.id===n.id:e.id===n.id}))?g(e,!1,!1):g(e,i),t.retweeted_status=n},favorite:function(t){e.favorites.has(t.id)||(e.favorites.add(t.id),function(e,t){var n=L()(h,{id:e.in_reply_to_status_id});n&&(e.user.id===a.id?n.favorited=!0:n.fave_num+=1)}(t))},deletion:function(t){var n=t.uri,r=L()(h,{uri:n});r&&(!function(e,t){J()(e.allStatuses,{id:t.id}),J()(e.notifications.data,(function(e){return e.action.id===t.id}));var n=t.statusnet_conversation_id;e.conversationsObject[n]&&J()(e.conversationsObject[n],{id:t.id})}(e,r),o&&(J()(b.statuses,{uri:n}),J()(b.visibleStatuses,{uri:n})))},follow:function(e){},default:function(e){console.log("unknown status type"),console.log(e)}};B()(n,(function(e){var t=e.type;(v[t]||v.default)(e)})),o&&"bookmarks"!==o&&te(b)}},addNewNotifications:function(e,t){var n=t.dispatch,r=t.notifications,i=(t.older,t.visibleNotificationTypes,t.rootGetters,t.newNotificationSideEffects);B()(r,(function(t){if(!Object(W.c)(t))return console.error("Invalid notification:",t),void re(e,t);Object(W.b)(t.type)&&(t.action=ne(e,t.action).item,t.status=t.status&&ne(e,t.status).item),"pleroma:emoji_reaction"===t.type&&n("fetchEmojiReactionsBy",t.status.id),e.notifications.idStore.hasOwnProperty(t.id)?t.seen&&(e.notifications.idStore[t.id].seen=!0):(re(e,t),e.notifications.data.push(t),e.notifications.idStore[t.id]=t,i(t))}))},removeStatus:function(e,t){var n=t.timeline,r=t.userId,i=e.timelines[n];r&&(J()(i.statuses,{user:{id:r}}),J()(i.visibleStatuses,{user:{id:r}}),i.minVisibleId=i.visibleStatuses.length>0?x()(i.visibleStatuses).id:0,i.maxId=i.statuses.length>0?T()(i.statuses).id:0)},showNewStatuses:function(e,t){var n=t.timeline,r=e.timelines[n];r.newStatusCount=0,r.visibleStatuses=H()(r.statuses,0,50),r.minVisibleId=x()(r.visibleStatuses).id,r.minId=r.minVisibleId,r.visibleStatusesObject={},B()(r.visibleStatuses,(function(e){r.visibleStatusesObject[e.id]=e}))},resetStatuses:function(e){var t=Z();Object.entries(t).forEach((function(t){var n=m()(t,2),r=n[0],i=n[1];e[r]=i}))},clearTimeline:function(e,t){var n=t.timeline,r=t.excludeUserId,i=void 0!==r&&r?e.timelines[n].userId:void 0;e.timelines[n]=K(i)},clearNotifications:function(e){e.notifications=X()},setFavorited:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.favorited!==r&&(r?i.fave_num++:i.fave_num--),i.favorited=r},setFavoritedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.favorited=n.favorited,i.fave_num=n.fave_num;var o=A()(i.favoritedBy,{id:r.id});-1===o||i.favorited?-1===o&&i.favorited&&i.favoritedBy.push(r):i.favoritedBy.splice(o,1)},setMutedStatus:function(e,t){var n=e.allStatusesObject[t.id];n.thread_muted=t.thread_muted,void 0!==n.thread_muted&&e.conversationsObject[n.statusnet_conversation_id].forEach((function(e){e.thread_muted=n.thread_muted}))},setRetweeted:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.repeated!==r&&(r?i.repeat_num++:i.repeat_num--),i.repeated=r},setRetweetedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.repeated=n.repeated,i.repeat_num=n.repeat_num;var o=A()(i.rebloggedBy,{id:r.id});-1===o||i.repeated?-1===o&&i.repeated&&i.rebloggedBy.push(r):i.rebloggedBy.splice(o,1)},setBookmarked:function(e,t){var n=t.status,r=t.value;e.allStatusesObject[n.id].bookmarked=r},setBookmarkedConfirm:function(e,t){var n=t.status;e.allStatusesObject[n.id].bookmarked=n.bookmarked},setDeleted:function(e,t){var n=t.status,r=e.allStatusesObject[n.id];r&&(r.deleted=!0)},setManyDeleted:function(e,t){Object.values(e.allStatusesObject).forEach((function(e){t(e)&&(e.deleted=!0)}))},setLoading:function(e,t){var n=t.timeline,r=t.value;e.timelines[n].loading=r},setNsfw:function(e,t){var n=t.id,r=t.nsfw;e.allStatusesObject[n].nsfw=r},setNotificationsLoading:function(e,t){var n=t.value;e.notifications.loading=n},setNotificationsSilence:function(e,t){var n=t.value;e.notifications.desktopNotificationSilence=n},markNotificationsAsSeen:function(e){B()(e.notifications.data,(function(e){e.seen=!0}))},markSingleNotificationAsSeen:function(e,t){var n=t.id,r=L()(e.notifications.data,(function(e){return e.id===n}));r&&(r.seen=!0)},dismissNotification:function(e,t){var n=t.id;e.notifications.data=e.notifications.data.filter((function(e){return e.id!==n}))},dismissNotifications:function(e,t){var n=t.finder;e.notifications.data=e.notifications.data.filter((function(e){return n}))},updateNotification:function(e,t){var n=t.id,r=t.updater,i=L()(e.notifications.data,(function(e){return e.id===n}));i&&r(i)},queueFlush:function(e,t){var n=t.timeline,r=t.id;e.timelines[n].flushMarker=r},queueFlushAll:function(e){Object.keys(e.timelines).forEach((function(t){e.timelines[t].flushMarker=e.timelines[t].maxId}))},addRepeats:function(e,t){var n=t.id,r=t.rebloggedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.rebloggedBy=r.filter((function(e){return e})),o.repeat_num=o.rebloggedBy.length,o.repeated=!!o.rebloggedBy.find((function(e){var t=e.id;return i.id===t}))},addFavs:function(e,t){var n=t.id,r=t.favoritedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.favoritedBy=r.filter((function(e){return e})),o.fave_num=o.favoritedBy.length,o.favorited=!!o.favoritedBy.find((function(e){var t=e.id;return i.id===t}))},addEmojiReactionsBy:function(e,t){var n=t.id,r=t.emojiReactions;t.currentUser;e.allStatusesObject[n].emoji_reactions=r},addOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r}),a=o.emoji_reactions[s]||{name:r,count:0,accounts:[]},c=G(G({},a),{},{count:a.count+1,me:!0,accounts:[].concat(d()(a.accounts),[i])});s>=0?o.emoji_reactions[s]=c:o.emoji_reactions=[].concat(d()(o.emoji_reactions),[c])},removeOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r});if(!(s<0)){var a=o.emoji_reactions[s],c=a.accounts||[],l=G(G({},a),{},{count:a.count-1,me:!1,accounts:c.filter((function(e){return e.id!==i.id}))});l.count>0?o.emoji_reactions[s]=l:o.emoji_reactions=o.emoji_reactions.filter((function(e){return e.name!==r}))}},updateStatusWithPoll:function(e,t){var n=t.id,r=t.poll;e.allStatusesObject[n].poll=r},setVirtualHeight:function(e,t){var n=t.statusId,r=t.height;e.allStatusesObject[n].virtualHeight=r}},oe={state:Z(),actions:{addNewStatuses:function(e,t){var n=e.rootState,r=e.commit,i=t.statuses,o=t.showImmediately,s=void 0!==o&&o,a=t.timeline,c=void 0!==a&&a,l=t.noIdUpdate,u=void 0!==l&&l,d=t.userId,p=t.pagination;r("addNewStatuses",{statuses:i,showImmediately:s,timeline:c,noIdUpdate:u,user:n.users.currentUser,userId:d,pagination:p})},addNewNotifications:function(e,t){var n=t.notifications,r=t.older;(0,e.commit)("addNewNotifications",{dispatch:e.dispatch,notifications:n,older:r,rootGetters:e.rootGetters,newNotificationSideEffects:function(t){Object(W.d)(e,t)}})},setNotificationsLoading:function(e,t){e.rootState;(0,e.commit)("setNotificationsLoading",{value:t.value})},setNotificationsSilence:function(e,t){e.rootState;(0,e.commit)("setNotificationsSilence",{value:t.value})},fetchStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.fetchStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},deleteStatus:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:t}),j.c.deleteStatus({id:t.id,credentials:n.users.currentUser.credentials})},deleteStatusById:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:n.statuses.allStatusesObject[t]})},markStatusesAsDeleted:function(e,t){(0,e.commit)("setManyDeleted",t)},favorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!0}),n.api.backendInteractor.favorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},unfavorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!1}),n.api.backendInteractor.unfavorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},fetchPinnedStatuses:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.fetchPinnedStatuses({id:t}).then((function(e){return r("addNewStatuses",{statuses:e,timeline:"user",userId:t,showImmediately:!0,noIdUpdate:!0})}))},pinStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.pinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},unpinStatus:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.unpinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},muteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.muteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},unmuteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unmuteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},retweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!0}),n.api.backendInteractor.retweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e.retweeted_status,user:n.users.currentUser})}))},unretweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!1}),n.api.backendInteractor.unretweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e,user:n.users.currentUser})}))},bookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!0}),n.api.backendInteractor.bookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},unbookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!1}),n.api.backendInteractor.unbookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},queueFlush:function(e,t){e.rootState;(0,e.commit)("queueFlush",{timeline:t.timeline,id:t.id})},queueFlushAll:function(e){e.rootState;(0,e.commit)("queueFlushAll")},markNotificationsAsSeen:function(e){var t=e.rootState;(0,e.commit)("markNotificationsAsSeen"),j.c.markNotificationsAsSeen({id:t.statuses.notifications.maxId,credentials:t.users.currentUser.credentials})},markSingleNotificationAsSeen:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("markSingleNotificationAsSeen",{id:i}),j.c.markNotificationsAsSeen({single:!0,id:i,credentials:n.users.currentUser.credentials})},dismissNotificationLocal:function(e,t){e.rootState;(0,e.commit)("dismissNotification",{id:t.id})},dismissNotification:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("dismissNotification",{id:i}),n.api.backendInteractor.dismissNotification({id:i})},updateNotification:function(e,t){e.rootState;(0,e.commit)("updateNotification",{id:t.id,updater:t.updater})},fetchFavsAndRepeats:function(e,t){var n=e.rootState,r=e.commit;Promise.all([n.api.backendInteractor.fetchFavoritedByUsers({id:t}),n.api.backendInteractor.fetchRebloggedByUsers({id:t})]).then((function(e){var i=m()(e,2),o=i[0],s=i[1];r("addFavs",{id:t,favoritedByUsers:o,currentUser:n.users.currentUser}),r("addRepeats",{id:t,rebloggedByUsers:s,currentUser:n.users.currentUser})}))},reactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("addOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.reactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},unreactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("removeOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.unreactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},fetchEmojiReactionsBy:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchEmojiReactions({id:t}).then((function(e){r("addEmojiReactionsBy",{id:t,emojiReactions:e,currentUser:n.users.currentUser})}))},fetchFavs:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchFavoritedByUsers({id:t}).then((function(e){return r("addFavs",{id:t,favoritedByUsers:e,currentUser:n.users.currentUser})}))},fetchRepeats:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchRebloggedByUsers({id:t}).then((function(e){return r("addRepeats",{id:t,rebloggedByUsers:e,currentUser:n.users.currentUser})}))},search:function(e,t){var n=t.q,r=t.resolve,i=t.limit,o=t.offset,s=t.following;return e.rootState.api.backendInteractor.search2({q:n,resolve:r,limit:i,offset:o,following:s}).then((function(t){return e.commit("addNewUsers",t.accounts),e.commit("addNewStatuses",{statuses:t.statuses}),t}))},setVirtualHeight:function(e,t){(0,e.commit)("setVirtualHeight",{statusId:t.statusId,height:t.height})}},mutations:ie},se=n(98),ae=n.n(se),ce=n(97),le=n.n(ce),ue=n(145),de=n.n(ue),pe=n(21),he=n.n(pe),be=n(168),me=n.n(be),fe=n(146),Oe=n.n(fe),je=n(44),ge=function(e){var t=e.store,n=e.credentials,r=e.timeline,i=void 0===r?"friends":r,o=e.older,s=void 0!==o&&o,a=e.showImmediately,c=void 0!==a&&a,l=e.userId,u=void 0!==l&&l,d=e.tag,p=void 0!==d&&d,h=e.until,b=e.since,m={timeline:i,credentials:n},f=t.rootState||t.state,O=t.getters,g=f.statuses.timelines[Oe()(i)],v=O.mergedConfig,y=v.hideMutedPosts,w=v.replyVisibility,k=!!f.users.currentUser;s?m.until=h||g.minId:void 0===b?m.since=g.maxId:null!==b&&(m.since=b),m.userId=u,m.tag=p,m.withMuted=!y,k&&["friends","public","publicAndExternal"].includes(i)&&(m.replyVisibility=w);var _=g.statuses.length;return j.c.fetchTimeline(m).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data,r=e.pagination;return!s&&n.length>=20&&!g.loading&&_>0&&t.dispatch("queueFlush",{timeline:i,id:g.maxId}),function(e){var t=e.store,n=e.statuses,r=e.timeline,i=e.showImmediately,o=e.userId,s=e.pagination,a=Oe()(r);t.dispatch("addNewStatuses",{timeline:a,userId:o,statuses:n,showImmediately:i,pagination:s})}({store:t,statuses:n,timeline:i,showImmediately:c,userId:u,pagination:r}),{statuses:n,pagination:r}})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"timeline.error",messageArgs:[e.message],timeout:5e3})}))},ve={fetchAndUpdate:ge,startFetching:function(e){var t=e.timeline,n=void 0===t?"friends":t,r=e.credentials,i=e.store,o=e.userId,s=void 0!==o&&o,a=e.tag,c=void 0!==a&&a,l=(i.rootState||i.state).statuses.timelines[Oe()(n)],u=0===l.visibleStatuses.length;l.userId=s,ge({timeline:n,credentials:r,store:i,showImmediately:u,userId:s,tag:c});return Object(je.a)((function(){return ge({timeline:n,credentials:r,store:i,userId:s,tag:c})}),2e4)}},ye=n(99),we={startFetching:function(e){var t=e.credentials,n=e.store,r=function(){return function(e){var t=e.store,n=e.credentials;return j.c.fetchFollowRequests({credentials:n}).then((function(e){t.commit("setFollowRequests",e),t.commit("addNewUsers",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return r(),Object(je.a)(r,24e4)}};function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ke(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Se=function(e){return _e(_e({startFetchingTimeline:function(t){var n=t.timeline,r=t.store,i=t.userId,o=void 0!==i&&i,s=t.tag;return ve.startFetching({timeline:n,store:r,credentials:e,userId:o,tag:s})},fetchTimeline:function(t){return ve.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingNotifications:function(t){var n=t.store;return ye.a.startFetching({store:n,credentials:e})},fetchNotifications:function(t){return ye.a.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingFollowRequests:function(t){var n=t.store;return we.startFetching({store:n,credentials:e})},startUserSocket:function(t){var n=t.store.rootState.instance.server.replace("http","ws")+Object(j.d)({credentials:e,stream:"user"});return Object(j.a)({url:n,id:"User"})}},Object.entries(j.c).reduce((function(t,n){var r=m()(n,2),i=r[0],o=r[1];return _e(_e({},t),{},h()({},i,(function(t){return o(_e({credentials:e},t))})))}),{})),{},{verifyCredentials:j.c.verifyCredentials})},Ce=function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},Pe=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},xe=n(55),De=n.n(xe),Te="".concat(window.location.origin,"/oauth-callback"),Ie=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.commit;if(t&&n)return Promise.resolve({clientId:t,clientSecret:n});var o="".concat(r,"/api/v1/apps"),s=new window.FormData;return s.append("client_name","PleromaFE_".concat(window.___pleromafe_commit_hash,"_").concat((new Date).toISOString())),s.append("redirect_uris",Te),s.append("scopes","read write follow push admin"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()})).then((function(e){return{clientId:e.client_id,clientSecret:e.client_secret}})).then((function(e){return i("setClientData",e)||e}))},$e=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i="".concat(r,"/oauth/token"),o=new window.FormData;return o.append("client_id",t),o.append("client_secret",n),o.append("grant_type","client_credentials"),o.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))},ze={login:function(e){var t=e.instance,n={response_type:"code",client_id:e.clientId,redirect_uri:Te,scope:"read write follow push admin"},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return e?"".concat(e,"&").concat(r):r}),!1),i="".concat(t,"/oauth/authorize?").concat(r);window.location.href=i},getToken:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.code,o="".concat(r,"/oauth/token"),s=new window.FormData;return s.append("client_id",t),s.append("client_secret",n),s.append("grant_type","authorization_code"),s.append("code",i),s.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},getTokenWithCredentials:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.username,o=e.password,s="".concat(r,"/oauth/token"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("grant_type","password"),a.append("username",i),a.append("password",o),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},getOrCreateApp:Ie,verifyOTPCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","totp"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","recovery"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},revokeToken:function(e){var t=e.app,n=e.instance,r=e.token,i="".concat(n,"/oauth/revoke"),o=new window.FormData;return o.append("client_id",t.clientId),o.append("client_secret",t.clientSecret),o.append("token",r),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))}},Me=n(320),Ue=n.n(Me);function Fe(){return"serviceWorker"in navigator&&"PushManager"in window}function Ee(){return Ue.a.register().catch((function(e){return console.error("Unable to get or create a service worker.",e)}))}function Le(e){return window.fetch("/api/v1/push/subscription/",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e}))}function Re(e,t,n,r){Fe()&&Ee().then((function(n){return function(e,t,n){if(!t)return Promise.reject(new Error("Web Push is disabled in config"));if(!n)return Promise.reject(new Error("VAPID public key is not found"));var r,i,o,s={userVisibleOnly:!0,applicationServerKey:(r=n,i=(r+"=".repeat((4-r.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),o=window.atob(i),Uint8Array.from(d()(o).map((function(e){return e.charCodeAt(0)}))))};return e.pushManager.subscribe(s)}(n,e,t)})).then((function(e){return function(e,t,n){return window.fetch("/api/v1/push/subscription/",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(t)},body:JSON.stringify({subscription:e,data:{alerts:{follow:n.follows,favourite:n.likes,mention:n.mentions,reblog:n.repeats,move:n.moves}}})}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e.json()})).then((function(e){if(!e.id)throw new Error("Bad response from server.");return e}))}(e,n,r)})).catch((function(e){return console.warn("Failed to setup Web Push Notifications: ".concat(e.message))}))}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Be=function e(t,n){if(C()(t)&&C()(n))return t.length=n.length,de()(t,n,e)},Ve=function(e,t){return e.rootState.api.backendInteractor.blockUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addBlockId",t),e.commit("removeStatus",{timeline:"friends",userId:t}),e.commit("removeStatus",{timeline:"public",userId:t}),e.commit("removeStatus",{timeline:"publicAndExternal",userId:t})}))},He=function(e,t){return e.rootState.api.backendInteractor.unblockUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},qe=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!0,e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t),e.rootState.api.backendInteractor.muteUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t)}))},Je=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!1,e.commit("updateUserRelationship",[n]),e.rootState.api.backendInteractor.unmuteUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},We=function(e,t){return e.rootState.api.backendInteractor.muteDomain({domain:t}).then((function(){return e.commit("addDomainMute",t)}))},Ye=function(e,t){return e.rootState.api.backendInteractor.unmuteDomain({domain:t}).then((function(){return e.commit("removeDomainMute",t)}))},Ge={state:{loggingIn:!1,lastLoginName:!1,currentUser:!1,users:[],usersObject:{},signUpPending:!1,signUpErrors:[],relationships:{}},mutations:{tagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).concat([r]);i.tags=o},untagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).filter((function(e){return e!==r}));i.tags=o},updateRight:function(e,t){var n=t.user.id,r=t.right,i=t.value,o=e.usersObject[n],s=o.rights;s[r]=i,o.rights=s},updateActivationStatus:function(e,t){var n=t.user.id,r=t.deactivated;e.usersObject[n].deactivated=r},setCurrentUser:function(e,t){e.lastLoginName=t.screen_name,e.currentUser=de()(e.currentUser||{},t,Be)},clearCurrentUser:function(e){e.currentUser=!1,e.lastLoginName=!1},beginLogin:function(e){e.loggingIn=!0},endLogin:function(e){e.loggingIn=!1},saveFriendIds:function(e,t){var n=t.id,r=t.friendIds,i=e.usersObject[n];i.friendIds=ae()(le()(i.friendIds||[],r))},saveFollowerIds:function(e,t){var n=t.id,r=t.followerIds,i=e.usersObject[n];i.followerIds=ae()(le()(i.followerIds||[],r))},clearFriends:function(e,t){var n=e.usersObject[t];n&&(n.friendIds=[])},clearFollowers:function(e,t){var n=e.usersObject[t];n&&(n.followerIds=[])},addNewUsers:function(e,t){B()(t,(function(t){t.relationship&&(e.relationships[t.relationship.id]=t.relationship),function(e,t,n){if(!n)return!1;var r=t[n.id];r?de()(r,n,Be):(e.push(n),t[n.id]=n,n.screen_name&&!n.screen_name.includes("@")&&(t[n.screen_name.toLowerCase()]=n))}(e.users,e.usersObject,t)}))},updateUserRelationship:function(e,t){t.forEach((function(t){e.relationships[t.id]=t}))},saveBlockIds:function(e,t){e.currentUser.blockIds=t},addBlockId:function(e,t){-1===e.currentUser.blockIds.indexOf(t)&&e.currentUser.blockIds.push(t)},saveMuteIds:function(e,t){e.currentUser.muteIds=t},addMuteId:function(e,t){-1===e.currentUser.muteIds.indexOf(t)&&e.currentUser.muteIds.push(t)},updateMascot:function(e,t){e.currentUser.mascot=t},saveDomainMutes:function(e,t){e.currentUser.domainMutes=t},addDomainMute:function(e,t){-1===e.currentUser.domainMutes.indexOf(t)&&e.currentUser.domainMutes.push(t)},removeDomainMute:function(e,t){var n=e.currentUser.domainMutes.indexOf(t);-1!==n&&e.currentUser.domainMutes.splice(n,1)},setPinnedToUser:function(e,t){var n=e.usersObject[t.user.id];n.pinnedStatusIds=n.pinnedStatusIds||[];var r=n.pinnedStatusIds.indexOf(t.id);t.pinned&&-1===r?n.pinnedStatusIds.push(t.id):t.pinned||-1===r||n.pinnedStatusIds.splice(r,1)},setUserForStatus:function(e,t){t.user=e.usersObject[t.user.id]},setUserForNotification:function(e,t){"follow"!==t.type&&(t.action.user=e.usersObject[t.action.user.id]),t.from_profile=e.usersObject[t.from_profile.id]},setColor:function(e,t){var n=t.user.id,r=t.highlighted;e.usersObject[n].highlight=r},signUpPending:function(e){e.signUpPending=!0,e.signUpErrors=[]},signUpSuccess:function(e){e.signUpPending=!1},signUpFailure:function(e,t){e.signUpPending=!1,e.signUpErrors=t}},getters:{findUser:function(e){return function(t){var n=e.usersObject[t];return n||"string"!=typeof t?n:e.usersObject[t.toLowerCase()]}},findUserByUrl:function(e){return function(t){return e.users.find((function(e){return e.statusnet_profile_url&&e.statusnet_profile_url.toLowerCase()===t.toLowerCase()}))}},relationship:function(e){return function(t){return t&&e.relationships[t]||{id:t,loading:!0}}}},actions:{fetchUserIfMissing:function(e,t){e.getters.findUser(t)||e.dispatch("fetchUser",t)},fetchUser:function(e,t){return e.rootState.api.backendInteractor.fetchUser({id:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserRelationship:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserRelationship({id:t}).then((function(t){return e.commit("updateUserRelationship",t)}))},fetchBlocks:function(e){return e.rootState.api.backendInteractor.fetchBlocks().then((function(t){return e.commit("saveBlockIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},blockUser:function(e,t){return Ve(e,t)},unblockUser:function(e,t){return He(e,t)},blockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ve(e,t)})))},unblockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return He(e,t)})))},fetchMutes:function(e){return e.rootState.api.backendInteractor.fetchMutes().then((function(t){return e.commit("saveMuteIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},muteUser:function(e,t){return qe(e,t)},unmuteUser:function(e,t){return Je(e,t)},hideReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!1}).then((function(t){e.commit("updateUserRelationship",[t])}))}(e,t)},showReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!0}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},muteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return qe(e,t)})))},unmuteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Je(e,t)})))},fetchMascot:function(e){return function(e){return e.rootState.api.backendInteractor.fetchMascot().then((function(t){var n=t.url;return e.commit("updateMascot",n)}))}(e)},fetchDomainMutes:function(e){return e.rootState.api.backendInteractor.fetchDomainMutes().then((function(t){return e.commit("saveDomainMutes",t),t}))},muteDomain:function(e,t){return We(e,t)},unmuteDomain:function(e,t){return Ye(e,t)},muteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return We(e,t)})))},unmuteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ye(e,t)})))},fetchFriends:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.friendIds);return n.api.backendInteractor.fetchFriends({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFriendIds",{id:t,friendIds:he()(e,"id")}),e}))},fetchFollowers:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.followerIds);return n.api.backendInteractor.fetchFollowers({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFollowerIds",{id:t,followerIds:he()(e,"id")}),e}))},clearFriends:function(e,t){(0,e.commit)("clearFriends",t)},clearFollowers:function(e,t){(0,e.commit)("clearFollowers",t)},subscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.subscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},unsubscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unsubscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},toggleActivationStatus:function(e,t){var n=e.rootState,r=e.commit,i=t.user;(i.deactivated?n.api.backendInteractor.activateUser:n.api.backendInteractor.deactivateUser)({user:i}).then((function(e){var t=!e.is_active;r("updateActivationStatus",{user:e,deactivated:t})}))},registerPushNotifications:function(e){var t=e.state.currentUser.credentials,n=e.rootState.instance.vapidPublicKey;Re(e.rootState.config.webPushNotifications,n,t,e.rootState.config.notificationVisibility)},unregisterPushNotifications:function(e){!function(e){Fe()&&Promise.all([Le(e),Ee().then((function(e){return function(e){return e.pushManager.getSubscription().then((function(e){if(null!==e)return e.unsubscribe()}))}(e).then((function(t){return[e,t]}))})).then((function(e){var t=m()(e,2),n=t[0];return t[1]||console.warn("Push subscription cancellation wasn't successful, killing SW anyway..."),n.unregister().then((function(e){e||console.warn("Failed to kill SW")}))}))]).catch((function(e){return console.warn("Failed to disable Web Push Notifications: ".concat(e.message))}))}(e.state.currentUser.credentials)},addNewUsers:function(e,t){(0,e.commit)("addNewUsers",t)},addNewStatuses:function(e,t){var n=t.statuses,r=he()(n,"user"),i=me()(he()(n,"retweeted_status.user"));e.commit("addNewUsers",r),e.commit("addNewUsers",i),B()(n,(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)})),B()(me()(he()(n,"retweeted_status")),(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)}))},addNewNotifications:function(e,t){var n=t.notifications,r=he()(n,"from_profile"),i=he()(n,"target").filter((function(e){return e})),o=n.map((function(e){return e.id}));e.commit("addNewUsers",r),e.commit("addNewUsers",i);var s=e.rootState.statuses.notifications.idStore,a=Object.entries(s).filter((function(e){var t=m()(e,2),n=t[0];t[1];return o.includes(n)})).map((function(e){var t=m()(e,2);t[0];return t[1]}));B()(a,(function(t){e.commit("setUserForNotification",t)}))},searchUsers:function(e,t){var n=e.rootState,r=e.commit,i=t.query;return n.api.backendInteractor.searchUsers({query:i}).then((function(e){return r("addNewUsers",e),e}))},signUp:function(e,t){return i()(s.a.mark((function n(){var r,i,o;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit("signUpPending"),r=e.rootState,n.prev=2,n.next=5,r.api.backendInteractor.register({params:Ne({},t)});case 5:i=n.sent,e.commit("signUpSuccess"),e.commit("setToken",i.access_token),e.dispatch("loginUser",i.access_token),n.next=16;break;case 11:throw n.prev=11,n.t0=n.catch(2),o=n.t0.message,e.commit("signUpFailure",o),n.t0;case 16:case"end":return n.stop()}}),n,null,[[2,11]])})))()},getCaptcha:function(e){return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e.rootState.api.backendInteractor.getCaptcha());case 1:case"end":return t.stop()}}),t)})))()},logout:function(e){var t=e.rootState,n=t.oauth,r=t.instance,i=Ne(Ne({},n),{},{commit:e.commit,instance:r.server});return ze.getOrCreateApp(i).then((function(e){var t={app:e,instance:i.instance,token:n.userToken};return ze.revokeToken(t)})).then((function(){e.commit("clearCurrentUser"),e.dispatch("disconnectFromSocket"),e.commit("clearToken"),e.dispatch("stopFetchingTimeline","friends"),e.commit("setBackendInteractor",Se(e.getters.getToken())),e.dispatch("stopFetchingNotifications"),e.dispatch("stopFetchingFollowRequests"),e.commit("clearNotifications"),e.commit("resetStatuses"),e.dispatch("resetChats"),e.dispatch("setLastTimeline","public-timeline"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe())}))},loginUser:function(e,t){return new Promise((function(n,r){var i=e.commit;i("beginLogin"),e.rootState.api.backendInteractor.verifyCredentials(t).then((function(o){if(o.error){var s=o.error;i("endLogin"),401===s.status?r(new Error("Wrong username or password")):r(new Error("An error occurred, please try again"))}else{var a=o;a.credentials=t,a.blockIds=[],a.muteIds=[],a.domainMutes=[],i("setCurrentUser",a),i("addNewUsers",[a]),e.dispatch("fetchEmoji"),(c=window.Notification,c?"default"===c.permission?c.requestPermission():Promise.resolve(c.permission):Promise.resolve(null)).then((function(e){return i("setNotificationPermission",e)})),i("setBackendInteractor",Se(t)),a.token&&(e.dispatch("setWsToken",a.token),e.dispatch("initializeSocket"));e.getters.mergedConfig.useStreamingApi?(e.dispatch("fetchTimeline","friends",{since:null}),e.dispatch("fetchNotifications",{since:null}),e.dispatch("enableMastoSockets",!0).catch((function(e){console.error("Failed initializing MastoAPI Streaming socket",e)})).then((function(){e.dispatch("fetchChats",{latest:!0}),setTimeout((function(){return e.dispatch("setNotificationsSilence",!1)}),1e4)}))):(e.dispatch("startFetchingTimeline",{timeline:"friends"}),e.dispatch("startFetchingNotifications"),e.dispatch("startFetchingChats")),e.dispatch("fetchMutes"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe()),e.rootState.api.backendInteractor.fetchFriends({id:a.id}).then((function(e){return i("addNewUsers",e)}))}var c;i("endLogin"),n()})).catch((function(e){console.log(e),i("endLogin"),r(new Error("Failed to connect to server, try again"))}))}))}}},Ke=n(169),Xe=n.n(Ke),Ze=n(127),Qe=function(e,t){if(t.lastMessage&&(e.rootState.chats.currentChatId!==t.id||document.hidden)&&e.rootState.users.currentUser.id!==t.lastMessage.account_id){var n={tag:t.lastMessage.id,title:t.account.name,icon:t.account.profile_image_url,body:t.lastMessage.content};t.lastMessage.attachment&&"image"===t.lastMessage.attachment.type&&(n.image=t.lastMessage.attachment.preview_url),Object(Ze.a)(e.rootState,n)}},et=n(321);function tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var rt={state:{retryMultiplier:1,backendInteractor:Se(),fetchers:{},socket:null,mastoUserSocket:null,mastoUserSocketStatus:null,followRequests:[]},mutations:{setBackendInteractor:function(e,t){e.backendInteractor=t},addFetcher:function(e,t){var n=t.fetcherName,r=t.fetcher;e.fetchers[n]=r},removeFetcher:function(e,t){var n=t.fetcherName;t.fetcher;e.fetchers[n].stop(),delete e.fetchers[n]},setWsToken:function(e,t){e.wsToken=t},setSocket:function(e,t){e.socket=t},setFollowRequests:function(e,t){e.followRequests=t},setMastoUserSocketStatus:function(e,t){e.mastoUserSocketStatus=t},incrementRetryMultiplier:function(e){e.retryMultiplier=Math.max(++e.retryMultiplier,3)},resetRetryMultiplier:function(e){e.retryMultiplier=1}},actions:{enableMastoSockets:function(e,t){var n=e.state,r=e.dispatch,i=e.commit;if(!n.mastoUserSocket||[WebSocket.CLOSED,WebSocket.CLOSING].includes(n.mastoUserSocket.getState()))return i("setMastoUserSocketStatus",t?j.b.STARTING_INITIAL:j.b.STARTING),r("startMastoUserSocket")},disableMastoSockets:function(e){var t=e.state,n=e.dispatch,r=e.commit;if(t.mastoUserSocket)return r("setMastoUserSocketStatus",j.b.DISABLED),n("stopMastoUserSocket")},startMastoUserSocket:function(e){return new Promise((function(t,n){try{var r=e.state,i=e.commit,o=e.dispatch,s=e.rootState.statuses.timelines.friends;r.mastoUserSocket=r.backendInteractor.startUserSocket({store:e}),r.mastoUserSocket.addEventListener("message",(function(t){var n=t.detail;n&&("notification"===n.event?o("addNewNotifications",{notifications:[n.notification],older:!1}):"update"===n.event?o("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:0===s.visibleStatuses.length,timeline:"friends"}):"delete"===n.event?o("deleteStatusById",n.id):"pleroma:chat_update"===n.event&&setTimeout((function(){o("addChatMessages",{chatId:n.chatUpdate.id,messages:[n.chatUpdate.lastMessage]}),o("updateChat",{chat:n.chatUpdate}),Qe(e,n.chatUpdate)}),100))})),r.mastoUserSocket.addEventListener("open",(function(){r.mastoUserSocketStatus!==j.b.STARTING_INITIAL&&o("pushGlobalNotice",{level:"success",messageKey:"timeline.socket_reconnected",timeout:5e3}),new Set([j.b.ERROR,j.b.DISABLED]).has(r.mastoUserSocketStatus)&&(o("stopFetchingTimeline",{timeline:"friends"}),o("stopFetchingNotifications"),o("stopFetchingChats")),i("resetRetryMultiplier"),i("setMastoUserSocketStatus",j.b.JOINED)})),r.mastoUserSocket.addEventListener("error",(function(e){var t=e.detail;console.error("Error in MastoAPI websocket:",t),o("clearOpenedChats")})),r.mastoUserSocket.addEventListener("close",(function(e){var t=e.detail,n=new Set([1e3,1001]),s=t.code;n.has(s)?(console.debug("Not restarting socket becasue of closure code ".concat(s," is in ignore list")),i("setMastoUserSocketStatus",j.b.CLOSED)):(console.warn("MastoAPI websocket disconnected, restarting. CloseEvent code: ".concat(s)),setTimeout((function(){o("startMastoUserSocket")}),1e3*r.retryMultiplier),i("incrementRetryMultiplier"),r.mastoUserSocketStatus!==j.b.ERROR&&(o("startFetchingTimeline",{timeline:"friends"}),o("startFetchingNotifications"),o("startFetchingChats"),o("pushGlobalNotice",{level:"error",messageKey:"timeline.socket_broke",messageArgs:[s],timeout:5e3})),i("setMastoUserSocketStatus",j.b.ERROR)),o("clearOpenedChats")})),t()}catch(e){n(e)}}))},stopMastoUserSocket:function(e){var t=e.state,n=e.dispatch;n("startFetchingTimeline",{timeline:"friends"}),n("startFetchingNotifications"),n("startFetchingChats"),t.mastoUserSocket.close()},startFetchingTimeline:function(e,t){var n=t.timeline,r=void 0===n?"friends":n,i=t.tag,o=void 0!==i&&i,s=t.userId,a=void 0!==s&&s;if(!e.state.fetchers[r]){var c=e.state.backendInteractor.startFetchingTimeline({timeline:r,store:e,userId:a,tag:o});e.commit("addFetcher",{fetcherName:r,fetcher:c})}},stopFetchingTimeline:function(e,t){var n=e.state.fetchers[t];n&&e.commit("removeFetcher",{fetcherName:t,fetcher:n})},fetchTimeline:function(e,t,n){var r=Xe()({},n);e.state.backendInteractor.fetchTimeline(nt({store:e,timeline:t},r))},startFetchingNotifications:function(e){if(!e.state.fetchers.notifications){var t=e.state.backendInteractor.startFetchingNotifications({store:e});e.commit("addFetcher",{fetcherName:"notifications",fetcher:t})}},stopFetchingNotifications:function(e){var t=e.state.fetchers.notifications;t&&e.commit("removeFetcher",{fetcherName:"notifications",fetcher:t})},fetchNotifications:function(e,t){var n=Xe()({},t);e.state.backendInteractor.fetchNotifications(nt({store:e},n))},startFetchingFollowRequests:function(e){if(!e.state.fetchers.followRequests){var t=e.state.backendInteractor.startFetchingFollowRequests({store:e});e.commit("addFetcher",{fetcherName:"followRequests",fetcher:t})}},stopFetchingFollowRequests:function(e){var t=e.state.fetchers.followRequests;t&&e.commit("removeFetcher",{fetcherName:"followRequests",fetcher:t})},removeFollowRequest:function(e,t){var n=e.state.followRequests.filter((function(e){return e!==t}));e.commit("setFollowRequests",n)},setWsToken:function(e,t){e.commit("setWsToken",t)},initializeSocket:function(e){var t=e.dispatch,n=e.commit,r=e.state,i=e.rootState,o=r.wsToken;if(i.instance.shoutAvailable&&void 0!==o&&null===r.socket){var s=new et.a("/socket",{params:{token:o}});s.connect(),n("setSocket",s),t("initializeShout",s)}},disconnectFromSocket:function(e){var t=e.commit,n=e.state;n.socket&&n.socket.disconnect(),t("setSocket",null)}}},it=n(220),ot={state:{messages:[],channel:{state:""},joined:!1},mutations:{setChannel:function(e,t){e.channel=t},addMessage:function(e,t){e.messages.push(t),e.messages=e.messages.slice(-19,20)},setMessages:function(e,t){e.messages=t.slice(-19,20)},setJoined:function(e,t){e.joined=t}},actions:{initializeShout:function(e,t){var n=t.channel("chat:public");n.joinPush.receive("ok",(function(){e.commit("setJoined",!0)})),n.onClose((function(){e.commit("setJoined",!1)})),n.onError((function(){e.commit("setJoined",!1)})),n.on("new_msg",(function(t){e.commit("addMessage",t)})),n.on("messages",(function(t){var n=t.messages;e.commit("setMessages",n)})),n.join(),e.commit("setChannel",n)}}},st={state:{clientId:!1,clientSecret:!1,appToken:!1,userToken:!1},mutations:{setClientData:function(e,t){var n=t.clientId,r=t.clientSecret;e.clientId=n,e.clientSecret=r},setAppToken:function(e,t){e.appToken=t},setToken:function(e,t){e.userToken=t},clearToken:function(e){e.userToken=!1,delete e.token}},getters:{getToken:function(e){return function(){return e.userToken||e.token||e.appToken}},getUserToken:function(e){return function(){return e.userToken||e.token}}}},at=function(e){e.strategy=e.initStrategy,e.settings={}},ct={namespaced:!0,state:{settings:{},strategy:"password",initStrategy:"password"},getters:{settings:function(e,t){return e.settings},requiredPassword:function(e,t,n){return"password"===e.strategy},requiredToken:function(e,t,n){return"token"===e.strategy},requiredTOTP:function(e,t,n){return"totp"===e.strategy},requiredRecovery:function(e,t,n){return"recovery"===e.strategy}},mutations:{setInitialStrategy:function(e,t){t&&(e.initStrategy=t,e.strategy=t)},requirePassword:function(e){e.strategy="password"},requireToken:function(e){e.strategy="token"},requireMFA:function(e,t){var n=t.settings;e.settings=n,e.strategy="totp"},requireRecovery:function(e){e.strategy="recovery"},requireTOTP:function(e){e.strategy="totp"},abortMFA:function(e){at(e)}},actions:{login:function(e,t){return i()(s.a.mark((function n(){var r,i,o,a;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.state,i=e.dispatch,o=e.commit,a=t.access_token,o("setToken",a,{root:!0}),n.next=5,i("loginUser",a,{root:!0});case 5:at(r);case 6:case"end":return n.stop()}}),n)})))()}}},lt=n(33),ut=new Set(["image","video","audio","flash"]),dt={state:{media:[],currentIndex:0,activated:!1},mutations:{setMedia:function(e,t){e.media=t},setCurrentMedia:function(e,t){e.activated=!0,e.currentIndex=t},close:function(e){e.activated=!1}},actions:{setMedia:function(e,t){(0,e.commit)("setMedia",t.filter((function(e){var t=lt.a.fileType(e.mimetype);return ut.has(t)})))},setCurrentMedia:function(e,t){(0,e.commit)("setCurrentMedia",e.state.media.indexOf(t)||0)},closeMediaViewer:function(e){(0,e.commit)("close")}}},pt={state:{tokens:[]},actions:{fetchTokens:function(e){var t=e.rootState,n=e.commit;t.api.backendInteractor.fetchOAuthTokens().then((function(e){n("swapTokens",e)}))},revokeToken:function(e,t){var n=e.rootState,r=e.commit,i=e.state;n.api.backendInteractor.revokeOAuthToken({id:t}).then((function(e){201===e.status&&r("swapTokens",i.tokens.filter((function(e){return e.id!==t})))}))}},mutations:{swapTokens:function(e,t){e.tokens=t}}},ht=n(49),bt=n.n(ht),mt={state:{userId:null,statuses:[],preTickedIds:[],modalActivated:!1},mutations:{openUserReportingModal:function(e,t){var n=t.userId,r=t.statuses,i=t.preTickedIds;e.userId=n,e.statuses=r,e.preTickedIds=i,e.modalActivated=!0},closeUserReportingModal:function(e){e.modalActivated=!1}},actions:{openUserReportingModal:function(e,t){var n=e.rootState,r=e.commit,i=t.userId,o=t.statusIds,s=void 0===o?[]:o,a=s.map((function(e){return n.statuses.allStatusesObject[e]})),c=s,l=a.concat(bt()(n.statuses.allStatuses,(function(e){return e.user.id===i&&!c.includes(e.id)})));r("openUserReportingModal",{userId:i,statuses:l,preTickedIds:c})},closeUserReportingModal:function(e){(0,e.commit)("closeUserReportingModal")}}},ft={state:{trackedPolls:{},pollsObject:{}},mutations:{mergeOrAddPoll:function(e,t){var n=e.pollsObject[t.id];t.expired=Date.now()>Date.parse(t.expires_at),e.pollsObject[t.id]=n?$()(n,t):t},trackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n+1:1},untrackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n-1:0}},actions:{mergeOrAddPoll:function(e,t){(0,e.commit)("mergeOrAddPoll",t)},updateTrackedPoll:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit;n.api.backendInteractor.fetchPoll({pollId:t}).then((function(e){setTimeout((function(){n.polls.trackedPolls[t]&&r("updateTrackedPoll",t)}),3e4),i("mergeOrAddPoll",e)}))},trackPoll:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch;n.polls.trackedPolls[t]||setTimeout((function(){return i("updateTrackedPoll",t)}),3e4),r("trackPoll",t)},untrackPoll:function(e,t){(0,e.commit)("untrackPoll",t)},votePoll:function(e,t){var n=e.rootState,r=e.commit,i=(t.id,t.pollId),o=t.choices;return n.api.backendInteractor.vote({pollId:i,choices:o}).then((function(e){return r("mergeOrAddPoll",e),e}))}}},Ot={state:{params:null,modalActivated:!1},mutations:{openPostStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closePostStatusModal:function(e){e.modalActivated=!1}},actions:{openPostStatusModal:function(e,t){(0,e.commit)("openPostStatusModal",t)},closePostStatusModal:function(e){(0,e.commit)("closePostStatusModal")}}},jt=n(134),gt=n.n(jt),vt=n(100),yt=n.n(vt),wt=n(0),kt=n(28),_t=n.n(kt),St=n(322),Ct=n.n(St),Pt=n(125),xt=n.n(Pt);function Dt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Tt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function Tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var It=function(e,t){if(t.idempotency_key)return e.idempotencyKeyIndex[t.idempotency_key]},$t={add:function(e,t){var n=t.messages,r=t.updateMaxId,i=void 0===r||r;if(e)for(var o=function(t){var r=n[t];if(r.chat_id!==e.chatId)return{v:void 0};if(r.fakeId){var o=e.idIndex[r.fakeId];if(o)return e.idIndex[r.id]&&(delete e.idIndex[r.id],e.messages=e.messages.filter((function(e){return e.id!==r.id}))),Object.assign(o,r,{error:!1}),delete o.fakeId,e.idIndex[o.id]=o,delete e.idIndex[r.fakeId],{v:void 0}}(!e.minId||!r.pending&&r.id<e.minId)&&(e.minId=r.id),(!e.maxId||r.id>e.maxId)&&i&&(e.maxId=r.id),e.idIndex[r.id]||It(e,r)||(e.lastSeenMessageId<r.id&&e.newMessageCount++,e.idIndex[r.id]=r,e.messages.push(e.idIndex[r.id]),e.idempotencyKeyIndex[r.idempotency_key]=!0)},s=0;s<n.length;s++){var a=o(s);if("object"===_t()(a))return a.v}},empty:function(e){return{idIndex:{},idempotencyKeyIndex:{},messages:[],newMessageCount:0,lastSeenMessageId:"0",chatId:e,minId:void 0,maxId:void 0}},getView:function(e){if(!e)return[];var t,n=[],r=yt()(e.messages,["pending","id"],["asc","asc"]),i=r[0],o=r[r.length-1];if(i){var s=new Date(i.created_at);s.setHours(0,0,0,0),n.push({type:"date",date:s,id:s.getTime().toString()})}for(var a=!1,c=0;c<r.length;c++){var l=r[c],u=r[c+1],d=new Date(l.created_at);d.setHours(0,0,0,0),o&&o.date<d&&(n.push({type:"date",date:d,id:d.getTime().toString()}),o.isTail=!0,t=void 0,a=!0);var p={type:"message",data:l,date:d,id:l.id,messageChainId:t};(u&&u.account_id)!==l.account_id&&(p.isTail=!0,t=void 0),((o&&o.data&&o.data.account_id)!==l.account_id||a)&&(t=Ct()(),p.isHead=!0,p.messageChainId=t),n.push(p),o=p,a=!1}return n},deleteMessage:function(e,t){if(e){if(e.messages=e.messages.filter((function(e){return e.id!==t})),delete e.idIndex[t],e.maxId===t){var n=F()(e.messages,"id");e.maxId=n.id}if(e.minId===t){var r=M()(e.messages,"id");e.minId=r.id}}},cullOlderMessages:function(e){var t=e.messages.length,n=t-50;if(!(t<=50)){e.messages=xt()(e.messages,["id"]),e.minId=e.messages[n].id;var r,i=Dt(e.messages);try{for(i.s();!(r=i.n()).done;){var o=r.value;o.id<e.minId&&(delete e.idIndex[o.id],delete e.idempotencyKeyIndex[o.idempotency_key])}}catch(e){i.e(e)}finally{i.f()}e.messages=e.messages.slice(n,t)}},resetNewMessageCount:function(e){e&&(e.newMessageCount=0,e.lastSeenMessageId=e.maxId)},clear:function(e){var t,n=[],r=Dt(e.messages);try{for(r.s();!(t=r.n()).done;){var i=t.value;i.error?n.push(i.id):(delete e.idIndex[i.id],delete e.idempotencyKeyIndex[i.idempotency_key])}}catch(e){r.e(e)}finally{r.f()}e.messages=e.messages.filter((function(e){return n.includes(e.id)})),e.newMessageCount=0,e.lastSeenMessageId="0",e.minId=void 0,e.maxId=void 0},handleMessageError:function(e,t,n){if(e){var r=e.idIndex[t];if(r&&(r.error=!0,r.pending=!1,!n)){var i=yt()(e.messages,["pending","id"],["asc","desc"])[0];if(i){var o=r.id;r.id="".concat(i.id,"-").concat((new Date).getTime()),e.idIndex[r.id]=r,delete e.idIndex[o]}}}}},zt=n(14);function Mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ft={chatList:{data:[],idStore:{}},chatListFetcher:null,openedChats:Object(wt.F)({}),openedChatMessageServices:Object(wt.F)({}),fetcher:void 0,currentChatId:null,lastReadMessageId:null},Et=function(e,t){return L()(e.chatList.data,{id:t})},Lt={state:Ut({},Ft),getters:{currentChat:function(e){return e.openedChats[e.currentChatId]},currentChatMessageService:function(e){return e.openedChatMessageServices[e.currentChatId]},findOpenedChatByRecipientId:function(e){return function(t){return L()(e.openedChats,(function(e){return e.account.id===t}))}},sortedChatList:function(e){return yt()(e.chatList.data,["updated_at"],["desc"])},unreadChatCount:function(e){return gt()(e.chatList.data,"unread")}},actions:{startFetchingChats:function(e){var t=e.dispatch,n=e.commit,r=function(){return t("fetchChats",{latest:!0})};r(),n("setChatListFetcher",{fetcher:function(){return Object(je.a)(r,6e4)}})},stopFetchingChats:function(e){(0,e.commit)("setChatListFetcher",{fetcher:void 0})},fetchChats:function(e){var t=e.dispatch,n=e.rootState;e.commit;return n.api.backendInteractor.chats().then((function(e){var n=e.chats;return t("addNewChats",{chats:n}),n}))},addNewChats:function(e,t){var n=t.chats;(0,e.commit)("addNewChats",{dispatch:e.dispatch,chats:n,rootGetters:e.rootGetters,newChatMessageSideEffects:function(t){Qe(e,t)}})},updateChat:function(e,t){(0,e.commit)("updateChat",{chat:t.chat})},startFetchingCurrentChat:function(e,t){e.commit;(0,e.dispatch)("setCurrentChatFetcher",{fetcher:t.fetcher})},setCurrentChatFetcher:function(e,t){e.rootState;(0,e.commit)("setCurrentChatFetcher",{fetcher:t.fetcher})},addOpenedChat:function(e,t){e.rootState;var n=e.commit,r=e.dispatch,i=t.chat;n("addOpenedChat",{dispatch:r,chat:Object(zt.b)(i)}),r("addNewUsers",[i.account])},addChatMessages:function(e,t){var n=e.commit;n("addChatMessages",Ut({commit:n},t))},resetChatNewMessageCount:function(e,t){(0,e.commit)("resetChatNewMessageCount",t)},clearCurrentChat:function(e,t){e.rootState;var n=e.commit;e.dispatch;n("setCurrentChatId",{chatId:void 0}),n("setCurrentChatFetcher",{fetcher:void 0})},readChat:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch,o=t.id,s=t.lastReadId,a=n.chats.lastReadMessageId!==s;i("resetChatNewMessageCount"),r("readChat",{id:o,lastReadId:s}),a&&n.api.backendInteractor.readChat({id:o,lastReadId:s})},deleteChatMessage:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.deleteChatMessage(t),r("deleteChatMessage",Ut({commit:r},t))},resetChats:function(e){var t=e.commit;(0,e.dispatch)("clearCurrentChat"),t("resetChats",{commit:t})},clearOpenedChats:function(e){e.rootState;var t=e.commit;e.dispatch,e.rootGetters;t("clearOpenedChats",{commit:t})},handleMessageError:function(e,t){var n=e.commit;n("handleMessageError",Ut({commit:n},t))},cullOlderMessages:function(e,t){(0,e.commit)("cullOlderMessages",t)}},mutations:{setChatListFetcher:function(e,t){t.commit;var n=t.fetcher,r=e.chatListFetcher;r&&r.stop(),e.chatListFetcher=n&&n()},setCurrentChatFetcher:function(e,t){var n=t.fetcher,r=e.fetcher;r&&r.stop(),e.fetcher=n&&n()},addOpenedChat:function(e,t){t._dispatch;var n=t.chat;e.currentChatId=n.id,e.openedChats[n.id]=n,e.openedChatMessageServices[n.id]||(e.openedChatMessageServices[n.id]=$t.empty(n.id))},setCurrentChatId:function(e,t){var n=t.chatId;e.currentChatId=n},addNewChats:function(e,t){var n=t.chats,r=t.newChatMessageSideEffects;n.forEach((function(t){var n=Et(e,t.id);if(n){var i=(n.lastMessage&&n.lastMessage.id)!==(t.lastMessage&&t.lastMessage.id);n.lastMessage=t.lastMessage,n.unread=t.unread,n.updated_at=t.updated_at,i&&n.unread&&r(t)}else e.chatList.data.push(t),e.chatList.idStore[t.id]=t}))},updateChat:function(e,t){t._dispatch;var n=t.chat,r=(t._rootGetters,Et(e,n.id));r&&(r.lastMessage=n.lastMessage,r.unread=n.unread,r.updated_at=n.updated_at),r||e.chatList.data.unshift(n),e.chatList.idStore[n.id]=n},deleteChat:function(e,t){t._dispatch;var n=t.id;t._rootGetters;e.chats.data=e.chats.data.filter((function(e){return e.last_status.id!==n})),e.chats.idStore=_()(e.chats.idStore,(function(e){return e.last_status.id===n}))},resetChats:function(e,t){var n=t.commit;for(var r in e.chatList={data:[],idStore:{}},e.currentChatId=null,n("setChatListFetcher",{fetcher:void 0}),e.openedChats)$t.clear(e.openedChatMessageServices[r]),delete e.openedChats[r],delete e.openedChatMessageServices[r]},setChatsLoading:function(e,t){var n=t.value;e.chats.loading=n},addChatMessages:function(e,t){var n=t.chatId,r=t.messages,i=t.updateMaxId,o=e.openedChatMessageServices[n];o&&$t.add(o,{messages:r.map(zt.c),updateMaxId:i})},deleteChatMessage:function(e,t){var n=t.chatId,r=t.messageId,i=e.openedChatMessageServices[n];i&&$t.deleteMessage(i,r)},resetChatNewMessageCount:function(e,t){var n=e.openedChatMessageServices[e.currentChatId];$t.resetNewMessageCount(n)},clearOpenedChats:function(e){var t=e.currentChatId;for(var n in e.openedChats)t!==n&&($t.clear(e.openedChatMessageServices[n]),delete e.openedChats[n],delete e.openedChatMessageServices[n])},readChat:function(e,t){var n=t.id,r=t.lastReadId;e.lastReadMessageId=r;var i=Et(e,n);i&&(i.unread=0)},handleMessageError:function(e,t){var n=t.chatId,r=t.fakeId,i=t.isRetry,o=e.openedChatMessageServices[n];$t.handleMessageError(o,r,i)},cullOlderMessages:function(e,t){$t.cullOlderMessages(e.openedChatMessageServices[t])}}},Rt=n(335),At=n(135),Nt=n.n(At),Bt=n(39),Vt=n.n(Bt),Ht=n(16),qt=n.n(Ht),Jt=n(323),Wt=n.n(Jt),Yt=n(324),Gt=!1,Kt=function(e,t){return 0===t.length?e:t.reduce((function(t,n){return Vt()(t,n,qt()(e,n)),t}),{})},Xt=["markNotificationsAsSeen","clearCurrentUser","setCurrentUser","setHighlight","setOption","setClientData","setToken","clearToken"],Zt=n.n(Yt).a;function Qt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.key,n=void 0===t?"vuex-lz":t,r=e.paths,i=void 0===r?[]:r,o=e.getState,s=void 0===o?function(e,t){return t.getItem(e)}:o,a=e.setState,c=void 0===a?function(e,t,n){return Gt?n.setItem(e,t):(console.log("waiting for old state to be loaded..."),Promise.resolve())}:a,l=e.reducer,u=void 0===l?Kt:l,d=e.storage,p=void 0===d?Zt:d,h=e.subscriber,b=void 0===h?function(e){return function(t){return e.subscribe(t)}}:h;return s(n,p).then((function(e){return function(t){try{if(null!==e&&"object"===_t()(e)){var r=e.users||{};r.usersObject={};var o=r.users||[];B()(o,(function(e){r.usersObject[e.id]=e})),e.users=r,t.replaceState(Wt()({},t.state,e))}Gt=!0}catch(e){console.log("Couldn't load state"),console.error(e),Gt=!0}b(t)((function(e,r){try{Xt.includes(e.type)&&c(n,u(Nt()(r),i),p).then((function(n){void 0!==n&&("setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{success:n}))}),(function(n){"setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{error:n})}))}catch(e){console.log("Couldn't persist state:"),console.log(e)}}))}}))}var en=function(e){e.subscribe((function(t,n){var r=n.instance.vapidPublicKey,i=n.config.webPushNotifications,o="granted"===n.interface.notificationPermission,s=n.users.currentUser,a="setCurrentUser"===t.type,c="setInstanceOption"===t.type&&"vapidPublicKey"===t.payload.name,l="setNotificationPermission"===t.type&&"granted"===t.payload,u="setOption"===t.type&&"webPushNotifications"===t.payload.name,d="setOption"===t.type&&"notificationVisibility"===t.payload.name;if(a||c||l||u||d){if(s&&r&&o&&i)return e.dispatch("registerPushNotifications");if(u&&!i)return e.dispatch("unregisterPushNotifications")}}))},tn=n(70),nn=n(171),rn=n(325),on=n.n(rn),sn=n(68);const an=Object(wt.k)("div",{id:"app_bg_wrapper",class:"app-bg-wrapper"},null,-1),cn=Object(wt.k)("div",{class:"underlay"},null,-1),ln=Object(wt.k)("div",{id:"notifs-sidebar"},null,-1),un={key:0,class:"login-hint panel panel-default"},dn=Object(wt.k)("div",{id:"modal"},null,-1);const pn={class:"user-panel"},hn={key:"user-panel-signed",class:"panel panel-default signed-in"};const bn={class:"login panel panel-default"},mn={class:"panel-heading"},fn={class:"panel-body"},On={class:"form-group"},jn={for:"username"},gn=["disabled","placeholder"],vn={class:"form-group"},yn={for:"password"},wn=["disabled"],kn={class:"form-group"},_n={key:1,class:"form-group"},Sn={class:"form-group"},Cn={class:"login-bottom"},Pn=["disabled"],xn={key:0,class:"form-group"},Dn={class:"alert error"};var Tn=n(6),In=n(3);function $n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$n(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$n(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Mn={data:function(){return{user:{},error:!1}},computed:zn(zn({isPasswordAuth:function(){return this.requiredPassword},isTokenAuth:function(){return this.requiredToken}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},instance:function(e){return e.instance},loggingIn:function(e){return e.users.loggingIn},oauth:function(e){return e.oauth}})),Object(a.c)("authFlow",["requiredPassword","requiredToken","requiredMFA"])),methods:zn(zn(zn({},Object(a.d)("authFlow",["requireMFA"])),Object(a.b)({login:"authFlow/login"})),{},{submit:function(){this.isTokenAuth?this.submitToken():this.submitPassword()},submitToken:function(){var e=this.oauth,t={clientId:e.clientId,clientSecret:e.clientSecret,instance:this.instance.server,commit:this.$store.commit};ze.getOrCreateApp(t).then((function(e){ze.login(zn(zn({},e),t))}))},submitPassword:function(){var e=this,t={clientId:this.oauth.clientId,oauth:this.oauth,instance:this.instance.server,commit:this.$store.commit};this.error=!1,ze.getOrCreateApp(t).then((function(n){ze.getTokenWithCredentials(zn(zn({},n),{},{instance:t.instance,username:e.user.username,password:e.user.password})).then((function(t){t.error?"mfa_required"===t.error?e.requireMFA({settings:t}):"password_reset_required"===t.identifier?e.$router.push({name:"password-reset",params:{passwordResetRequested:!0}}):(e.error=t.error,e.focusOnPasswordInput()):e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}))},clearError:function(){this.error=!1},focusOnPasswordInput:function(){var e=this.$refs.passwordInput;e.focus(),e.setSelectionRange(0,e.value.length)}})},Un=(n(498),n(4)),Fn=n.n(Un);var En=Fn()(Mn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",bn,[Object(wt.k)("div",mn,Object(wt.O)(e.$t("login.login")),1),Object(wt.k)("div",fn,[Object(wt.k)("form",{class:"login-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[e.isPasswordAuth?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("div",On,[Object(wt.k)("label",jn,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.username=t),disabled:e.loggingIn,class:"form-control",placeholder:e.$t("login.placeholder")},null,8,gn),[[wt.S,e.user.username]])]),Object(wt.k)("div",vn,[Object(wt.k)("label",yn,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"password",ref:"passwordInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.user.password=t),disabled:e.loggingIn,class:"form-control",type:"password"},null,8,wn),[[wt.S,e.user.password]])]),Object(wt.k)("div",kn,[Object(wt.m)(s,{to:{name:"password-reset"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.forgot_password")),1)]),_:1})])],64)):Object(wt.i)("",!0),e.isTokenAuth?(Object(wt.D)(),Object(wt.j)("div",_n,[Object(wt.k)("p",null,Object(wt.O)(e.$t("login.description")),1)])):Object(wt.i)("",!0),Object(wt.k)("div",Sn,[Object(wt.k)("div",Cn,[Object(wt.k)("div",null,[e.registrationOpen?(Object(wt.D)(),Object(wt.h)(s,{key:0,to:{name:"registration"},class:"register"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.register")),1)]),_:1})):Object(wt.i)("",!0)]),Object(wt.k)("button",{disabled:e.loggingIn,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("login.login")),9,Pn)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",xn,[Object(wt.k)("div",Dn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const Ln={class:"login panel panel-default"},Rn={class:"panel-heading"},An={class:"panel-body"},Nn={class:"form-group"},Bn={for:"code"},Vn={class:"form-group"},Hn={class:"login-bottom"},qn=Object(wt.k)("br",null,null,-1),Jn={type:"submit",class:"btn button-default"},Wn={key:0,class:"form-group"},Yn={class:"alert error"};var Gn={verifyOTPCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","totp"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","recovery"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))}};function Kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Kn(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Zn={data:function(){return{code:null,error:!1}},computed:Xn(Xn({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:Xn(Xn(Xn({},Object(a.d)("authFlow",["requireTOTP","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyRecoveryCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var Qn=Fn()(Zn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ln,[Object(wt.k)("div",Rn,Object(wt.O)(e.$t("login.heading.recovery")),1),Object(wt.k)("div",An,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Nn,[Object(wt.k)("label",Bn,Object(wt.O)(e.$t("login.recovery_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",Vn,[Object(wt.k)("div",Hn,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireTOTP&&e.requireTOTP(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_two_factor_code")),1),qn,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",Jn,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",Wn,[Object(wt.k)("div",Yn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const er={class:"login panel panel-default"},tr={class:"panel-heading"},nr={class:"panel-body"},rr={class:"form-group"},ir={for:"code"},or={class:"form-group"},sr={class:"login-bottom"},ar=Object(wt.k)("br",null,null,-1),cr={type:"submit",class:"btn button-default"},lr={key:0,class:"form-group"},ur={class:"alert error"};function dr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var hr={data:function(){return{code:null,error:!1}},computed:pr(pr({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:pr(pr(pr({},Object(a.d)("authFlow",["requireRecovery","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyOTPCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var br=Fn()(hr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",er,[Object(wt.k)("div",tr,Object(wt.O)(e.$t("login.heading.totp")),1),Object(wt.k)("div",nr,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",rr,[Object(wt.k)("label",ir,Object(wt.O)(e.$t("login.authentication_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",or,[Object(wt.k)("div",sr,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireRecovery&&e.requireRecovery(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_recovery_code")),1),ar,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",cr,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",lr,[Object(wt.k)("div",ur,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{size:"lg",class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);function mr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var fr={name:"AuthForm",render:function(){return Object(wt.q)(Object(wt.J)(this.authForm))},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({authForm:function(){return this.requiredTOTP?"MFATOTPForm":this.requiredRecovery?"MFARecoveryForm":"LoginForm"}},Object(a.c)("authFlow",["requiredTOTP","requiredRecovery"])),components:{MFARecoveryForm:Qn,MFATOTPForm:br,LoginForm:En}},Or=n(57),jr=n(35);function gr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var vr={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({signedIn:function(){return this.user}},Object(a.e)({user:function(e){return e.users.currentUser}})),components:{AuthForm:fr,PostStatusForm:Or.a,UserCard:jr.a}};n(531);var yr=Fn()(vr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("PostStatusForm"),c=Object(wt.J)("auth-form");return Object(wt.D)(),Object(wt.j)("div",pn,[e.signedIn?(Object(wt.D)(),Object(wt.j)("div",hn,[Object(wt.m)(s,{"user-id":e.user.id,"hide-bio":!0,rounded:"top"},null,8,["user-id"]),Object(wt.m)(a)])):(Object(wt.D)(),Object(wt.h)(c,{key:"user-panel"}))])}]]);const wr={class:"NavPanel"},kr={class:"panel panel-default"},_r={key:0},Sr={class:"timelines-background"},Cr={key:1},Pr={key:2},xr={key:0,class:"badge badge-notification"},Dr={key:3},Tr={key:0,class:"badge badge-notification"};const Ir={key:0},$r={key:1},zr={key:2},Mr={key:3},Ur={key:4};function Fr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.wb,In.I,In.j,In.y,In.J);var Er={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(a.e)({currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}}))};var Lr=Fn()(Er,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("ul",null,[e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ir,[Object(wt.m)(a,{class:"menu-item",to:{name:"friends"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(Object(wt.O)(e.$t("nav.home_timeline")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",$r,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"users"}),Object(wt.l)(Object(wt.O)(e.$t("nav.public_tl")),1)]),_:1})])):Object(wt.i)("",!0),!e.federating||!e.currentUser&&e.privateMode?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",zr,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-external-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"globe"}),Object(wt.l)(Object(wt.O)(e.$t("nav.twkn")),1)]),_:1})])),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Mr,[Object(wt.m)(a,{class:"menu-item",to:{name:"bookmarks"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bookmark"}),Object(wt.l)(Object(wt.O)(e.$t("nav.bookmarks")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ur,[Object(wt.m)(a,{class:"menu-item",to:{name:"dms",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"envelope"}),Object(wt.l)(Object(wt.O)(e.$t("nav.dms")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0)])}]]);function Rr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.wb,In.I,In.j,In.y,In.n,In.q,In.t,In.i,In.M,In.mb);var Nr={created:function(){this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{TimelineMenuContent:Lr},data:function(){return{showTimelines:!1}},methods:{toggleTimelines:function(){this.showTimelines=!this.showTimelines}},computed:Ar(Ar({},Object(a.e)({currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"]))};n(532);var Br=Fn()(Nr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("TimelineMenuContent"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",wr,[Object(wt.k)("div",kr,[Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",_r,[Object(wt.k)("button",{class:"button-unstyled menu-item",onClick:t[0]||(t[0]=(...t)=>e.toggleTimelines&&e.toggleTimelines(...t))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"stream"}),Object(wt.l)(Object(wt.O)(e.$t("nav.timelines"))+" ",1),Object(wt.m)(s,{class:"timelines-chevron","fixed-width":"",icon:e.showTimelines?"chevron-up":"chevron-down"},null,8,["icon"])]),Object(wt.W)(Object(wt.k)("div",Sr,[Object(wt.m)(a,{class:"timelines"})],512),[[wt.T,e.showTimelines]])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Cr,[Object(wt.m)(c,{class:"menu-item",to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"bell"}),Object(wt.l)(Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",Pr,[Object(wt.m)(c,{class:"menu-item",to:{name:"chats",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",xr,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0),Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"comments"}),Object(wt.l)(Object(wt.O)(e.$t("nav.chats")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",Dr,[Object(wt.m)(c,{class:"menu-item",to:{name:"friend-requests"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"user-plus"}),Object(wt.l)(Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Tr,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",null,[Object(wt.m)(c,{class:"menu-item",to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"info-circle"}),Object(wt.l)(Object(wt.O)(e.$t("nav.about")),1)]),_:1})])])])])}]]);const Vr={class:"instance-specific-panel"},Hr={class:"panel panel-default"},qr={class:"panel-body"},Jr=["innerHTML"];var Wr={computed:{instanceSpecificPanelContent:function(){return this.$store.state.instance.instanceSpecificPanelContent}}};var Yr=Fn()(Wr,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Vr,[Object(wt.k)("div",Hr,[Object(wt.k)("div",qr,[Object(wt.k)("div",{innerHTML:e.instanceSpecificPanelContent},null,8,Jr)])])])}]]);const Gr={class:"features-panel"},Kr={class:"panel panel-default base01-background"},Xr={class:"panel-heading timeline-heading base02-background base04"},Zr={class:"title"},Qr={class:"panel-body features-panel"},ei={key:0},ti={key:1},ni={key:2},ri={key:3},ii={key:4};var oi=n(96),si={computed:{shout:function(){return this.$store.state.instance.shoutAvailable},pleromaChatMessages:function(){return this.$store.state.instance.pleromaChatMessagesAvailable},gopher:function(){return this.$store.state.instance.gopherAvailable},whoToFollow:function(){return this.$store.state.instance.suggestionsEnabled},mediaProxy:function(){return this.$store.state.instance.mediaProxyAvailable},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},textlimit:function(){return this.$store.state.instance.textlimit},uploadlimit:function(){return oi.a.fileSizeFormat(this.$store.state.instance.uploadlimit)}}};n(533);var ai=Fn()(si,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Gr,[Object(wt.k)("div",Kr,[Object(wt.k)("div",Xr,[Object(wt.k)("div",Zr,Object(wt.O)(e.$t("features_panel.title")),1)]),Object(wt.k)("div",Qr,[Object(wt.k)("ul",null,[e.shout?(Object(wt.D)(),Object(wt.j)("li",ei,Object(wt.O)(e.$t("features_panel.shout")),1)):Object(wt.i)("",!0),e.pleromaChatMessages?(Object(wt.D)(),Object(wt.j)("li",ti,Object(wt.O)(e.$t("features_panel.pleroma_chat_messages")),1)):Object(wt.i)("",!0),e.gopher?(Object(wt.D)(),Object(wt.j)("li",ni,Object(wt.O)(e.$t("features_panel.gopher")),1)):Object(wt.i)("",!0),e.whoToFollow?(Object(wt.D)(),Object(wt.j)("li",ri,Object(wt.O)(e.$t("features_panel.who_to_follow")),1)):Object(wt.i)("",!0),e.mediaProxy?(Object(wt.D)(),Object(wt.j)("li",ii,Object(wt.O)(e.$t("features_panel.media_proxy")),1)):Object(wt.i)("",!0),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.scope_options")),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.text_limit"))+" = "+Object(wt.O)(e.textlimit),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.upload_limit"))+" = "+Object(wt.O)(e.uploadlimit.num)+" "+Object(wt.O)(e.$t("upload.file_size_units."+e.uploadlimit.unit)),1)])])])])}]]);const ci={class:"who-to-follow-panel"},li={class:"panel panel-default base01-background"},ui={class:"panel-heading timeline-heading base02-background base04"},di={class:"title"},pi={class:"who-to-follow"},hi=["src"],bi=Object(wt.k)("br",null,null,-1),mi={class:"who-to-follow-more"};var fi=n(330),Oi=n.n(fi),ji=n(23);function gi(e){var t=e.$store.state.users.currentUser.credentials;t&&(e.usersToFollow.forEach((function(e){e.name="Loading..."})),j.c.suggestions({credentials:t}).then((function(t){!function(e,t){var n=this,r=Oi()(t);e.usersToFollow.forEach((function(t,i){var o=r[i],s=o.avatar||n.$store.state.instance.defaultAvatar,a=o.acct;t.img=s,t.name=a,e.$store.state.api.backendInteractor.fetchUser({id:a}).then((function(n){n.error||(e.$store.commit("addNewUsers",[n]),t.id=n.id)}))}))}(e,t)})))}var vi={data:function(){return{usersToFollow:[]}},computed:{user:function(){return this.$store.state.users.currentUser.screen_name},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled}},methods:{userProfileLink:function(e,t){return Object(ji.a)(e,t,this.$store.state.instance.restrictedNicknames)}},watch:{user:function(e,t){this.suggestionsEnabled&&gi(this)}},mounted:function(){var e=this;this.usersToFollow=new Array(3).fill().map((function(t){return{img:e.$store.state.instance.defaultAvatar,name:"",id:0}})),this.suggestionsEnabled&&gi(this)}};n(537);var yi=Fn()(vi,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",ci,[Object(wt.k)("div",li,[Object(wt.k)("div",ui,[Object(wt.k)("div",di,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1)]),Object(wt.k)("div",pi,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.usersToFollow,t=>(Object(wt.D)(),Object(wt.j)("p",{key:t.id,class:"who-to-follow-items"},[Object(wt.k)("img",{src:t.img},null,8,hi),Object(wt.m)(s,{to:e.userProfileLink(t.id,t.name)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.name),1)]),_:2},1032,["to"]),bi]))),128)),Object(wt.k)("p",mi,[Object(wt.m)(s,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("who_to_follow.more")),1)]),_:1})])])])])}]]);const wi={key:0,class:"shout-panel"},ki={class:"panel panel-default"},_i={class:"title"},Si={class:"shout-window"},Ci={class:"shout-avatar"},Pi=["src"],xi={class:"shout-content"},Di=Object(wt.k)("br",null,null,-1),Ti={class:"shout-text"},Ii={class:"shout-input"},$i={key:1,class:"shout-panel"},zi={class:"panel panel-default"},Mi={class:"title"};Tn.c.add(In.l,In.rb);var Ui={props:["floating"],data:function(){return{currentMessage:"",channel:null,collapsed:!0}},computed:{messages:function(){return this.$store.state.shout.messages}},methods:{submit:function(e){this.$store.state.shout.channel.push("new_msg",{text:e},1e4),this.currentMessage=""},togglePanel:function(){this.collapsed=!this.collapsed},userProfileLink:function(e){return Object(ji.a)(e.id,e.username,this.$store.state.instance.restrictedNicknames)}},watch:{messages:function(e){var t=this.$el.querySelector(".chat-window");t&&t.scrollTop+t.offsetHeight+20>t.scrollHeight&&this.$nextTick((function(){t&&(t.scrollTop=t.scrollHeight-t.offsetHeight)}))}}};n(538);var Fi=Fn()(Ui,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return e.collapsed&&e.floating?(Object(wt.D)(),Object(wt.j)("div",$i,[Object(wt.k)("div",zi,[Object(wt.k)("div",{class:"panel-heading -stub timeline-heading shout-heading",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",Mi,[Object(wt.m)(s,{class:"icon",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)])])])])):(Object(wt.D)(),Object(wt.j)("div",wi,[Object(wt.k)("div",ki,[Object(wt.k)("div",{class:Object(wt.w)(["panel-heading timeline-heading",{"shout-heading":e.floating}]),onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",_i,[Object(wt.l)(Object(wt.O)(e.$t("shoutbox.title"))+" ",1),e.floating?(Object(wt.D)(),Object(wt.h)(s,{key:0,icon:"times",class:"close-icon"})):Object(wt.i)("",!0)])],2),Object(wt.k)("div",Si,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.messages,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"shout-message"},[Object(wt.k)("span",Ci,[Object(wt.k)("img",{src:t.author.avatar},null,8,Pi)]),Object(wt.k)("div",xi,[Object(wt.m)(a,{class:"shout-name",to:e.userProfileLink(t.author)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.author.username),1)]),_:2},1032,["to"]),Di,Object(wt.k)("span",Ti,Object(wt.O)(t.text),1)])]))),128))]),Object(wt.k)("div",Ii,[Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.currentMessage=t),class:"shout-input-textarea",rows:"1",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.submit(e.currentMessage),["enter"]))},null,544),[[wt.S,e.currentMessage]])])])]))}]]);const Ei={class:"settings-modal-panel panel"},Li={class:"panel-heading"},Ri={class:"title"},Ai=["title"],Ni=["title"],Bi={class:"panel-body"},Vi={class:"panel-footer settings-footer"},Hi=["title"],qi=Object(wt.l)(" "+Object(wt.O)(" ")+" "),Ji={class:"dropdown-menu"},Wi=["onClick"],Yi=["onClick"],Gi=["onClick"],Ki=Object(wt.k)("span",{id:"unscrolled-content",class:"extra-content"},null,-1);var Xi={props:{isOpen:{type:Boolean,default:!0},noBackground:{type:Boolean,default:!1}},computed:{classes:function(){return{"modal-background":!this.noBackground,open:this.isOpen}}}};n(539);var Zi=Fn()(Xi,[["render",function(e,t,n,r,i,o){const s=Object(wt.K)("body-scroll-lock");return Object(wt.W)((Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["modal-view",o.classes]),onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.$emit("backdropClicked"),["self"]))},[Object(wt.I)(e.$slots,"default")],2)),[[wt.T,n.isOpen],[s,n.isOpen&&!n.noBackground]])}]]);const Qi={class:"panel-loading"},eo={class:"loading-text"};Tn.c.add(In.r);var to={};n(540);var no=Fn()(to,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Qi,[Object(wt.k)("span",eo,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"3x"}),Object(wt.l)(" "+Object(wt.O)(e.$t("general.loading")),1)])])}]]);const ro={class:"async-component-error"};var io={emits:["resetAsyncComponent"],methods:{retry:function(){this.$emit("resetAsyncComponent")}}};n(541);var oo=Fn()(io,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",ro,[Object(wt.k)("div",null,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.generic_error")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("general.error_retry")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...e)=>o.retry&&o.retry(...e))},Object(wt.O)(e.$t("general.retry")),1)])])}]]);function so(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var ao=function(e,t){var n=function(){return function(){return Object(wt.n)(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?so(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):so(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({loader:e},t))}},r=Object(wt.M)({c:n()});return{render:function(){return Object(wt.q)(r.c(),{onResetAsyncComponent:function(){r.c=n()}})}}},co=n(24),lo=n(51),uo=n(138),po=n(41);function ho(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function bo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ho(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ho(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,po.e,In.F,In.E,In.n);var mo={data:function(){var e=this;return{dataImporter:Object(uo.b)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),dataThemeExporter:Object(uo.a)({filename:"pleromafe_settings.full",getExportedObject:function(){return e.generateExport(!0)}}),dataExporter:Object(uo.a)({filename:"pleromafe_settings",getExportedObject:function(){return e.generateExport()}})}},components:{Modal:Zi,Popover:co.default,Checkbox:lo.a,SettingsModalContent:ao((function(){return Promise.all([n.e(3),n.e(2)]).then(n.bind(null,708))}),{loadingComponent:no,errorComponent:oo,delay:0})},methods:{closeModal:function(){this.$store.dispatch("closeSettingsModal")},peekModal:function(){this.$store.dispatch("togglePeekSettingsModal")},importValidator:function(e){if(!Array.isArray(e._pleroma_settings_version))return{messageKey:"settings.file_import_export.invalid_file"};var t=m()(e._pleroma_settings_version,2),n=t[0],r=t[1];return n>1?{messageKey:"settings.file_export_import.errors.file_too_new",messageArgs:{fileMajor:n,feMajor:1}}:n<1?{messageKey:"settings.file_export_import.errors.file_too_old",messageArgs:{fileMajor:n,feMajor:1}}:(r>0&&this.$store.dispatch("pushGlobalNotice",{level:"warning",messageKey:"settings.file_export_import.errors.file_slightly_new"}),!0)},onImportFailure:function(e){e.error?this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_settings_imported",level:"error"}):this.$store.dispatch("pushGlobalNotice",bo(bo({},e.validationResult),{},{level:"error"}))},onImport:function(e){e&&this.$store.dispatch("loadSettings",e)},restore:function(){this.dataImporter.importData()},backup:function(){this.dataExporter.exportData()},backupWithTheme:function(){this.dataThemeExporter.exportData()},generateExport:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$store.state.config,n=t;if(!e){var r=new Set(["customTheme","customThemeSource","colors"]);n=Object.fromEntries(Object.entries(n).filter((function(e){var t=m()(e,1)[0];return!r.has(t)})))}var i=Nt()(n);return i._pleroma_settings_version=[1,0],i}},computed:{currentSaveStateNotice:function(){return this.$store.state.interface.settings.currentSaveStateNotice},modalActivated:function(){return"hidden"!==this.$store.state.interface.settingsModalState},modalOpenedOnce:function(){return this.$store.state.interface.settingsModalLoaded},modalPeeked:function(){return"minimized"===this.$store.state.interface.settingsModalState},expertLevel:{get:function(){return this.$store.state.config.expertLevel>0},set:function(e){console.log(e),this.$store.dispatch("setOption",{name:"expertLevel",value:e?1:0})}}}};n(542);var fo=Fn()(mo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("SettingsModalContent"),c=Object(wt.J)("Popover"),l=Object(wt.J)("Checkbox"),u=Object(wt.J)("Modal");return Object(wt.D)(),Object(wt.h)(u,{"is-open":e.modalActivated,class:Object(wt.w)(["settings-modal",{peek:e.modalPeeked}]),"no-background":e.modalPeeked},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ei,[Object(wt.k)("div",Li,[Object(wt.k)("span",Ri,Object(wt.O)(e.$t("settings.settings")),1),Object(wt.m)(wt.e,{name:"fade"},{default:Object(wt.V)(()=>[e.currentSaveStateNotice?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["alert",{transparent:!e.currentSaveStateNotice.error,error:e.currentSaveStateNotice.error}]),onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.currentSaveStateNotice.error?e.$t("settings.saving_err"):e.$t("settings.saving_ok")),3)):Object(wt.i)("",!0)]),_:1}),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.peek"),onClick:t[1]||(t[1]=(...t)=>e.peekModal&&e.peekModal(...t))},[Object(wt.m)(s,{icon:["far","window-minimize"],"fixed-width":""})],8,Ai),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close"),onClick:t[2]||(t[2]=(...t)=>e.closeModal&&e.closeModal(...t))},[Object(wt.m)(s,{icon:"times","fixed-width":""})],8,Ni)]),Object(wt.k)("div",Bi,[e.modalOpenedOnce?(Object(wt.D)(),Object(wt.h)(a,{key:0})):Object(wt.i)("",!0)]),Object(wt.k)("div",Vi,[Object(wt.m)(c,{class:"export",trigger:"click",placement:"top",offset:{y:5,x:5},"bound-to":{x:"container"},"remove-padding":""},{trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close")},[Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_restore")),1),qi,Object(wt.m)(s,{icon:"chevron-down"})],8,Hi)]),content:Object(wt.V)(({close:n})=>[Object(wt.k)("div",Ji,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(wt.Y)((...t)=>e.backup&&e.backup(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings")),1)],8,Wi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(wt.Y)((...t)=>e.backupWithTheme&&e.backupWithTheme(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings_theme")),1)],8,Yi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(wt.Y)((...t)=>e.restore&&e.restore(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-upload","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.restore_settings")),1)],8,Gi)])]),_:1}),Object(wt.m)(l,{"model-value":!!e.expertLevel,"onUpdate:modelValue":t[6]||(t[6]=t=>e.expertLevel=Number(t))},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("settings.expert_mode")),1)]),_:1},8,["model-value"]),Ki])])]),_:1},8,["is-open","class","no-background"])}]]);const Oo=["src","alt","title"],jo=["src","alt","title"],go=["title"],vo=["title"],yo=["title"],wo={key:6,class:"description"},ko={class:"counter"},_o={key:7,class:"loading-spinner"};var So=n(50),Co=n(141);var Po=n(337),xo={methods:{setTransform:function(e){var t=e.scale,n=e.x,r=e.y;this.$el.setTransform({scale:t,x:n,y:r})}},created:function(){Po.a}};var Do=Fn()(xo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("pinch-zoom");return Object(wt.D)(),Object(wt.h)(s,Object(wt.u)({class:"pinch-zoom-parent"},e.$attrs,Object(wt.P)(e.$listeners)),{default:Object(wt.V)(()=>[Object(wt.I)(e.$slots,"default")]),_:3},16)}]]);var To=n(129),Io=n.n(To),$o=n(128),zo=n.n($o),Mo=function(e,t){return[t[0]-e[0],t[1]-e[1]]},Uo=function(e){return[(t=e.touches[0]).screenX,t.screenY];var t},Fo=function(e){return[e.clientX,e.clientY]},Eo=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},Lo=function(e){return[e[1],-e[0]]},Ro=function(e,t){return e[0]*t[0]+e[1]*t[1]},Ao=function(e,t){var n=Ro(e,t)/Ro(t,t);return[n*t[0],n*t[1]]},No={DIRECTION_LEFT:[-1,0],DIRECTION_RIGHT:[1,0],DIRECTION_UP:[0,-1],DIRECTION_DOWN:[0,1],swipeGesture:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{direction:e,onSwipe:t,threshold:n,perpendicularTolerance:r,_startPos:[0,0],_swiping:!1}},beginSwipe:function(e,t){t._startPos=Uo(e),t._swiping=!0},updateSwipe:function(e,t){if(t._swiping){var n=Mo(t._startPos,Uo(e));if(!(Eo(n)<t.threshold||Ro(n,t.direction)<0)){var r=Ao(n,t.direction),i=Lo(t.direction),o=Ao(n,i);Eo(r)*t.perpendicularTolerance<Eo(o)||(t.onSwipe(),t._swiping=!1)}}},SwipeAndClickGesture:function(){function e(t){var n=t.direction,r=t.swipePreviewCallback,i=t.swipeEndCallback,o=t.swipeCancelCallback,s=t.swipelessClickCallback,a=t.threshold,c=void 0===a?30:a,l=t.perpendicularTolerance,u=void 0===l?1:l,d=t.disableClickThreshold,p=void 0===d?1:d;Io()(this,e);var h=function(){};this.direction=n,this.swipePreviewCallback=r||h,this.swipeEndCallback=i||h,this.swipeCancelCallback=o||h,this.swipelessClickCallback=s||h,this.threshold="function"==typeof c?c:function(){return c},this.disableClickThreshold="function"==typeof p?p:function(){return p},this.perpendicularTolerance=u,this._reset()}return zo()(e,[{key:"_reset",value:function(){this._startPos=[0,0],this._pointerId=-1,this._swiping=!1,this._swiped=!1,this._preventNextClick=!1}},{key:"start",value:function(e){0===e.button&&(this._startPos=Fo(e),this._pointerId=e.pointerId,this._swiping=!0,this._swiped=!1)}},{key:"move",value:function(e){if(this._swiping&&this._pointerId===e.pointerId){this._swiped=!0;var t=Fo(e),n=Mo(this._startPos,t);this.swipePreviewCallback(n)}}},{key:"cancel",value:function(e){this._swiping&&this._pointerId===e.pointerId&&this.swipeCancelCallback()}},{key:"end",value:function(e){var t=this;if(this._swiping&&this._pointerId===e.pointerId){this._swiping=!1;var n=Fo(e),r=Mo(this._startPos,n),i=function(){if(Eo(r)<t.threshold())return 0;var e=Ro(r,t.direction)>0,n=Ao(r,t.direction),i=Lo(t.direction),o=Ao(r,i);return Eo(n)*t.perpendicularTolerance<Eo(o)?0:e?1:-1}();this._swiped&&this.swipeEndCallback(i),this._reset(),Eo(r)>=this.disableClickThreshold()&&"mouse"===e.pointerType&&(this._preventNextClick=!0)}}},{key:"click",value:function(e){this._preventNextClick||this.swipelessClickCallback(),this._reset()}}]),e}()},Bo={props:{direction:{type:Array},threshold:{type:Function,default:function(){return 30}},perpendicularTolerance:{type:Number,default:1}},methods:{handlePointerDown:function(e){this.$gesture.start(e)},handlePointerMove:function(e){this.$gesture.move(e)},handlePointerUp:function(e){this.$gesture.end(e)},handlePointerCancel:function(e){this.$gesture.cancel(e)},handleNativeClick:function(e){this.$gesture.click(e)},preview:function(e){this.$emit("preview-requested",e)},end:function(e){this.$emit("swipe-finished",e)},click:function(){this.$emit("swipeless-clicked")},cancel:function(){this.$emit("swipe-canceled")}},created:function(){this.$gesture=new No.SwipeAndClickGesture({direction:this.direction,threshold:this.threshold,perpendicularTolerance:this.perpendicularTolerance,swipePreviewCallback:this.preview,swipeEndCallback:this.end,swipeCancelCallback:this.cancel,swipelessClickCallback:this.click})}};var Vo=Fn()(Bo,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Object(wt.u)(e.$attrs,{onPointerdown:t[0]||(t[0]=(...t)=>e.handlePointerDown&&e.handlePointerDown(...t)),onPointermove:t[1]||(t[1]=(...t)=>e.handlePointerMove&&e.handlePointerMove(...t)),onPointerup:t[2]||(t[2]=(...t)=>e.handlePointerUp&&e.handlePointerUp(...t)),onPointercancel:t[3]||(t[3]=(...t)=>e.handlePointerCancel&&e.handlePointerCancel(...t)),onClick:t[4]||(t[4]=(...t)=>e.handleNativeClick&&e.handleNativeClick(...t))}),[Object(wt.I)(e.$slots,"default")],16)}]]),Ho=n(139);Tn.c.add(In.o,In.p,In.r,In.rb);var qo={components:{StillImage:So.a,VideoAttachment:Co.a,PinchZoom:Do,SwipeClick:Vo,Modal:Zi,Flash:Ho.a},data:function(){return{loading:!1,swipeDirection:No.DIRECTION_LEFT,swipeThreshold:function(){return window.innerWidth*(1/4)},pinchZoomMinScale:1,pinchZoomScaleResetLimit:1.2}},computed:{showing:function(){return this.$store.state.mediaViewer.activated},media:function(){return this.$store.state.mediaViewer.media},description:function(){return this.currentMedia.description},currentIndex:function(){return this.$store.state.mediaViewer.currentIndex},currentMedia:function(){return this.media[this.currentIndex]},canNavigate:function(){return this.media.length>1},type:function(){return this.currentMedia?this.getType(this.currentMedia):null}},methods:{getType:function(e){return lt.a.fileType(e.mimetype)},hide:function(){var e=this;setTimeout((function(){e.$store.dispatch("closeMediaViewer")}),100)},hideIfNotSwiped:function(e){var t=this.$refs.swipeClick;t?t.$gesture.click(e):this.hide()},goPrev:function(){if(this.canNavigate){var e=0===this.currentIndex?this.media.length-1:this.currentIndex-1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},goNext:function(){if(this.canNavigate){var e=this.currentIndex===this.media.length-1?0:this.currentIndex+1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},onImageLoaded:function(){this.loading=!1},handleSwipePreview:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:e[0],y:0})},handleSwipeEnd:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:0,y:0}),e>0?this.goNext():e<0&&this.goPrev()},handleKeyupEvent:function(e){this.showing&&27===e.keyCode&&this.hide()},handleKeydownEvent:function(e){this.showing&&(39===e.keyCode?this.goNext():37===e.keyCode&&this.goPrev())}},mounted:function(){window.addEventListener("popstate",this.hide),document.addEventListener("keyup",this.handleKeyupEvent),document.addEventListener("keydown",this.handleKeydownEvent)},unmounted:function(){window.removeEventListener("popstate",this.hide),document.removeEventListener("keyup",this.handleKeyupEvent),document.removeEventListener("keydown",this.handleKeydownEvent)}};n(543);var Jo=Fn()(qo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PinchZoom"),a=Object(wt.J)("SwipeClick"),c=Object(wt.J)("VideoAttachment"),l=Object(wt.J)("Flash"),u=Object(wt.J)("FAIcon"),d=Object(wt.J)("Modal");return e.showing?(Object(wt.D)(),Object(wt.h)(d,{key:0,class:"media-modal-view",onBackdropClicked:e.hideIfNotSwiped},{default:Object(wt.V)(()=>["image"===e.type?(Object(wt.D)(),Object(wt.h)(a,{key:0,ref:"swipeClick",class:"modal-image-container",direction:e.swipeDirection,threshold:e.swipeThreshold,onPreviewRequested:e.handleSwipePreview,onSwipeFinished:e.handleSwipeEnd,onSwipelessClicked:e.hide},{default:Object(wt.V)(()=>[Object(wt.m)(s,{ref:"pinchZoom",class:"modal-image-container-inner",selector:".modal-image","reach-min-scale-strategy":"reset","stop-propagate-handled":"stop-propgate-handled","allow-pan-min-scale":e.pinchZoomMinScale,"min-scale":e.pinchZoomMinScale,"reset-to-min-scale-limit":e.pinchZoomScaleResetLimit},{default:Object(wt.V)(()=>[Object(wt.k)("img",{class:Object(wt.w)([{loading:e.loading},"modal-image"]),src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,onLoad:t[0]||(t[0]=(...t)=>e.onImageLoaded&&e.onImageLoaded(...t))},null,42,Oo)]),_:1},8,["allow-pan-min-scale","min-scale","reset-to-min-scale-limit"])]),_:1},8,["direction","threshold","onPreviewRequested","onSwipeFinished","onSwipelessClicked"])):Object(wt.i)("",!0),"video"===e.type?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"modal-image",attachment:e.currentMedia,controls:!0},null,8,["attachment"])):Object(wt.i)("",!0),"audio"===e.type?(Object(wt.D)(),Object(wt.j)("audio",{key:2,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,controls:""},null,8,jo)):Object(wt.i)("",!0),"flash"===e.type?(Object(wt.D)(),Object(wt.h)(l,{key:3,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description},null,8,["src","alt","title"])):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:4,title:e.$t("media_modal.previous"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.goPrev&&e.goPrev(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-left"})],8,go)):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:5,title:e.$t("media_modal.next"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--next",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.goNext&&e.goNext(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-right"})],8,vo)):Object(wt.i)("",!0),Object(wt.k)("button",{class:"modal-view-button modal-view-button-hide",title:e.$t("media_modal.hide"),onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.hide&&e.hide(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon",icon:"times"})],8,yo),e.description?(Object(wt.D)(),Object(wt.j)("span",wo,Object(wt.O)(e.description),1)):Object(wt.i)("",!0),Object(wt.k)("span",ko,Object(wt.O)(e.$tc("media_modal.counter",e.currentIndex+1,{current:e.currentIndex+1,total:e.media.length})),1),e.loading?(Object(wt.D)(),Object(wt.j)("span",_o,[Object(wt.m)(u,{spin:"",icon:"circle-notch",size:"5x"})])):Object(wt.i)("",!0)]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Wo={key:1,class:"side-drawer-logo-wrapper"},Yo=["src"],Go={key:0},Ko={key:0,class:"badge badge-notification"},Xo={key:0},Zo={key:0,class:"badge badge-notification"},Qo={href:"/pleroma/admin/#/login-pleroma",target:"_blank"};function es(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ts(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?es(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):es(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var ns={props:["logout"],data:function(){return{closed:!0,closeGesture:void 0}},created:function(){this.closeGesture=No.swipeGesture(No.DIRECTION_LEFT,this.toggleDrawer),this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{UserCard:jr.a},computed:ts(ts({currentUser:function(){return this.$store.state.users.currentUser},shout:function(){return this.$store.state.shout.joined},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},logo:function(){return this.$store.state.instance.logo},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},followRequestCount:function(){return this.$store.state.api.followRequests.length},privateMode:function(){return this.$store.state.instance.private},federating:function(){return this.$store.state.instance.federating},timelinesRoute:function(){return this.$store.state.interface.lastTimeline?this.$store.state.interface.lastTimeline:this.currentUser?"friends":"public-timeline"}},Object(a.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"])),methods:{toggleDrawer:function(){this.closed=!this.closed},doLogout:function(){this.logout(),this.toggleDrawer()},touchStart:function(e){No.beginSwipe(e,this.closeGesture)},touchMove:function(e){No.updateSwipe(e,this.closeGesture)},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(544);var rs=Fn()(ns,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["side-drawer-container",{"side-drawer-container-closed":e.closed,"side-drawer-container-open":!e.closed}])},[Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-darken",{"side-drawer-darken-closed":e.closed}])},null,2),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer",{"side-drawer-closed":e.closed}]),onTouchstart:t[15]||(t[15]=(...t)=>e.touchStart&&e.touchStart(...t)),onTouchmove:t[16]||(t[16]=(...t)=>e.touchMove&&e.touchMove(...t))},[Object(wt.k)("div",{class:"side-drawer-heading",onClick:t[0]||(t[0]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[e.currentUser?(Object(wt.D)(),Object(wt.h)(s,{key:0,"user-id":e.currentUser.id,"hide-bio":!0},null,8,["user-id"])):(Object(wt.D)(),Object(wt.j)("div",Wo,[Object(wt.k)("img",{src:e.logo},null,8,Yo),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",Go,Object(wt.O)(e.sitename),1))]))]),Object(wt.k)("ul",null,[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[1]||(t[1]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"login"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-in-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.login")),1)]),_:1})])),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[2]||(t[2]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:e.timelinesRoute}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.timelines")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[3]||(t[3]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"chats",params:{username:e.currentUser.screen_name}},style:{position:"relative"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"comments"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.chats"))+" ",1),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("span",Ko,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0)]),_:1},8,["to"])])):Object(wt.i)("",!0)]),e.currentUser?(Object(wt.D)(),Object(wt.j)("ul",Xo,[Object(wt.k)("li",{onClick:t[4]||(t[4]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bell"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])]),e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[5]||(t[5]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:"/friend-requests"},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Zo,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),e.shout?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[6]||(t[6]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"shout-panel"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)]),_:1})])):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[7]||(t[7]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"search"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.search")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[8]||(t[8]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.who_to_follow")),1)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",{onClick:t[10]||(t[10]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[9]||(t[9]=(...t)=>e.openSettingsModal&&e.openSettingsModal(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"}),Object(wt.l)(" "+Object(wt.O)(e.$t("settings.settings")),1)])]),Object(wt.k)("li",{onClick:t[11]||(t[11]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"info-circle"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.about")),1)]),_:1})]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[12]||(t[12]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("a",Qo,[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.administration")),1)])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",{key:3,onClick:t[14]||(t[14]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[13]||(t[13]=(...t)=>e.doLogout&&e.doLogout(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.logout")),1)])])):Object(wt.i)("",!0)])],34),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-click-outside",{"side-drawer-click-outside-closed":e.closed}]),onClick:t[17]||(t[17]=Object(wt.Y)((...t)=>e.toggleDrawer&&e.toggleDrawer(...t),["stop","prevent"]))},null,2)],2)}]]);var is=n(56),os=n.n(is);Tn.c.add(In.S);var ss=new Set(["chats","chat"]),as={data:function(){return{hidden:!1,scrollingDown:!1,inputActive:!1,oldScrollPos:0,amountScrolled:0}},created:function(){this.autohideFloatingPostButton&&this.activateFloatingPostButtonAutohide(),window.addEventListener("resize",this.handleOSK)},unmounted:function(){this.autohideFloatingPostButton&&this.deactivateFloatingPostButtonAutohide(),window.removeEventListener("resize",this.handleOSK)},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isHidden:function(){return!!ss.has(this.$route.name)||this.autohideFloatingPostButton&&(this.hidden||this.inputActive)},isPersistent:function(){return!!this.$store.getters.mergedConfig.alwaysShowNewPostButton},autohideFloatingPostButton:function(){return!!this.$store.getters.mergedConfig.autohideFloatingPostButton}},watch:{autohideFloatingPostButton:function(e){e?this.activateFloatingPostButtonAutohide():this.deactivateFloatingPostButtonAutohide()}},methods:{activateFloatingPostButtonAutohide:function(){window.addEventListener("scroll",this.handleScrollStart),window.addEventListener("scroll",this.handleScrollEnd)},deactivateFloatingPostButtonAutohide:function(){window.removeEventListener("scroll",this.handleScrollStart),window.removeEventListener("scroll",this.handleScrollEnd)},openPostForm:function(){this.$store.dispatch("openPostStatusModal")},handleOSK:function(){var e=window.innerWidth<350,t=e&&window.innerHeight<345,n=!e&&window.innerWidth<450&&window.innerHeight<560;this.inputActive=!(!t&&!n)},handleScrollStart:os()((function(){window.scrollY>this.oldScrollPos?this.hidden=!0:this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!0,trailing:!1}),handleScrollEnd:os()((function(){this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!1,trailing:!0})}};n(545);var cs=Fn()(as,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return e.isLoggedIn?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:Object(wt.w)(["MobilePostButton button-default new-status-button",{hidden:e.isHidden,"always-show":e.isPersistent}]),onClick:t[0]||(t[0]=(...t)=>e.openPostForm&&e.openPostForm(...t))},[Object(wt.m)(s,{icon:"pen"})],2)):Object(wt.i)("",!0)}]]);const ls={class:"MobileNav"},us={class:"item"},ds={key:0,class:"alert-dot"},ps={class:"item right"},hs={key:0,class:"alert-dot"},bs={class:"mobile-notifications-header"},ms={class:"title"};var fs=n(77);function Os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.rb,In.i,In.h);var js={components:{SideDrawer:rs,Notifications:fs.default},data:function(){return{notificationsCloseGesture:void 0,notificationsOpen:!1}},created:function(){this.notificationsCloseGesture=No.swipeGesture(No.DIRECTION_RIGHT,this.closeMobileNotifications,50)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Os(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Os(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({currentUser:function(){return this.$store.state.users.currentUser},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},isChat:function(){return"chat"===this.$route.name}},Object(a.c)(["unreadChatCount"])),methods:{toggleMobileSidebar:function(){this.$refs.sideDrawer.toggleDrawer()},openMobileNotifications:function(){this.notificationsOpen=!0},closeMobileNotifications:function(){this.notificationsOpen&&(this.notificationsOpen=!1,this.markNotificationsAsSeen())},notificationsTouchStart:function(e){No.beginSwipe(e,this.notificationsCloseGesture)},notificationsTouchMove:function(e){No.updateSwipe(e,this.notificationsCloseGesture)},scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},markNotificationsAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen")},onScroll:function(e){var t=e.target;t.scrollTop+t.clientHeight>=t.scrollHeight&&this.$refs.notifications.fetchOlderNotifications()}},watch:{$route:function(){this.closeMobileNotifications()}}};n(559);var gs=Fn()(js,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link"),c=Object(wt.J)("SideDrawer");return Object(wt.D)(),Object(wt.j)("div",ls,[Object(wt.k)("nav",{id:"nav",class:"mobile-nav",onClick:t[2]||(t[2]=t=>e.scrollToTop())},[Object(wt.k)("div",us,[Object(wt.k)("button",{class:"button-unstyled mobile-nav-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.toggleMobileSidebar(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bars"}),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",ds)):Object(wt.i)("",!0)]),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.k)("div",ps,[e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled mobile-nav-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.openMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bell"}),e.unseenNotificationsCount?(Object(wt.D)(),Object(wt.j)("div",hs)):Object(wt.i)("",!0)])):Object(wt.i)("",!0)])]),e.currentUser?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["mobile-notifications-drawer",{"-closed":!e.notificationsOpen}]),onTouchstart:t[5]||(t[5]=Object(wt.Y)((...t)=>e.notificationsTouchStart&&e.notificationsTouchStart(...t),["stop"])),onTouchmove:t[6]||(t[6]=Object(wt.Y)((...t)=>e.notificationsTouchMove&&e.notificationsTouchMove(...t),["stop"]))},[Object(wt.k)("div",bs,[Object(wt.k)("span",ms,Object(wt.O)(e.$t("notifications.notifications")),1),Object(wt.k)("a",{class:"mobile-nav-button",onClick:t[3]||(t[3]=Object(wt.Y)(t=>e.closeMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])]),Object(wt.k)("div",{class:"mobile-notifications",id:"mobile-notifications",onScroll:t[4]||(t[4]=(...t)=>e.onScroll&&e.onScroll(...t))},null,32)],34)):Object(wt.i)("",!0),Object(wt.m)(c,{ref:"sideDrawer",logout:e.logout},null,8,["logout"])])}]]);const vs={class:"inner-nav"},ys={class:"item sitename"},ws=["src"],ks={class:"item right actions"};const _s=["title"],Ss=["placeholder"];Tn.c.add(In.rb,In.cb);var Cs={data:function(){return{searchTerm:void 0,hidden:!0,error:!1}},watch:{$route:function(e){"search"===e.name&&(this.searchTerm=e.query.query)}},methods:{find:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},toggleHidden:function(){var e=this;this.hidden=!this.hidden,this.$emit("toggled",this.hidden),this.$nextTick((function(){e.hidden||e.$refs.searchInput.focus()}))}}};n(560);var Ps=Fn()(Cs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["SearchBar",{"-expanded":!e.hidden}])},[e.hidden?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled nav-icon",title:e.$t("nav.search"),type:"button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"})],8,_s)):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[Object(wt.W)(Object(wt.k)("input",{id:"search-bar-input",ref:"searchInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.searchTerm=t),class:"search-bar-input",placeholder:e.$t("nav.search"),type:"text",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.find(e.searchTerm),["enter"]))},null,40,Ss),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"button-default search-button",type:"submit",onClick:t[3]||(t[3]=t=>e.find(e.searchTerm))},[Object(wt.m)(s,{"fixed-width":"",icon:"search"})]),Object(wt.k)("button",{class:"button-unstyled cancel-search",type:"button",onClick:t[4]||(t[4]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",icon:"times",class:"cancel-icon fa-scale-110 fa-old-padding"})])],64))],2)}]]);Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var xs={components:{SearchBar:Ps},data:function(){return{searchBarHidden:!0,supportsMask:window.CSS&&window.CSS.supports&&(window.CSS.supports("mask-size","contain")||window.CSS.supports("-webkit-mask-size","contain")||window.CSS.supports("-moz-mask-size","contain")||window.CSS.supports("-ms-mask-size","contain")||window.CSS.supports("-o-mask-size","contain"))}},computed:{enableMask:function(){return this.supportsMask&&this.$store.state.instance.logoMask},logoStyle:function(){return{visibility:this.enableMask?"hidden":"visible"}},logoMaskStyle:function(){return this.enableMask?{"mask-image":"url(".concat(this.$store.state.instance.logo,")")}:{"background-color":this.enableMask?"":"transparent"}},logoBgStyle:function(){return Object.assign({margin:"".concat(this.$store.state.instance.logoMargin," 0"),opacity:this.searchBarHidden?1:0},this.enableMask?{}:{"background-color":this.enableMask?"":"transparent"})},logo:function(){return this.$store.state.instance.logo},sitename:function(){return this.$store.state.instance.name},hideSitename:function(){return this.$store.state.instance.hideSitename},logoLeft:function(){return this.$store.state.instance.logoLeft},currentUser:function(){return this.$store.state.users.currentUser},privateMode:function(){return this.$store.state.instance.private}},methods:{scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},onSearchBarToggled:function(e){this.searchBarHidden=e},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(561);var Ds=Fn()(xs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("search-bar"),c=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("nav",{id:"nav",class:Object(wt.w)(["DesktopNav",{"-logoLeft":e.logoLeft}]),onClick:t[4]||(t[4]=t=>e.scrollToTop())},[Object(wt.k)("div",vs,[Object(wt.k)("div",ys,[e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.m)(s,{class:"logo",to:{name:"root"},style:Object(wt.x)(e.logoBgStyle)},{default:Object(wt.V)(()=>[Object(wt.k)("div",{class:"mask",style:Object(wt.x)(e.logoMaskStyle)},null,4),Object(wt.k)("img",{src:e.logo,style:Object(wt.x)(e.logoStyle)},null,12,ws)]),_:1},8,["style"]),Object(wt.k)("div",ks,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.h)(a,{key:0,onToggled:e.onSearchBarToggled,onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["stop"]))},null,8,["onToggled"])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-unstyled nav-icon",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.openSettingsModal&&e.openSettingsModal(...t),["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog",title:e.$t("nav.preferences")},null,8,["title"])]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("a",{key:1,href:"/pleroma/admin/#/login-pleroma",class:"nav-icon",target:"_blank",onClick:t[2]||(t[2]=Object(wt.Y)(()=>{},["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt",title:e.$t("nav.administration")},null,8,["title"])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled nav-icon",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.logout&&e.logout(...t),["prevent"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt",title:e.$t("login.logout")},null,8,["title"])])):Object(wt.i)("",!0)])])],2)}]]);const Ts={class:"user-reporting-panel panel"},Is={class:"panel-heading"},$s={class:"title"},zs={class:"panel-body"},Ms={class:"user-reporting-panel-left"},Us=["placeholder"],Fs={key:0},Es=["disabled"],Ls={key:0,class:"alert error"},Rs={class:"user-reporting-panel-right"},As={class:"status-fadein user-reporting-panel-sitem"};var Ns=n(34),Bs=n(69);function Vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Hs={components:{Status:Ns.default,List:Bs.a,Checkbox:lo.a,Modal:Zi},data:function(){return{comment:"",forward:!1,statusIdsToReport:[],processing:!1,error:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isOpen:function(){return this.isLoggedIn&&this.$store.state.reports.modalActivated},userId:function(){return this.$store.state.reports.userId},user:function(){return this.$store.getters.findUser(this.userId)},remoteInstance:function(){return!this.user.is_local&&this.user.screen_name.substr(this.user.screen_name.indexOf("@")+1)},statuses:function(){return this.$store.state.reports.statuses},preTickedIds:function(){return this.$store.state.reports.preTickedIds}},watch:{userId:"resetState",preTickedIds:function(e){this.statusIdsToReport=e}},methods:{resetState:function(){this.comment="",this.forward=!1,this.statusIdsToReport=this.preTickedIds,this.processing=!1,this.error=!1},closeModal:function(){this.$store.dispatch("closeUserReportingModal")},reportUser:function(){var e=this;this.processing=!0,this.error=!1;var t={userId:this.userId,comment:this.comment,forward:this.forward,statusIds:this.statusIdsToReport};this.$store.state.api.backendInteractor.reportUser(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vs(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)).then((function(){e.processing=!1,e.resetState(),e.closeModal()})).catch((function(){e.processing=!1,e.error=!0}))},clearError:function(){this.error=!1},isChecked:function(e){return-1!==this.statusIdsToReport.indexOf(e)},toggleStatus:function(e,t){e!==this.isChecked(t)&&(e?this.statusIdsToReport.push(t):this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(t),1))},resize:function(e){var t=e.target||e;t instanceof window.Element&&(t.style.height="auto",t.style.height="".concat(t.scrollHeight,"px"),""===t.value&&(t.style.height=null))}}};n(563);var qs=Fn()(Hs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Checkbox"),a=Object(wt.J)("Status"),c=Object(wt.J)("List"),l=Object(wt.J)("Modal");return e.isOpen?(Object(wt.D)(),Object(wt.h)(l,{key:0,onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ts,[Object(wt.k)("div",Is,[Object(wt.k)("div",$s,Object(wt.O)(e.$t("user_reporting.title",[e.user.screen_name_ui])),1)]),Object(wt.k)("div",zs,[Object(wt.k)("div",Ms,[Object(wt.k)("div",null,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.add_comment_description")),1),Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.comment=t),class:"form-control",placeholder:e.$t("user_reporting.additional_comments"),rows:"1",onInput:t[1]||(t[1]=(...t)=>e.resize&&e.resize(...t))},null,40,Us),[[wt.S,e.comment]])]),e.user.is_local?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Fs,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.forward_description")),1),Object(wt.m)(s,{modelValue:e.forward,"onUpdate:modelValue":t[2]||(t[2]=t=>e.forward=t)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("user_reporting.forward_to",[e.remoteInstance])),1)]),_:1},8,["modelValue"])])),Object(wt.k)("div",null,[Object(wt.k)("button",{class:"btn button-default",disabled:e.processing,onClick:t[3]||(t[3]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(wt.O)(e.$t("user_reporting.submit")),9,Es),e.error?(Object(wt.D)(),Object(wt.j)("div",Ls,Object(wt.O)(e.$t("user_reporting.generic_error")),1)):Object(wt.i)("",!0)])]),Object(wt.k)("div",Rs,[Object(wt.m)(c,{items:e.statuses},{item:Object(wt.V)(({item:t})=>[Object(wt.k)("div",As,[Object(wt.m)(a,{"in-conversation":!1,focused:!1,statusoid:t},null,8,["statusoid"]),Object(wt.m)(s,{"model-value":e.isChecked(t.id),"onUpdate:modelValue":n=>e.toggleStatus(n,t.id)},null,8,["model-value","onUpdate:modelValue"])])]),_:1},8,["items"])])])])]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Js={class:"post-form-modal-panel panel"},Ws={class:"panel-heading"};var Ys={components:{PostStatusForm:Or.a,Modal:Zi},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.postStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.postStatus.params||{}}},watch:{params:function(e,t){var n=this;qt()(e,"repliedUser.id")!==qt()(t,"repliedUser.id")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{closeModal:function(){this.$store.dispatch("closePostStatusModal")}}};n(564);var Gs=Fn()(Ys,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PostStatusForm"),a=Object(wt.J)("Modal");return e.isLoggedIn&&!e.resettingForm?(Object(wt.D)(),Object(wt.h)(a,{key:0,"is-open":e.modalActivated,class:"post-form-modal-view",onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Js,[Object(wt.k)("div",Ws,Object(wt.O)(e.$t("post_status.new_status")),1),Object(wt.m)(s,Object(wt.u)({class:"panel-body"},e.params,{onPosted:e.closeModal}),null,16,["onPosted"])])]),_:1},8,["is-open","onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Ks={class:"global-notice-list"},Xs={class:"notice-message"},Zs=["onClick"];Tn.c.add(In.rb);var Qs={computed:{notices:function(){return this.$store.state.interface.globalNotices}},methods:{closeNotice:function(e){this.$store.dispatch("removeGlobalNotice",e)}}};n(565);var ea=Fn()(Qs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ks,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.notices,(t,n)=>(Object(wt.D)(),Object(wt.j)("div",{key:n,class:Object(wt.w)(["alert global-notice",{["global-"+t.level]:!0}])},[Object(wt.k)("div",Xs,Object(wt.O)(e.$t(t.messageKey,t.messageArgs)),1),Object(wt.k)("button",{class:"button-unstyled close-notice",onClick:n=>e.closeNotice(t)},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,Zs)],2))),128))])}]]);function ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var na={name:"app",components:{UserPanel:yr,NavPanel:Br,Notifications:Object(wt.n)((function(){return Promise.resolve().then(n.bind(null,77))})),InstanceSpecificPanel:Yr,FeaturesPanel:ai,WhoToFollowPanel:yi,ShoutPanel:Fi,MediaModal:Jo,SideDrawer:rs,MobilePostStatusButton:cs,MobileNav:gs,DesktopNav:Ds,SettingsModal:fo,UserReportingModal:qs,PostStatusModal:Gs,GlobalNoticeList:ea},data:function(){return{mobileActivePanel:"timeline"}},created:function(){var e=this.$store.getters.mergedConfig.interfaceLanguage;this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e}),window.addEventListener("resize",this.updateMobileState)},unmounted:function(){window.removeEventListener("resize",this.updateMobileState)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ta(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classes:function(){return[{"-reverse":this.reverseLayout,"-no-sticky-headers":this.noSticky,"-has-new-post-button":this.newPostButtonShown},"-"+this.layoutType]},currentUser:function(){return this.$store.state.users.currentUser},userBackground:function(){return this.currentUser.background_image},instanceBackground:function(){return this.mergedConfig.hideInstanceWallpaper?null:this.$store.state.instance.background},background:function(){return this.userBackground||this.instanceBackground},bgStyle:function(){if(this.background)return{"--body-background-image":"url(".concat(this.background,")")}},shout:function(){return this.$store.state.shout.joined},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent},isChats:function(){return"chat"===this.$route.name||"chats"===this.$route.name},newPostButtonShown:function(){return!this.isChats&&(this.$store.getters.mergedConfig.alwaysShowNewPostButton||"mobile"===this.layoutType)},showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},shoutboxPosition:function(){return this.$store.getters.mergedConfig.alwaysShowNewPostButton||!1},hideShoutbox:function(){return this.$store.getters.mergedConfig.hideShoutbox},layoutType:function(){return this.$store.state.interface.layoutType},privateMode:function(){return this.$store.state.instance.private},reverseLayout:function(){var e=this.$store.getters.mergedConfig,t=e.thirdColumnMode,n=e.sidebarRight;return"wide"!==this.layoutType||"notifications"===t?n:!n},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders},showScrollbars:function(){return this.$store.getters.mergedConfig.showScrollbars}},Object(a.c)(["mergedConfig"])),methods:{updateMobileState:function(){this.$store.dispatch("setLayoutWidth",Ce()),this.$store.dispatch("setLayoutHeight",Pe())}}};n(566);var ra=Fn()(na,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("MobileNav"),a=Object(wt.J)("DesktopNav"),c=Object(wt.J)("Notifications"),l=Object(wt.J)("user-panel"),u=Object(wt.J)("nav-panel"),d=Object(wt.J)("instance-specific-panel"),p=Object(wt.J)("features-panel"),h=Object(wt.J)("who-to-follow-panel"),b=Object(wt.J)("router-link"),m=Object(wt.J)("router-view"),f=Object(wt.J)("media-modal"),O=Object(wt.J)("shout-panel"),j=Object(wt.J)("MobilePostStatusButton"),g=Object(wt.J)("UserReportingModal"),v=Object(wt.J)("PostStatusModal"),y=Object(wt.J)("SettingsModal"),w=Object(wt.J)("GlobalNoticeList");return Object(wt.D)(),Object(wt.j)("div",{id:"app-loaded",style:Object(wt.x)(e.bgStyle)},[an,"mobile"===e.layoutType?(Object(wt.D)(),Object(wt.h)(s,{key:0})):(Object(wt.D)(),Object(wt.h)(a,{key:1})),e.currentUser?(Object(wt.D)(),Object(wt.h)(c,{key:2})):Object(wt.i)("",!0),Object(wt.k)("div",{id:"content",class:Object(wt.w)(["app-layout container",e.classes])},[cn,Object(wt.k)("div",{id:"sidebar",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},[Object(wt.m)(l),"mobile"!==e.layoutType?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.m)(u),e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(d,{key:0})):Object(wt.i)("",!0),!e.currentUser&&e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(p,{key:1})):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.h)(h,{key:2})):Object(wt.i)("",!0),ln],64)):Object(wt.i)("",!0)],2),Object(wt.k)("div",{id:"main-scroller",class:Object(wt.w)(["column main",{"-full-height":e.isChats}])},[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",un,[Object(wt.m)(b,{to:{name:"login"},class:"panel-body"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.hint")),1)]),_:1})])),Object(wt.m)(m)],2),Object(wt.k)("div",{id:"notifs-column",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},null,2)],2),Object(wt.m)(f),e.currentUser&&e.shout&&!e.hideShoutbox?(Object(wt.D)(),Object(wt.h)(O,{key:3,floating:!0,class:Object(wt.w)(["floating-shout mobile-hidden",{"-left":e.shoutboxPosition}])},null,8,["class"])):Object(wt.i)("",!0),Object(wt.m)(j),Object(wt.m)(g),Object(wt.m)(v),Object(wt.m)(y),dn,Object(wt.m)(w)],4)}]]);const ia={ref:"timeline",class:"timeline"},oa={key:0,class:"new-status-notification text-center faint"},sa={key:1,class:"new-status-notification text-center faint"},aa={class:"new-status-notification text-center"},ca={key:3,class:"new-status-notification text-center"};var la=n(331),ua=n.n(la),da=n(102),pa=n.n(da);const ha={key:0,class:"panel-heading conversation-heading -sticky"},ba={class:"title"},ma={class:"conversation-body panel-body"},fa={key:0,class:"thread-body"},Oa={key:0,class:"conversation-dive-to-top-level-box"},ja={key:1,class:"thread-ancestors"},ga={key:0,class:"thread-ancestor-dive-box"},va={class:"thread-ancestor-dive-box-inner"},ya={key:1,class:"thread-body"};var wa=n(332),ka=n.n(wa);const _a={class:"thread-tree"},Sa={key:0,class:"thread-tree-replies"},Ca={key:1,class:"thread-tree-replies thread-tree-replies-hidden"};Tn.c.add(In.c,In.e);var Pa={components:{Status:Ns.default},name:"ThreadTree",props:{depth:Number,status:Object,inProfile:Boolean,conversation:Array,collapsable:Boolean,isExpanded:Boolean,pinnedStatusIdsObject:Object,profileUserId:String,focused:Function,highlight:String,getReplies:Function,setHighlight:Function,toggleExpanded:Function,simple:Boolean,toggleThreadDisplay:Function,threadDisplayStatus:Object,showThreadRecursively:Function,totalReplyCount:Object,totalReplyDepth:Object,statusContentProperties:Object,setStatusContentProperty:Function,toggleStatusContentProperty:Function,dive:Function},computed:{suspendable:function(){var e=!this.$refs.statusComponent||this.$refs.statusComponent.suspendable;return this.$refs.childComponent?e&&this.$refs.childComponent.every((function(e){return e.suspendable})):e},reverseLookupTable:function(){return this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{})},currentReplies:function(){var e=this;return this.getReplies(this.status.id).map((function(t){var n=t.id;return e.statusById(n)}))},threadShowing:function(){return"showing"===this.threadDisplayStatus[this.status.id]},currentProp:function(){return this.statusContentProperties[this.status.id]}},methods:{statusById:function(e){return this.conversation[this.reverseLookupTable[e]]},collapseThread:function(){},showThread:function(){},showAllSubthreads:function(){},toggleCurrentProp:function(e){this.toggleStatusContentProperty(this.status.id,e)},setCurrentProp:function(e,t){this.setStatusContentProperty(this.status.id,e)}}};n(569);var xa=Fn()(Pa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("status"),a=Object(wt.J)("thread-tree"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("i18n-t");return Object(wt.D)(),Object(wt.j)("div",_a,[(Object(wt.D)(),Object(wt.h)(s,{key:e.status.id,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:e.status,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[e.status.id],focused:e.focused(e.status.id),"in-conversation":e.isExpanded,highlight:e.highlight,replies:e.getReplies(e.status.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status conversation-status-treeview status-fadein panel-body","simple-tree":e.simple,"controlled-thread-display-status":e.threadDisplayStatus[e.status.id],"controlled-toggle-thread-display":()=>e.toggleThreadDisplay(e.status.id),"controlled-showing-tall":e.currentProp.showingTall,"controlled-expanding-subject":e.currentProp.expandingSubject,"controlled-showing-long-subject":e.currentProp.showingLongSubject,"controlled-replying":e.currentProp.replying,"controlled-media-playing":e.currentProp.mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleCurrentProp("showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleCurrentProp("expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleCurrentProp("showingLongSubject"),"controlled-toggle-replying":()=>e.toggleCurrentProp("replying"),"controlled-set-media-playing":t=>e.setCurrentProp("mediaPlaying",t),dive:e.dive?()=>e.dive(e.status.id):void 0,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","dive","onGoto","onToggleExpanded"])),e.currentReplies.length&&e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Sa,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.currentReplies,t=>(Object(wt.D)(),Object(wt.h)(a,{key:t.id,ref_for:!0,ref:"childComponent",depth:e.depth+1,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.highlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.simple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.dive},null,8,["depth","status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.currentReplies.length&&!e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Ca,[e.simple?(Object(wt.D)(),Object(wt.h)(l,{key:0,scope:"global",tag:"button",keypath:"status.thread_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.dive(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_follow",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id]})),1)]),_:1})):(Object(wt.D)(),Object(wt.h)(l,{key:1,scope:"global",tag:"button",keypath:"status.thread_show_full_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.showThreadRecursively(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-down"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_show_full",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id],depth:e.totalReplyDepth[e.status.id]})),1)]),_:1}))])):Object(wt.i)("",!0)])}]]);function Da(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ta(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Da(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Da(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.c,In.d,In.o);var Ia=function(e,t){var n="retweet"===e.type?e.retweeted_status.id:e.id,r="retweet"===t.type?t.retweeted_status.id:t.id,i=Number(n),o=Number(r),s=!Number.isNaN(i),a=!Number.isNaN(o);return s&&a?i<o?-1:1:s&&!a?-1:!s&&a?1:n<r?-1:1},$a={data:function(){return{highlight:null,expanded:!1,threadDisplayStatusObject:{},statusContentPropertiesObject:{},inlineDivePosition:null}},props:["statusId","collapsable","isPage","pinnedStatusIdsObject","inProfile","profileUserId","virtualHidden"],created:function(){this.isPage&&this.fetchConversation()},computed:{maxDepthToShowByDefault:function(){var e=this.$store.getters.mergedConfig.maxDepthInThread-2;return e>=1?e:1},displayStyle:function(){return this.$store.getters.mergedConfig.conversationDisplay},isTreeView:function(){return!this.isLinearView},treeViewIsSimple:function(){return!this.$store.getters.mergedConfig.conversationTreeAdvanced},isLinearView:function(){return"linear"===this.displayStyle},shouldFadeAncestors:function(){return this.$store.getters.mergedConfig.conversationTreeFadeAncestors},otherRepliesButtonPosition:function(){return this.$store.getters.mergedConfig.conversationOtherRepliesButton},showOtherRepliesButtonBelowStatus:function(){return"below"===this.otherRepliesButtonPosition},showOtherRepliesButtonInsideStatus:function(){return"inside"===this.otherRepliesButtonPosition},suspendable:function(){return this.isTreeView?Object.entries(this.statusContentProperties).every((function(e){var t=m()(e,2),n=(t[0],t[1]);return!n.replying&&0===n.mediaPlaying.length})):!this.$refs.statusComponent||!this.$refs.statusComponent[0]||this.$refs.statusComponent.every((function(e){return e.suspendable}))},hideStatus:function(){return this.virtualHidden&&this.suspendable},status:function(){return this.$store.state.statuses.allStatusesObject[this.statusId]},originalStatusId:function(){return this.status.retweeted_status?this.status.retweeted_status.id:this.statusId},conversationId:function(){return this.getConversationId(this.statusId)},conversation:function(){if(!this.status)return[];if(!this.isExpanded)return[this.status];var e=ka()(this.$store.state.statuses.conversationsObject[this.conversationId]),t=A()(e,{id:this.originalStatusId});return-1!==t&&(e[t]=this.status),function(e,t){return(e="retweet"===t.type?bt()(e,(function(e){return"retweet"===e.type||e.id!==t.retweeted_status.id})):bt()(e,(function(e){return"retweet"!==e.type}))).filter((function(e){return e})).sort(Ia)}(e,this.status)},statusMap:function(){return this.conversation.reduce((function(e,t){return e[t.id]=t,e}),{})},threadTree:function(){var e=this,t=this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{});return function n(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return i.map((function(i){return s[i]?[]:(s[i]=!0,[{status:e.conversation[t[i]],id:i,depth:o},n(r,r[i],o+1,s)].reduce((function(e,t){return e.concat(t)}),[]))})).reduce((function(e,t){return e.concat(t)}),[])}(this.conversation.reduce((function(t,n){var r=n.id;return t.forest[r]=e.getReplies(r).map((function(e){return e.id})),t}),{forest:{}}).forest,this.topLevel.map((function(e){return e.id})))},replyIds:function(){var e=this;return this.conversation.map((function(e){return e.id})).reduce((function(t,n){return t[n]=(e.replies[n]||[]).map((function(e){return e.id})),t}),{})},totalReplyCount:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e+t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},totalReplyDepth:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e>t?e:t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},depths:function(){return this.threadTree.reduce((function(e,t){return e[t.id]=t.depth,e}),{})},topLevel:function(){var e=this,t=this.conversation.reduce((function(t,n){return t.filter((function(t){return-1===e.getReplies(n.id).map((function(e){return e.id})).indexOf(t.id)}))}),this.conversation);return t},otherTopLevelCount:function(){return this.topLevel.length-1},showingTopLevel:function(){return this.canDive&&this.diveRoot?[this.statusMap[this.diveRoot]]:this.topLevel},diveRoot:function(){var e=this.inlineDivePosition||this.statusId;return!this.parentOf(e)?null:e},diveDepth:function(){return this.canDive&&this.diveRoot?this.depths[this.diveRoot]:0},diveMode:function(){return this.canDive&&!!this.diveRoot},shouldShowAllConversationButton:function(){return this.isTreeView&&this.isExpanded&&this.diveMode&&this.topLevel.length>1},shouldShowAncestors:function(){return this.isTreeView&&this.isExpanded&&this.ancestorsOf(this.diveRoot).length},replies:function(){var e=1;return De()(this.conversation,(function(t,n){var r=n.id,i=n.in_reply_to_status_id;return i&&(t[i]=t[i]||[],t[i].push({name:"#".concat(e),id:r})),e++,t}),{})},isExpanded:function(){return!(!this.expanded&&!this.isPage)},hiddenStyle:function(){var e=this.status&&this.status.virtualHeight||"120px";return this.virtualHidden?{height:e}:{}},threadDisplayStatus:function(){var e=this;return this.conversation.reduce((function(t,n){var r=n.id,i=e.depths[r],o=e.threadDisplayStatusObject[r]?e.threadDisplayStatusObject[r]:i-e.diveDepth<=e.maxDepthToShowByDefault?"showing":"hidden";return t[r]=o,t}),{})},statusContentProperties:function(){var e=this;return this.conversation.reduce((function(t,n){var r,i=n.id,o=(r={showingTall:!1,expandingSubject:!1,showingLongSubject:!1,isReplying:!1,mediaPlaying:[]},e.statusContentPropertiesObject[i]?Ta(Ta({},r),e.statusContentPropertiesObject[i]):r);return t[i]=o,t}),{})},canDive:function(){return this.isTreeView&&this.isExpanded},focused:function(){var e=this;return function(t){return e.isExpanded&&t===e.highlight}},maybeHighlight:function(){return this.isExpanded?this.highlight:null}},components:{Status:Ns.default,ThreadTree:xa},watch:{statusId:function(e,t){var n=this.getConversationId(e),r=this.getConversationId(t);n&&r&&n===r?this.setHighlight(this.originalStatusId):this.fetchConversation()},expanded:function(e){e?this.fetchConversation():this.resetDisplayState()},virtualHidden:function(e){this.$store.dispatch("setVirtualHeight",{statusId:this.statusId,height:"".concat(this.$el.clientHeight,"px")})}},methods:{fetchConversation:function(){var e=this;this.status?this.$store.state.api.backendInteractor.fetchConversation({id:this.statusId}).then((function(t){var n=t.ancestors,r=t.descendants;e.$store.dispatch("addNewStatuses",{statuses:n}),e.$store.dispatch("addNewStatuses",{statuses:r}),e.setHighlight(e.originalStatusId)})):this.$store.state.api.backendInteractor.fetchStatus({id:this.statusId}).then((function(t){e.$store.dispatch("addNewStatuses",{statuses:[t]}),e.fetchConversation()}))},getReplies:function(e){return this.replies[e]||[]},getHighlight:function(){return this.isExpanded?this.highlight:null},setHighlight:function(e){e&&(this.highlight=e,this.$store.dispatch("fetchFavsAndRepeats",e),this.$store.dispatch("fetchEmojiReactionsBy",e))},toggleExpanded:function(){this.expanded=!this.expanded},getConversationId:function(e){var t=this.$store.state.statuses.allStatusesObject[e];return qt()(t,"retweeted_status.statusnet_conversation_id",qt()(t,"statusnet_conversation_id"))},setThreadDisplay:function(e,t){this.threadDisplayStatusObject=Ta(Ta({},this.threadDisplayStatusObject),{},h()({},e,t))},toggleThreadDisplay:function(e){var t="showing"===this.threadDisplayStatus[e]?"hidden":"showing";this.setThreadDisplay(e,t)},setThreadDisplayRecursively:function(e,t){var n=this;this.setThreadDisplay(e,t),this.getReplies(e).map((function(e){return e.id})).map((function(e){return n.setThreadDisplayRecursively(e,t)}))},showThreadRecursively:function(e){this.setThreadDisplayRecursively(e,"showing")},setStatusContentProperty:function(e,t,n){this.statusContentPropertiesObject=Ta(Ta({},this.statusContentPropertiesObject),{},h()({},e,Ta(Ta({},this.statusContentPropertiesObject[e]),{},h()({},t,n))))},toggleStatusContentProperty:function(e,t){this.setStatusContentProperty(e,t,!this.statusContentProperties[e][t])},leastVisibleAncestor:function(e){for(var t=e,n=this.parentOf(t);t;){if("showing"===this.threadDisplayStatus[n])return t;n=this.parentOf(n),t=this.parentOf(t)}return this.topLevel[0]?this.topLevel[0].id:void 0},diveIntoStatus:function(e,t){this.tryScrollTo(e)},diveToTopLevel:function(){this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot)||this.topLevel[0].id)},undive:function(){this.inlineDivePosition=null,this.setHighlight(this.statusId)},tryScrollTo:function(e){var t=this;e&&(this.isPage?this.$router.push({name:"conversation",params:{id:e}}):this.inlineDivePosition=e,this.$nextTick((function(){t.setHighlight(e)})))},goToCurrent:function(){this.tryScrollTo(this.diveRoot||this.topLevel[0].id)},statusById:function(e){return this.statusMap[e]},parentOf:function(e){var t=this.statusById(e);if(t){var n=t.in_reply_to_status_id;if(this.statusMap[n])return n}},parentOrSelf:function(e){return this.parentOf(e)||e},ancestorsOf:function(e){for(var t=[],n=this.parentOf(e);n;)t.unshift(this.statusMap[n]),n=this.parentOf(n);return t},topLevelAncestorOrSelfId:function(e){for(var t=e,n=this.parentOf(e);n;)t=this.parentOf(t),n=this.parentOf(n);return t},resetDisplayState:function(){this.undive(),this.threadDisplayStatusObject={}}}};n(570);var za=Fn()($a,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("i18n-t"),c=Object(wt.J)("status"),l=Object(wt.J)("thread-tree");return e.hideStatus?(Object(wt.D)(),Object(wt.j)("div",{key:1,style:Object(wt.x)(e.hiddenStyle)},null,4)):(Object(wt.D)(),Object(wt.j)("div",{key:0,style:Object(wt.x)(e.hiddenStyle),class:Object(wt.w)(["Conversation",{"-expanded":e.isExpanded,panel:e.isExpanded}])},[e.isExpanded?(Object(wt.D)(),Object(wt.j)("div",ha,[Object(wt.k)("span",ba,Object(wt.O)(e.$t("timeline.conversation")),1),e.collapsable?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled -link",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},Object(wt.O)(e.$t("timeline.collapse")),1)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("div",ma,[e.isTreeView?(Object(wt.D)(),Object(wt.j)("div",fa,[e.shouldShowAllConversationButton?(Object(wt.D)(),Object(wt.j)("div",Oa,[Object(wt.m)(a,{keypath:"status.show_all_conversation_with_icon",tag:"button",class:"button-unstyled -link",onClick:Object(wt.Y)(e.diveToTopLevel,["prevent"]),scope:"global"},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-left"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.show_all_conversation",e.otherTopLevelCount,{numStatus:e.otherTopLevelCount})),1)]),_:1},8,["onClick"])])):Object(wt.i)("",!0),e.shouldShowAncestors?(Object(wt.D)(),Object(wt.j)("div",ja,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ancestorsOf(e.diveRoot),t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:Object(wt.w)(["thread-ancestor",{"thread-ancestor-has-other-replies":e.getReplies(t.id).length>1,"-faded":e.shouldFadeAncestors}])},[Object(wt.m)(c,{ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","simple-tree":e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"show-other-replies-as-button":e.showOtherRepliesButtonInsideStatus,dive:()=>e.diveIntoStatus(t.id),"controlled-showing-tall":e.statusContentProperties[t.id].showingTall,"controlled-expanding-subject":e.statusContentProperties[t.id].expandingSubject,"controlled-showing-long-subject":e.statusContentProperties[t.id].showingLongSubject,"controlled-replying":e.statusContentProperties[t.id].replying,"controlled-media-playing":e.statusContentProperties[t.id].mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleStatusContentProperty(t.id,"showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleStatusContentProperty(t.id,"expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleStatusContentProperty(t.id,"showingLongSubject"),"controlled-toggle-replying":()=>e.toggleStatusContentProperty(t.id,"replying"),"controlled-set-media-playing":n=>e.toggleStatusContentProperty(t.id,"mediaPlaying",n),onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","show-other-replies-as-button","dive","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","onGoto","onToggleExpanded"]),e.showOtherRepliesButtonBelowStatus&&e.getReplies(t.id).length>1?(Object(wt.D)(),Object(wt.j)("div",ga,[Object(wt.k)("div",va,[Object(wt.m)(a,{tag:"button",scope:"global",keypath:"status.ancestor_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:Object(wt.Y)(n=>e.diveIntoStatus(t.id),["prevent"])},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.ancestor_follow",e.getReplies(t.id).length-1,{numReplies:e.getReplies(t.id).length-1})),1)]),_:2},1032,["onClick"])])])):Object(wt.i)("",!0)],2))),128))])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.showingTopLevel,t=>(Object(wt.D)(),Object(wt.h)(l,{key:t.id,ref_for:!0,ref:"statusComponent",depth:0,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.maybeHighlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.canDive?e.diveIntoStatus:void 0},null,8,["status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.isLinearView?(Object(wt.D)(),Object(wt.j)("div",ya,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.conversation,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","onGoto","onToggleExpanded"]))),128))])):Object(wt.i)("",!0)])],6))}]]);const Ma={class:"timeline-menu-popover popover-default"},Ua={class:"button-unstyled title timeline-menu-title"},Fa={class:"timeline-title"};Tn.c.add(In.n);var Ea={components:{Popover:co.default,TimelineMenuContent:Lr},data:function(){return{isOpen:!1}},created:function(){({friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"})[this.$route.name]&&this.$store.dispatch("setLastTimeline",this.$route.name)},methods:{openMenu:function(){var e=this;setTimeout((function(){e.isOpen=!0}),25)},blockOpen:function(e){this.isOpen||e.stopPropagation()},timelineName:function(){var e=this.$route.name;if("tag-timeline"===e)return"#"+this.$route.params.tag;var t={friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"}[this.$route.name];return t?this.$t(t):e}}};n(571);var La=Fn()(Ea,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenuContent"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(c,{trigger:"click",class:Object(wt.w)(["TimelineMenu",{open:e.isOpen}]),margin:{left:-15,right:-200},"bound-to":{x:"container"},"popover-class":"timeline-menu-popover-wrap",onShow:e.openMenu,onClose:t[1]||(t[1]=()=>e.isOpen=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ma,[Object(wt.m)(s)])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ua,[Object(wt.k)("span",Fa,Object(wt.O)(e.timelineName()),1),Object(wt.k)("span",null,[Object(wt.m)(a,{size:"sm",icon:"chevron-down"})]),Object(wt.k)("span",{class:"click-blocker",onClick:t[0]||(t[0]=(...t)=>e.blockOpen&&e.blockOpen(...t))})])]),_:1},8,["class","onShow"])}]]);const Ra={class:"dropdown-menu"},Aa={key:0},Na=Object(wt.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),Ba={class:"button-unstyled"};function Va(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ha(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Va(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Va(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.G,In.H,In.yb);var qa={components:{Popover:co.default},methods:{setReplyVisibility:function(e){this.$store.dispatch("setOption",{name:"replyVisibility",value:e}),this.$store.dispatch("queueFlushAll")},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:Ha(Ha({},Object(a.c)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},replyVisibilitySelf:{get:function(){return"self"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("self")}},replyVisibilityFollowing:{get:function(){return"following"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("following")}},replyVisibilityAll:{get:function(){return"all"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("all")}},hideMedia:{get:function(){return this.mergedConfig.hideAttachments||this.mergedConfig.hideAttachmentsInConv},set:function(){var e=!this.hideMedia;this.$store.dispatch("setOption",{name:"hideAttachments",value:e}),this.$store.dispatch("setOption",{name:"hideAttachmentsInConv",value:e})}},hideMutedPosts:{get:function(){return this.mergedConfig.hideFilteredStatuses},set:function(){var e=!this.hideMutedPosts;this.$store.dispatch("setOption",{name:"hideFilteredStatuses",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})};n(572);var Ja=Fn()(qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(a,{trigger:"click",class:"TimelineQuickSettings","bound-to":{x:"container"}},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ra,[e.loggedIn?(Object(wt.D)(),Object(wt.j)("div",Aa,[Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.replyVisibilityAll=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityAll}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_all")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.replyVisibilityFollowing=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityFollowing}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_following_short")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.replyVisibilitySelf=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilitySelf}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_self_short")),1)]),Na])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.muteBotStatuses=!e.muteBotStatuses)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.muteBotStatuses}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.mute_bot_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.hideMedia=!e.hideMedia)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMedia}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_media_previews")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.hideMutedPosts=!e.hideMutedPosts)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMutedPosts}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_all_muted_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[6]||(t[6]=t=>e.openTab("filtering"))},[Object(wt.m)(s,{icon:"font"}),Object(wt.l)(Object(wt.O)(e.$t("settings.word_filter")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[7]||(t[7]=t=>e.openTab("general"))},[Object(wt.m)(s,{icon:"wrench"}),Object(wt.l)(Object(wt.O)(e.$t("settings.more_settings")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ba,[Object(wt.m)(s,{icon:"filter"})])]),_:1})}]]);Tn.c.add(In.r,In.s);var Wa={props:["timeline","timelineName","title","userId","tag","embedded","count","pinnedStatusIds","inProfile","footerSlipgate"],data:function(){return{paused:!1,unfocused:!1,bottomedOut:!1,virtualScrollIndex:0,blockingClicks:!1}},components:{Status:Ns.default,Conversation:za,TimelineMenu:La,TimelineQuickSettings:Ja},computed:{filteredVisibleStatuses:function(){var e=this;return this.timeline.visibleStatuses.filter((function(t){return"user"!==e.timelineName||t.id>=e.timeline.minId&&t.id<=e.timeline.maxId}))},filteredPinnedStatusIds:function(){var e=this;return(this.pinnedStatusIds||[]).filter((function(t){return e.timeline.statusesObject[t]}))},newStatusCount:function(){return this.timeline.newStatusCount},showLoadButton:function(){return this.timeline.newStatusCount>0||0!==this.timeline.flushMarker},loadButtonString:function(){return 0!==this.timeline.flushMarker?this.$t("timeline.reload"):"".concat(this.$t("timeline.show_new")," (").concat(this.newStatusCount,")")},classes:function(){var e=this.embedded?["-nonpanel"]:["panel","panel-default"];return this.blockingClicks&&(e=e.concat(["-blocked","_misclick-prevention"])),{root:e,header:["timeline-heading"].concat(this.embedded?[]:["panel-heading","-sticky"]),body:["timeline-body"].concat(this.embedded?[]:["panel-body"]),footer:["timeline-footer"].concat(this.embedded?[]:["panel-footer"])}},pinnedStatusIdsObject:function(){return ua()(this.pinnedStatusIds)},statusesToDisplay:function(){var e=this.timeline.visibleStatuses.length,t=Math.ceil(Math.max(3,window.innerHeight/80)),n=this.virtualScrollIndex-this.filteredPinnedStatusIds.length,r=Math.max(0,n-t),i=Math.min(e,n+t);return this.timeline.visibleStatuses.slice(r,i).map((function(e){return e.id}))},virtualScrollingEnabled:function(){return this.$store.getters.mergedConfig.virtualScrolling}},created:function(){var e=this.$store,t=e.state.users.currentUser.credentials,n=0===this.timeline.visibleStatuses.length;if(window.addEventListener("scroll",this.handleScroll),e.state.api.fetchers[this.timelineName])return!1;ve.fetchAndUpdate({store:e,credentials:t,timeline:this.timelineName,showImmediately:n,userId:this.userId,tag:this.tag})},mounted:function(){void 0!==document.hidden&&(document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.unfocused=document.hidden),window.addEventListener("keydown",this.handleShortKey),setTimeout(this.determineVisibleStatuses,250)},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("keydown",this.handleShortKey),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.commit("setLoading",{timeline:this.timelineName,value:!1})},methods:{stopBlockingClicks:os()((function(){this.blockingClicks=!1}),1e3),blockClicksTemporarily:function(){this.blockingClicks||(this.blockingClicks=!0),this.stopBlockingClicks()},handleShortKey:function(e){["textarea","input"].includes(e.target.tagName.toLowerCase())||"."===e.key&&this.showNewStatuses()},showNewStatuses:function(){0!==this.timeline.flushMarker?(this.$store.commit("clearTimeline",{timeline:this.timelineName,excludeUserId:!0}),this.$store.commit("queueFlush",{timeline:this.timelineName,id:0}),this.fetchOlderStatuses()):(this.blockClicksTemporarily(),this.$store.commit("showNewStatuses",{timeline:this.timelineName}),this.paused=!1),window.scrollTo({top:0})},fetchOlderStatuses:pa()((function(){var e=this,t=this.$store,n=t.state.users.currentUser.credentials;t.commit("setLoading",{timeline:this.timelineName,value:!0}),ve.fetchAndUpdate({store:t,credentials:n,timeline:this.timelineName,older:!0,showImmediately:!0,userId:this.userId,tag:this.tag}).then((function(t){var n=t.statuses;n&&0===n.length&&(e.bottomedOut=!0)})).finally((function(){return t.commit("setLoading",{timeline:e.timelineName,value:!1})}))}),1e3,void 0),determineVisibleStatuses:function(){if(this.$refs.timeline&&this.virtualScrollingEnabled){var e=this.$refs.timeline.children,t=Math.max(0,Math.min(this.virtualScrollIndex,e.length-1));if(0!==e.length){var n=Math.max(document.body.offsetHeight,window.pageYOffset),r=window.pageYOffset+.5*window.innerHeight,i=Math.floor(e.length*(r/n)),o=e[i].getBoundingClientRect().y,s=e[t].getBoundingClientRect().y;for(Math.abs(o)>s&&(i=t,o=s);o<-20&&i<e.length-1;)o+=e[i].offsetHeight,i++;for(;o>window.innerHeight+100&&i>0;)o-=e[--i].offsetHeight;this.virtualScrollIndex=i}}},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.timeline.loading&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchOlderStatuses()},handleScroll:pa()((function(e){this.determineVisibleStatuses(),this.scrollLoad(e)}),200),handleVisibilityChange:function(){this.unfocused=document.hidden}},watch:{newStatusCount:function(e){if(this.$store.getters.mergedConfig.streaming&&e>0){var t=document.documentElement;!((window.pageYOffset||t.scrollTop)-(t.clientTop||0)<15)||this.paused||this.unfocused&&this.$store.getters.mergedConfig.pauseOnUnfocused?this.paused=!0:this.showNewStatuses()}}}};n(573);var Ya=Fn()(Wa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenu"),a=Object(wt.J)("TimelineQuickSettings"),c=Object(wt.J)("conversation"),l=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["Timeline",e.classes.root])},[Object(wt.k)("div",{class:Object(wt.w)(e.classes.header)},[e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0})),e.showLoadButton?(Object(wt.D)(),Object(wt.j)("button",{key:1,class:"button-default loadmore-button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.showNewStatuses&&e.showNewStatuses(...t),["prevent"]))},Object(wt.O)(e.loadButtonString),1)):e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",{key:2,class:"loadmore-text faint",onClick:t[1]||(t[1]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.$t("timeline.up_to_date")),1)),e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:3}))],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.body)},[Object(wt.k)("div",ia,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredPinnedStatusIds,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t+"-pinned",class:"status-fadein","status-id":t,collapsable:!0,"pinned-status-ids-object":e.pinnedStatusIdsObject,"in-profile":e.inProfile,"profile-user-id":e.userId},null,8,["status-id","pinned-status-ids-object","in-profile","profile-user-id"]))),128)),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredVisibleStatuses,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,class:"status-fadein","status-id":t.id,collapsable:!0,"in-profile":e.inProfile,"profile-user-id":e.userId,"virtual-hidden":e.virtualScrollingEnabled&&!e.statusesToDisplay.includes(t.id)},null,8,["status-id","in-profile","profile-user-id","virtual-hidden"]))),128))],512)],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.footer)},[(Object(wt.D)(),Object(wt.h)(wt.c,{to:e.footerSlipgate,disabled:!e.embedded||!e.footerSlipgate},[0===e.count?(Object(wt.D)(),Object(wt.j)("div",oa,Object(wt.O)(e.$t("timeline.no_statuses")),1)):e.bottomedOut?(Object(wt.D)(),Object(wt.j)("div",sa,Object(wt.O)(e.$t("timeline.no_more_statuses")),1)):e.timeline.loading?(Object(wt.D)(),Object(wt.j)("div",ca,[Object(wt.m)(l,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled -link",onClick:t[2]||(t[2]=Object(wt.Y)(t=>e.fetchOlderStatuses(),["prevent"]))},[Object(wt.k)("div",aa,Object(wt.O)(e.$t("timeline.load_older")),1)]))],8,["to","disabled"]))],2)],2)}]]),Ga={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.public}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"public"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","public")}};var Ka=Fn()(Ga,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.public_tl"),timeline:e.timeline,"timeline-name":"public"},null,8,["title","timeline"])}]]);var Xa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.publicAndExternal}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"publicAndExternal"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","publicAndExternal")}};var Za=Fn()(Xa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.twkn"),timeline:e.timeline,"timeline-name":"publicAndExternal"},null,8,["title","timeline"])}]]);var Qa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.friends}}};var ec=Fn()(Qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.timeline"),timeline:e.timeline,"timeline-name":"friends"},null,8,["title","timeline"])}]]);var tc={created:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})},components:{Timeline:Ya},computed:{tag:function(){return this.$route.params.tag},timeline:function(){return this.$store.state.statuses.timelines.tag}},watch:{tag:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})}},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","tag")}};var nc=Fn()(tc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.tag,timeline:e.timeline,"timeline-name":"tag",tag:e.tag},null,8,["title","timeline","tag"])}]]);var rc={computed:{timeline:function(){return this.$store.state.statuses.timelines.bookmarks}},components:{Timeline:Ya},unmounted:function(){this.$store.commit("clearTimeline",{timeline:"bookmarks"})}};var ic=Fn()(rc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.bookmarks"),timeline:e.timeline,"timeline-name":"bookmarks"},null,8,["title","timeline"])}]]);var oc={components:{Conversation:za},computed:{statusId:function(){return this.$route.params.id}}};var sc=Fn()(oc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("conversation");return Object(wt.D)(),Object(wt.h)(s,{collapsable:!1,"is-page":"true","status-id":e.statusId},null,8,["status-id"])}]]);const ac={class:"panel panel-default"},cc={class:"panel-heading"},lc={class:"title"},uc=["label"],dc=["label"],pc=["label"],hc=["label"];var bc=n(71),mc={mentions:["mention"],"likes+repeats":["repeat","like"],follows:["follow"],moves:["move"]},fc={data:function(){return{allowFollowingMove:this.$store.state.users.currentUser.allow_following_move,filterMode:mc.mentions}},methods:{onModeSwitch:function(e){this.filterMode=mc[e]}},components:{Notifications:fs.default,TabSwitcher:bc.a}};var Oc=Fn()(fc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("tab-switcher"),a=Object(wt.J)("Notifications");return Object(wt.D)(),Object(wt.j)("div",ac,[Object(wt.k)("div",cc,[Object(wt.k)("div",lc,Object(wt.O)(e.$t("nav.interactions")),1)]),Object(wt.m)(s,{ref:"tabSwitcher","on-switch":e.onModeSwitch},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"mentions",label:e.$t("nav.mentions")},null,8,uc),Object(wt.k)("span",{key:"likes+repeats",label:e.$t("interactions.favs_repeats")},null,8,dc),Object(wt.k)("span",{key:"follows",label:e.$t("interactions.follows")},null,8,pc),e.allowFollowingMove?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",{key:"moves",label:e.$t("interactions.moves")},null,8,hc))]),_:1},8,["on-switch"]),Object(wt.m)(a,{ref:"notifications","no-heading":!0,"minimal-mode":!0,"filter-mode":e.filterMode},null,8,["filter-mode"])])}]]);var jc={computed:{timeline:function(){return this.$store.state.statuses.timelines.dms}},components:{Timeline:Ya}};var gc=Fn()(jc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.dms"),timeline:e.timeline,"timeline-name":"dms"},null,8,["title","timeline"])}]]);const vc={key:0},yc={key:1,class:"chat-list panel panel-default"},wc={class:"panel-heading -sticky"},kc={class:"title"},_c={class:"panel-body"},Sc={key:0,class:"timeline"},Cc={key:1,class:"emtpy-chat-list-alert"};const Pc={class:"chat-list-item-left"},xc={class:"chat-list-item-center"},Dc={class:"heading"},Tc={key:0,class:"name-and-account-name"},Ic=Object(wt.k)("span",{class:"heading-right"},null,-1),$c={class:"time-wrapper"},zc={class:"chat-preview"},Mc={key:0,class:"badge badge-notification unread-chat-count"};var Uc=n(45),Fc=n(22),Ec=n(144),Lc=n(59);const Rc=["title"];var Ac=n(25),Nc={name:"ChatTitle",components:{UserAvatar:Fc.default,RichContent:Ac.a},props:["user","withAvatar"],computed:{title:function(){return this.user?this.user.screen_name_ui:""},htmlTitle:function(){return this.user?this.user.name_html:""}},methods:{getUserProfileLink:function(e){return Object(ji.a)(e.id,e.screen_name)}}};n(575);var Bc=Fn()(Nc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("RichContent");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-title",title:e.title},[e.withAvatar&&e.user?(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"avatar-container",to:e.getUserProfileLink(e.user)},{default:Object(wt.V)(()=>[Object(wt.m)(s,{class:"titlebar-avatar",user:e.user},null,8,["user"])]),_:1},8,["to"])):Object(wt.i)("",!0),e.user?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"username",title:"@"+(e.user&&e.user.screen_name_ui),html:e.htmlTitle,emoji:e.user.emoji||[]},null,8,["title","html","emoji"])):Object(wt.i)("",!0)],8,Rc)}]]);function Vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Hc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vc(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var qc={name:"ChatListItem",props:["chat"],components:{UserAvatar:Fc.default,AvatarList:Ec.a,Timeago:Lc.a,ChatTitle:Bc,StatusBody:Uc.a},computed:Hc(Hc({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),{},{attachmentInfo:function(){if(0!==this.chat.lastMessage.attachments.length){var e=this.chat.lastMessage.attachments.map((function(e){return lt.a.fileType(e.mimetype)}));return e.includes("video")?this.$t("file_type.video"):e.includes("audio")?this.$t("file_type.audio"):e.includes("image")?this.$t("file_type.image"):this.$t("file_type.file")}},messageForStatusContent:function(){var e=this.chat.lastMessage,t=e?e.emojis:[],n=e&&e.account_id===this.currentUser.id,r=e?this.attachmentInfo||e.content:"",i=n?"<i>".concat(this.$t("chats.you"),"</i> ").concat(r):r;return{summary:"",emojis:t,raw_html:i,text:i,attachments:[]}}}),methods:{openChat:function(e){this.chat.id&&this.$router.push({name:"chat",params:{username:this.currentUser.screen_name,recipient_id:this.chat.account.id}})}}};n(576);var Jc=Fn()(qc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("Timeago"),l=Object(wt.J)("StatusBody");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-list-item",onClickCapture:t[0]||(t[0]=Object(wt.Y)((...t)=>e.openChat&&e.openChat(...t),["prevent"]))},[Object(wt.k)("div",Pc,[Object(wt.m)(s,{user:e.chat.account,height:"48px",width:"48px"},null,8,["user"])]),Object(wt.k)("div",xc,[Object(wt.k)("div",Dc,[e.chat.account?(Object(wt.D)(),Object(wt.j)("span",Tc,[Object(wt.m)(a,{user:e.chat.account},null,8,["user"])])):Object(wt.i)("",!0),Ic,Object(wt.k)("div",$c,[Object(wt.m)(c,{time:e.chat.updated_at,"auto-update":60},null,8,["time"])])]),Object(wt.k)("div",zc,[Object(wt.m)(l,{class:"chat-preview-body",status:e.messageForStatusContent,"single-line":!0},null,8,["status"]),e.chat.unread>0?(Object(wt.D)(),Object(wt.j)("div",Mc,Object(wt.O)(e.chat.unread),1)):Object(wt.i)("",!0)])])],32)}]]);const Wc={class:"panel-default panel chat-new"},Yc={ref:"header",class:"panel-heading"},Gc={class:"input-wrap"},Kc={class:"input-search"},Xc={class:"member-list"},Zc=["onClickCapture"];var Qc=n(53);function el(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?el(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):el(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.cb,In.o);var nl={components:{BasicUserCard:Qc.a,UserAvatar:Fc.default},data:function(){return{suggestions:[],userIds:[],loading:!1,query:""}},created:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.chats();case 2:n=t.sent,n.chats.forEach((function(t){return e.suggestions.push(t.account)}));case 5:case"end":return t.stop()}}),t)})))()},computed:tl(tl({users:function(){var e=this;return this.userIds.map((function(t){return e.findUser(t)}))},availableUsers:function(){return 0!==this.query.length?this.users:this.suggestions}},Object(a.e)({currentUser:function(e){return e.users.currentUser},backendInteractor:function(e){return e.api.backendInteractor}})),Object(a.c)(["findUser"])),methods:{goBack:function(){this.$emit("cancel")},goToChat:function(e){this.$router.push({name:"chat",params:{recipient_id:e.id}})},onInput:function(){this.search(this.query)},addUser:function(e){this.selectedUserIds.push(e.id),this.query=""},removeUser:function(e){this.selectedUserIds=this.selectedUserIds.filter((function(t){return t!==e}))},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts"}).then((function(e){t.loading=!1,t.userIds=e.accounts.map((function(e){return e.id}))}))):this.loading=!1}}};n(578);var rl=Fn()(nl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("BasicUserCard");return Object(wt.D)(),Object(wt.j)("div",Wc,[Object(wt.k)("div",Yc,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})])],512),Object(wt.k)("div",Gc,[Object(wt.k)("div",Kc,[Object(wt.m)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),Object(wt.W)(Object(wt.k)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=t=>e.query=t),placeholder:"Search people",onInput:t[2]||(t[2]=(...t)=>e.onInput&&e.onInput(...t))},null,544),[[wt.S,e.query]])]),Object(wt.k)("div",Xc,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.availableUsers,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"member"},[Object(wt.k)("div",{onClickCapture:Object(wt.Y)(n=>e.goToChat(t),["prevent"])},[Object(wt.m)(a,{user:t},null,8,["user"])],40,Zc)]))),128))])])}]]);function il(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ol(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?il(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):il(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var sl={components:{ChatListItem:Jc,List:Bs.a,ChatNew:rl},computed:ol(ol({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),Object(a.c)(["sortedChatList"])),data:function(){return{isNew:!1}},created:function(){this.$store.dispatch("fetchChats",{latest:!0})},methods:{cancelNewChat:function(){this.isNew=!1,this.$store.dispatch("fetchChats",{latest:!0})},newChat:function(){this.isNew=!0}}};n(579);var al=Fn()(sl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("ChatNew"),a=Object(wt.J)("ChatListItem"),c=Object(wt.J)("List");return e.isNew?(Object(wt.D)(),Object(wt.j)("div",vc,[Object(wt.m)(s,{onCancel:e.cancelNewChat},null,8,["onCancel"])])):(Object(wt.D)(),Object(wt.j)("div",yc,[Object(wt.k)("div",wc,[Object(wt.k)("span",kc,Object(wt.O)(e.$t("chats.chats")),1),Object(wt.k)("button",{class:"button-default",onClick:t[0]||(t[0]=(...t)=>e.newChat&&e.newChat(...t))},Object(wt.O)(e.$t("chats.new")),1)]),Object(wt.k)("div",_c,[e.sortedChatList.length>0?(Object(wt.D)(),Object(wt.j)("div",Sc,[Object(wt.m)(c,{items:e.sortedChatList},{item:Object(wt.V)(({item:e})=>[(Object(wt.D)(),Object(wt.h)(a,{key:e.id,compact:!1,chat:e},null,8,["chat"]))]),_:1},8,["items"])])):(Object(wt.D)(),Object(wt.j)("div",Cc,[Object(wt.k)("span",null,Object(wt.O)(e.$t("chats.empty_chat_list_placeholder")),1)]))])]))}]]);const cl={class:"chat-view"},ll={class:"chat-view-inner"},ul={ref:"inner",class:"panel-default panel chat-view-body"},dl={ref:"header",class:"panel-heading -sticky chat-view-heading"},pl={class:"title text-center"},hl={key:1,class:"chat-loading-error"},bl={class:"alert error"},ml={ref:"footer",class:"panel-body footer"},fl={key:0,class:"badge badge-notification unread-chat-count unread-message-count"};const Ol={key:0,class:"avatar-wrapper"},jl={class:"chat-message-inner"},gl={class:"dropdown-menu"},vl=["title"],yl={class:"created-at"},wl={key:1,class:"chat-message-date-separator"};var kl=n(58),_l=n(78),Sl=n(142);var Cl=n(38),Pl={name:"Timeago",props:["date"],computed:{displayDate:function(){var e=new Date;return e.setHours(0,0,0,0),this.date.getTime()===e.getTime()?this.$t("display_date.today"):this.date.toLocaleDateString(Cl.a.internalToBrowserLocale(this.$i18n.locale),{day:"numeric",month:"long"})}}};var xl=Fn()(Pl,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("time",null,Object(wt.O)(o.displayDate),1)}]]);function Dl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dl(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,In.w);var Il={name:"ChatMessage",props:["author","edited","noHeading","chatViewItem","hoveredMessageChain"],emits:["hover"],components:{Popover:co.default,Attachment:kl.a,StatusContent:Uc.a,UserAvatar:Fc.default,Gallery:_l.a,LinkPreview:Sl.a,ChatMessageDate:xl},computed:Tl(Tl({createdAt:function(){return this.chatViewItem.data.created_at.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit",hour12:!1})},isCurrentUser:function(){return this.message.account_id===this.currentUser.id},message:function(){return this.chatViewItem.data},userProfileLink:function(){return Object(ji.a)(this.author.id,this.author.screen_name,this.$store.state.instance.restrictedNicknames)},isMessage:function(){return"message"===this.chatViewItem.type},messageForStatusContent:function(){return{summary:"",emojis:this.message.emojis,raw_html:this.message.content||"",text:this.message.content||"",attachments:this.message.attachments}},hasAttachment:function(){return this.message.attachments.length>0}},Object(a.e)({betterShadow:function(e){return e.interface.browserSupport.cssFilter},currentUser:function(e){return e.users.currentUser},restrictedNicknames:function(e){return e.instance.restrictedNicknames}})),{},{popoverMarginStyle:function(){return this.isCurrentUser?{}:{left:50}}},Object(a.c)(["mergedConfig","findUser"])),data:function(){return{hovered:!1,menuOpened:!1}},methods:{onHover:function(e){this.$emit("hover",{isHovered:e,messageChainId:this.chatViewItem.messageChainId})},deleteMessage:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.confirm(e.$t("chats.delete_confirm"))){t.next=4;break}return t.next=4,e.$store.dispatch("deleteChatMessage",{messageId:e.chatViewItem.data.id,chatId:e.chatViewItem.data.chat_id});case 4:e.hovered=!1,e.menuOpened=!1;case 6:case"end":return t.stop()}}),t)})))()}}};n(580);var $l=Fn()(Il,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("Popover"),u=Object(wt.J)("StatusContent"),d=Object(wt.J)("ChatMessageDate");return e.isMessage?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["chat-message-wrapper",{"hovered-message-chain":e.hoveredMessageChain}]),onMouseover:t[5]||(t[5]=t=>e.onHover(!0)),onMouseleave:t[6]||(t[6]=t=>e.onHover(!1))},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message",[{outgoing:e.isCurrentUser,incoming:!e.isCurrentUser}]])},[e.isCurrentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Ol,[e.chatViewItem.isHead?(Object(wt.D)(),Object(wt.h)(a,{key:0,to:e.userProfileLink},{default:Object(wt.V)(()=>[Object(wt.m)(s,{compact:!0,"better-shadow":e.betterShadow,user:e.author},null,8,["better-shadow","user"])]),_:1},8,["to"])):Object(wt.i)("",!0)])),Object(wt.k)("div",jl,[Object(wt.k)("div",{class:"status-body",style:Object(wt.x)({"min-width":e.message.attachment?"80%":""})},[Object(wt.k)("div",{class:Object(wt.w)(["media status",{"without-attachment":!e.hasAttachment,pending:e.chatViewItem.data.pending,error:e.chatViewItem.data.error}]),style:{position:"relative"},onMouseenter:t[3]||(t[3]=t=>e.hovered=!0),onMouseleave:t[4]||(t[4]=t=>e.hovered=!1)},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message-menu",{visible:e.hovered||e.menuOpened}])},[Object(wt.m)(l,{trigger:"click",placement:"top","bound-to-selector":e.isCurrentUser?"":".scrollable-message-list","bound-to":{x:"container"},margin:e.popoverMarginStyle,onShow:t[1]||(t[1]=t=>e.menuOpened=!0),onClose:t[2]||(t[2]=t=>e.menuOpened=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",gl,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=(...t)=>e.deleteMessage&&e.deleteMessage(...t))},[Object(wt.m)(c,{icon:"times"}),Object(wt.l)(" "+Object(wt.O)(e.$t("chats.delete")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"button-default menu-icon",title:e.$t("chats.more")},[Object(wt.m)(c,{icon:"ellipsis-h"})],8,vl)]),_:1},8,["bound-to-selector","margin"])],2),Object(wt.m)(u,{class:"message-content",status:e.messageForStatusContent,"full-content":!0},{footer:Object(wt.V)(()=>[Object(wt.k)("span",yl,Object(wt.O)(e.createdAt),1)]),_:1},8,["status"])],34)],4)])],2)],34)):(Object(wt.D)(),Object(wt.j)("div",wl,[Object(wt.m)(d,{date:e.chatViewItem.date},null,8,["date"])]))}]]),zl=function(){return{scrollTop:window.scrollY,scrollHeight:document.documentElement.scrollHeight,offsetHeight:window.innerHeight}};function Ml(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ul(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ml(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ml(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.n,In.o);var Fl={components:{ChatMessage:$l,ChatTitle:Bc,PostStatusForm:Or.a},data:function(){return{jumpToBottomButtonVisible:!1,hoveredMessageChainId:void 0,lastScrollPosition:{},scrollableContainerHeight:"100%",errorLoadingChat:!1,messageRetriers:{}}},created:function(){this.startFetching(),window.addEventListener("resize",this.handleResize)},mounted:function(){var e=this;window.addEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$nextTick((function(){e.handleResize()}))},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.dispatch("clearCurrentChat")},computed:Ul(Ul({recipient:function(){return this.currentChat&&this.currentChat.account},recipientId:function(){return this.$route.params.recipient_id},formPlaceholder:function(){return this.recipient?this.$t("chats.message_user",{nickname:this.recipient.screen_name_ui}):""},chatViewItems:function(){return $t.getView(this.currentChatMessageService)},newMessageCount:function(){return this.currentChatMessageService&&this.currentChatMessageService.newMessageCount},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===j.b.JOINED}},Object(a.c)(["currentChat","currentChatMessageService","findOpenedChatByRecipientId","mergedConfig"])),Object(a.e)({backendInteractor:function(e){return e.api.backendInteractor},mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus},mobileLayout:function(e){return"mobile"===e.interface.layoutType},currentUser:function(e){return e.users.currentUser}})),watch:{chatViewItems:function(){var e=this,t=this.bottomedOut(10);this.$nextTick((function(){t&&e.scrollDown()}))},$route:function(){this.startFetching()},mastoUserSocketStatus:function(e){e===j.b.JOINED&&this.fetchChat({isFirstFetch:!0})}},methods:{onMessageHover:function(e){var t=e.isHovered,n=e.messageChainId;this.hoveredMessageChainId=t?n:void 0},onFilesDropped:function(){var e=this;this.$nextTick((function(){e.handleResize()}))},handleVisibilityChange:function(){var e=this;this.$nextTick((function(){!document.hidden&&e.bottomedOut(10)&&e.scrollDown({forceRead:!0})}))},handleResize:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.expand,r=void 0!==n&&n,i=t.delayed,o=void 0!==i&&i;o?setTimeout((function(){e.handleResize(Ul(Ul({},t),{},{delayed:!1}))}),100):this.$nextTick((function(){var t=zl().offsetHeight,n=void 0===t?void 0:t,i=e.lastScrollPosition.offsetHeight-n;(0!==i||!e.bottomedOut()&&r)&&e.$nextTick((function(){window.scrollTo({top:window.scrollY+i})})),e.lastScrollPosition=zl()}))},scrollDown:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.behavior,n=void 0===t?"auto":t,r=e.forceRead,i=void 0!==r&&r;this.$nextTick((function(){window.scrollTo({top:document.documentElement.scrollHeight,behavior:n})})),i&&this.readChat()},readChat:function(){if(this.currentChatMessageService&&this.currentChatMessageService.maxId&&!document.hidden){var e=this.currentChatMessageService.maxId;this.$store.dispatch("readChat",{id:this.currentChat.id,lastReadId:e})}},bottomedOut:function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=window.scrollY+e,n=document.documentElement.scrollHeight-window.innerHeight;return n<=t}(e)},reachedTop:function(){return window.scrollY<=0},cullOlderCheck:function(){var e=this;window.setTimeout((function(){e.bottomedOut(10)&&e.$store.dispatch("cullOlderMessages",e.currentChatMessageService.chatId)}),5e3)},handleScroll:pa()((function(){var e=this;this.currentChat&&(this.reachedTop()?this.fetchChat({maxId:this.currentChatMessageService.minId}):this.bottomedOut(10)?(this.jumpToBottomButtonVisible=!1,this.cullOlderCheck(),this.newMessageCount>0&&window.setTimeout((function(){e.$el&&e.readChat()}),1500)):this.jumpToBottomButtonVisible=!0)}),200),handleScrollUp:function(e){var t,n,r=zl();window.scrollTo({top:(t=e,n=r,t.scrollTop+(n.scrollHeight-t.scrollHeight))})},fetchChat:function(e){var t=this,n=e.isFirstFetch,r=void 0!==n&&n,i=e.fetchLatest,o=void 0!==i&&i,s=e.maxId,a=this.currentChatMessageService;if(a&&(!o||!this.streamingEnabled)){var c=a.chatId,l=!!s,u=o&&a.maxId;return this.backendInteractor.chatMessages({id:c,maxId:s,sinceId:u}).then((function(e){r&&$t.clear(a);var n=zl();t.$store.dispatch("addChatMessages",{chatId:c,messages:e}).then((function(){t.$nextTick((function(){l&&t.handleScrollUp(n),!(document.documentElement.scrollHeight>window.innerHeight)&&e.length>0&&t.fetchChat({maxId:t.currentChatMessageService.minId})}))}))}))}},startFetching:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.findOpenedChatByRecipientId(e.recipientId)){t.next=12;break}return t.prev=2,t.next=5,e.backendInteractor.getOrCreateChat({accountId:e.recipientId});case 5:n=t.sent,t.next=12;break;case 8:t.prev=8,t.t0=t.catch(2),console.error("Error creating or getting a chat",t.t0),e.errorLoadingChat=!0;case 12:n&&(e.$nextTick((function(){e.scrollDown({forceRead:!0})})),e.$store.dispatch("addOpenedChat",{chat:n}),e.doStartFetching());case 13:case"end":return t.stop()}}),t,null,[[2,8]])})))()},doStartFetching:function(){var e=this;this.$store.dispatch("startFetchingCurrentChat",{fetcher:function(){return Object(je.a)((function(){return e.fetchChat({fetchLatest:!0})}),5e3)}}),this.fetchChat({isFirstFetch:!0})},handleAttachmentPosting:function(){var e=this;this.$nextTick((function(){e.handleResize(),e.scrollDown({forceRead:!0})}))},sendMessage:function(e){var t=this,n=e.status,r=e.media,i=e.idempotencyKey,o={id:this.currentChat.id,content:n,idempotencyKey:i};r[0]&&(o.mediaId=r[0].id);var s=function(e){var t=e.content,n=e.chatId,r=e.attachments,i=e.userId,o=e.idempotencyKey,s={content:t,chat_id:n,created_at:new Date,id:"".concat((new Date).getTime()),attachments:r,account_id:i,idempotency_key:o,emojis:[],pending:!0,isNormalized:!0};return r[0]&&(s.attachment=r[0]),s}({attachments:r,chatId:this.currentChat.id,content:n,userId:this.currentUser.id,idempotencyKey:i});return this.$store.dispatch("addChatMessages",{chatId:this.currentChat.id,messages:[s]}).then((function(){t.handleAttachmentPosting()})),this.doSendMessage({params:o,fakeMessage:s,retriesLeft:10})},doSendMessage:function(e){var t=this,n=e.params,r=e.fakeMessage,i=e.retriesLeft,o=void 0===i?10:i;if(!(o<=0))return this.backendInteractor.sendChatMessage(n).then((function(e){return t.$store.dispatch("addChatMessages",{chatId:t.currentChat.id,updateMaxId:!1,messages:[Ul(Ul({},e),{},{fakeId:r.id})]}),e})).catch((function(e){return console.error("Error sending message",e),t.$store.dispatch("handleMessageError",{chatId:t.currentChat.id,fakeId:r.id,isRetry:10!==o}),(e.statusCode>=500&&e.statusCode<600||"Failed to fetch"===e.message)&&(t.messageRetriers[r.id]=setTimeout((function(){t.doSendMessage({params:n,fakeMessage:r,retriesLeft:o-1})}),1e3*Math.pow(2,10-o))),{}})),Promise.resolve(r)},goBack:function(){this.$router.push({name:"chats",params:{username:this.currentUser.screen_name}})}}};n(581);var El=Fn()(Fl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("ChatMessage"),l=Object(wt.J)("PostStatusForm");return Object(wt.D)(),Object(wt.j)("div",cl,[Object(wt.k)("div",ll,[Object(wt.k)("div",ul,[Object(wt.k)("div",dl,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})]),Object(wt.k)("div",pl,[Object(wt.m)(a,{user:e.recipient,"with-avatar":!0},null,8,["user"])])],512),Object(wt.k)("div",{class:"message-list",style:Object(wt.x)({height:e.scrollableContainerHeight})},[e.errorLoadingChat?(Object(wt.D)(),Object(wt.j)("div",hl,[Object(wt.k)("div",bl,Object(wt.O)(e.$t("chats.error_loading_chat")),1)])):(Object(wt.D)(!0),Object(wt.j)(wt.a,{key:0},Object(wt.H)(e.chatViewItems,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,author:e.recipient,"chat-view-item":t,"hovered-message-chain":t.messageChainId===e.hoveredMessageChainId,onHover:e.onMessageHover},null,8,["author","chat-view-item","hovered-message-chain","onHover"]))),128))],4),Object(wt.k)("div",ml,[Object(wt.k)("div",{class:Object(wt.w)(["jump-to-bottom-button",{visible:e.jumpToBottomButtonVisible}]),onClick:t[1]||(t[1]=t=>e.scrollDown({behavior:"smooth"}))},[Object(wt.k)("span",null,[Object(wt.m)(s,{icon:"chevron-down"}),e.newMessageCount?(Object(wt.D)(),Object(wt.j)("div",fl,Object(wt.O)(e.newMessageCount),1)):Object(wt.i)("",!0)])],2),Object(wt.m)(l,{"disable-subject":!0,"disable-scope-selector":!0,"disable-notice":!0,"disable-lock-warning":!0,"disable-polls":!0,"disable-sensitivity-checkbox":!0,"disable-submit":e.errorLoadingChat||!e.currentChat,"disable-preview":!0,"optimistic-posting":!0,"post-handler":e.sendMessage,"submit-on-enter":!e.mobileLayout,"preserve-focus":!e.mobileLayout,"auto-focus":!e.mobileLayout,placeholder:e.formPlaceholder,"file-limit":1,"max-height":"160","emoji-picker-placement":"top",onResize:e.handleResize},null,8,["disable-submit","post-handler","submit-on-enter","preserve-focus","auto-focus","placeholder","onResize"])],512)],512)])])}]]);const Ll={key:0,class:"user-profile panel panel-default"},Rl={key:0,class:"user-profile-fields"},Al=["title"],Nl=["title"],Bl=["label","disabled"],Vl=["label","disabled"],Hl={key:1,class:"panel user-profile-placeholder"},ql={class:"panel-heading"},Jl={class:"title"},Wl={class:"panel-body"},Yl={key:0};const Gl={class:"follow-card-content-container"},Kl={key:0,class:"faint"},Xl={key:0,class:"follow-card-follow-button"};var Zl=n(143),Ql=n(140),eu={props:["user","noFollowsYou"],components:{BasicUserCard:Qc.a,RemoteFollow:Zl.a,FollowButton:Ql.a},computed:{isMe:function(){return this.$store.state.users.currentUser.id===this.user.id},loggedIn:function(){return this.$store.state.users.currentUser},relationship:function(){return this.$store.getters.relationship(this.user.id)}}};n(582);var tu=Fn()(eu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("RemoteFollow"),a=Object(wt.J)("FollowButton"),c=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(c,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",Gl,[e.isMe||!e.noFollowsYou&&e.relationship.followed_by?(Object(wt.D)(),Object(wt.j)("span",Kl,Object(wt.O)(e.isMe?e.$t("user_card.its_you"):e.$t("user_card.follows_you")),1)):Object(wt.i)("",!0),e.loggedIn?e.isMe?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:2,relationship:e.relationship,"label-following":e.$t("user_card.follow_unfollow"),class:"follow-card-follow-button",user:e.user},null,8,["relationship","label-following","user"])):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[e.relationship.following?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Xl,[Object(wt.m)(s,{user:e.user},null,8,["user"])]))],64))])]),_:1},8,["user"])}]]),nu=n(300),ru=n.n(nu),iu=n(301);n(583);function ou(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function su(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ou(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ou(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.r);var au=function(e){var t=e.fetch,n=e.select,r=e.unmounted,i=e.childPropName,o=void 0===i?"entries":i,s=e.additionalPropNames,a=void 0===s?[]:s;return function(e){return{props:Object.keys(Object(iu.a)(e)).filter((function(e){return e!==o})).concat(a),data:function(){return{loading:!1,bottomedOut:!1,error:!1,entries:[]}},created:function(){window.addEventListener("scroll",this.scrollLoad),0===this.entries.length&&this.fetchEntries()},unmounted:function(){window.removeEventListener("scroll",this.scrollLoad),r&&r(this.$props,this.$store)},methods:{updateEntries:function(){this.entries=n(this.$props,this.$store)||[]},fetchEntries:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(t){e.loading=!1,e.bottomedOut=ru()(t)})).catch((function(){e.loading=!1,e.error=!0})).finally((function(){e.updateEntries()})))},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.loading&&!1===this.bottomedOut&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchEntries()}},render:function(){var t,n=su(su({},this.$props),{},h()({},o,this.entries)),r=this.$slots;return Object(wt.m)("div",{class:"with-load-more"},[Object(wt.m)(e,n,(t=r,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!Object(wt.t)(t)?r:{default:function(){return[r]}})),Object(wt.m)("div",{class:"with-load-more-footer"},[this.error&&Object(wt.m)("button",{onClick:this.fetchEntries,class:"button-unstyled -link -fullwidth alert error"},[this.$t("general.generic_error")]),!this.error&&this.loading&&Object(wt.m)(sn.a,{spin:!0,icon:"circle-notch"},null),!this.error&&!this.loading&&!this.bottomedOut&&Object(wt.m)("a",{onClick:this.fetchEntries},[this.$t("general.more")])])])}}}};Tn.c.add(In.r);var cu=au({fetch:function(e,t){return t.dispatch("fetchFollowers",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"followerIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFollowers",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),lu=au({fetch:function(e,t){return t.dispatch("fetchFriends",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"friendIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFriends",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),uu={data:function(){return{error:!1,userId:null,tab:"statuses",footerRef:null}},created:function(){var e=this.$route.params;this.load(e.name||e.id),this.tab=qt()(this.$route,"query.tab","statuses")},unmounted:function(){this.stopFetching()},computed:{timeline:function(){return this.$store.state.statuses.timelines.user},favorites:function(){return this.$store.state.statuses.timelines.favorites},media:function(){return this.$store.state.statuses.timelines.media},isUs:function(){return this.userId&&this.$store.state.users.currentUser.id&&this.userId===this.$store.state.users.currentUser.id},user:function(){return this.$store.getters.findUser(this.userId)},isExternal:function(){return"external-user-profile"===this.$route.name},followsTabVisible:function(){return this.isUs||!this.user.hide_follows},followersTabVisible:function(){return this.isUs||!this.user.hide_followers}},methods:{setFooterRef:function(e){this.footerRef=e},load:function(e){var t=this,n=function(e,n){n!==t.$store.state.statuses.timelines[e].userId&&t.$store.commit("clearTimeline",{timeline:e}),t.$store.dispatch("startFetchingTimeline",{timeline:e,userId:n})},r=function(e){t.userId=e,n("user",e),n("media",e),t.isUs&&n("favorites",e),t.$store.dispatch("fetchPinnedStatuses",e)};this.userId=null,this.error=!1;var i=this.$store.getters.findUser(e);i?r(i.id):this.$store.dispatch("fetchUser",e).then((function(e){var t=e.id;return r(t)})).catch((function(e){var n=qt()(e,"error.error");t.error="No user with such user_id"===n?t.$t("user_profile.profile_does_not_exist"):n||t.$t("user_profile.profile_loading_error")}))},stopFetching:function(){this.$store.dispatch("stopFetchingTimeline","user"),this.$store.dispatch("stopFetchingTimeline","favorites"),this.$store.dispatch("stopFetchingTimeline","media")},switchUser:function(e){this.stopFetching(),this.load(e)},onTabSwitch:function(e){this.tab=e,this.$router.replace({query:{tab:e}})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")}},watch:{"$route.params.id":function(e){e&&this.switchUser(e)},"$route.params.name":function(e){e&&this.switchUser(e)},"$route.query":function(e){this.tab=e.tab||"statuses"}},components:{UserCard:jr.a,Timeline:Ya,FollowerList:cu,FriendList:lu,FollowCard:tu,TabSwitcher:bc.a,Conversation:za,RichContent:Ac.a}};n(584);var du=Fn()(uu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("RichContent"),c=Object(wt.J)("Timeline"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("FriendList"),d=Object(wt.J)("FollowerList"),p=Object(wt.J)("tab-switcher"),h=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",null,[e.user?(Object(wt.D)(),Object(wt.j)("div",Ll,[Object(wt.m)(s,{"user-id":e.userId,switcher:!0,selected:e.timeline.viewing,"allow-zooming-avatar":!0,rounded:"top"},null,8,["user-id","selected"]),e.user.fields_html&&e.user.fields_html.length>0?(Object(wt.D)(),Object(wt.j)("div",Rl,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.user.fields_html,(t,n)=>(Object(wt.D)(),Object(wt.j)("dl",{key:n,class:"user-profile-field"},[Object(wt.k)("dt",{title:e.user.fields_text[n].name,class:"user-profile-field-name"},[Object(wt.m)(a,{html:t.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,Al),Object(wt.k)("dd",{title:e.user.fields_text[n].value,class:"user-profile-field-value"},[Object(wt.m)(a,{html:t.value,emoji:e.user.emoji},null,8,["html","emoji"])],8,Nl)]))),128))])):Object(wt.i)("",!0),Object(wt.m)(p,{"active-tab":e.tab,"render-only-focused":!0,"on-switch":e.onTabSwitch},{default:Object(wt.V)(()=>[Object(wt.m)(c,{key:"statuses",label:e.$t("user_card.statuses"),count:e.user.statuses_count,embedded:!0,title:e.$t("user_profile.timeline_title"),timeline:e.timeline,"timeline-name":"user","user-id":e.userId,"pinned-status-ids":e.user.pinnedStatusIds,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","count","title","timeline","user-id","pinned-status-ids","footerSlipgate"]),e.followsTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followees",label:e.$t("user_card.followees"),disabled:!e.user.friends_count},[Object(wt.m)(u,{"user-id":e.userId},{item:Object(wt.V)(({item:e})=>[Object(wt.m)(l,{user:e},null,8,["user"])]),_:1},8,["user-id"])],8,Bl)):Object(wt.i)("",!0),e.followersTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followers",label:e.$t("user_card.followers"),disabled:!e.user.followers_count},[Object(wt.m)(d,{"user-id":e.userId},{item:Object(wt.V)(({item:t})=>[Object(wt.m)(l,{user:t,"no-follows-you":e.isUs},null,8,["user","no-follows-you"])]),_:1},8,["user-id"])],8,Vl)):Object(wt.i)("",!0),Object(wt.m)(c,{key:"media",label:e.$t("user_card.media"),disabled:!e.media.visibleStatuses.length,embedded:!0,title:e.$t("user_card.media"),"timeline-name":"media",timeline:e.media,"user-id":e.userId,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","user-id","footerSlipgate"]),e.isUs?(Object(wt.D)(),Object(wt.h)(c,{key:"favorites",label:e.$t("user_card.favorites"),disabled:!e.favorites.visibleStatuses.length,embedded:!0,title:e.$t("user_card.favorites"),"timeline-name":"favorites",timeline:e.favorites,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","footerSlipgate"])):Object(wt.i)("",!0)]),_:1},8,["active-tab","on-switch"]),Object(wt.k)("div",{class:"panel-footer",ref:e.setFooterRef},null,512)])):(Object(wt.D)(),Object(wt.j)("div",Hl,[Object(wt.k)("div",ql,[Object(wt.k)("div",Jl,Object(wt.O)(e.$t("settings.profile_tab")),1)]),Object(wt.k)("div",Wl,[e.error?(Object(wt.D)(),Object(wt.j)("span",Yl,Object(wt.O)(e.error),1)):(Object(wt.D)(),Object(wt.h)(h,{key:1,spin:"",icon:"circle-notch"}))])]))])}]]);const pu={class:"panel panel-default"},hu={class:"panel-heading"},bu={class:"title"},mu={class:"search-input-container"},fu=["placeholder"],Ou={key:0,class:"text-center loading-icon"},ju={key:1},gu={class:"search-nav-heading"},vu=["label"],yu=["label"],wu=["label"],ku={class:"panel-body"},_u={key:0},Su={key:0,class:"search-result-heading"},Cu={key:1},Pu={key:0,class:"search-result-heading"},xu={key:2},Du={key:0,class:"search-result-heading"},Tu={class:"hashtag"},Iu={key:0},$u={key:0},zu={key:1},Mu={key:0,class:"count"},Uu=Object(wt.k)("div",{class:"search-result-footer text-center panel-footer faint"},null,-1);Tn.c.add(In.r,In.cb);var Fu={components:{FollowCard:tu,Conversation:za,Status:Ns.default,TabSwitcher:bc.a},props:["query"],data:function(){return{loaded:!1,loading:!1,searchTerm:this.query||"",userIds:[],statuses:[],hashtags:[],currenResultTab:"statuses"}},computed:{users:function(){var e=this;return this.userIds.map((function(t){return e.$store.getters.findUser(t)}))},visibleStatuses:function(){var e=this.$store.state.statuses.allStatusesObject;return this.statuses.filter((function(t){return e[t.id]&&!e[t.id].deleted}))}},mounted:function(){this.search(this.query)},watch:{query:function(e){this.searchTerm=e,this.search(e)}},methods:{newQuery:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.statuses=[],this.hashtags=[],this.$refs.searchInput.blur(),this.$store.dispatch("search",{q:e,resolve:!0}).then((function(e){t.loading=!1,t.userIds=he()(e.accounts,"id"),t.statuses=e.statuses,t.hashtags=e.hashtags,t.currenResultTab=t.getActiveTab(),t.loaded=!0}))):this.loading=!1},resultCount:function(e){var t=this[e].length;return 0===t?"":" (".concat(t,")")},onResultTabSwitch:function(e){this.currenResultTab=e},getActiveTab:function(){return this.visibleStatuses.length>0?"statuses":this.users.length>0?"people":this.hashtags.length>0?"hashtags":"statuses"},lastHistoryRecord:function(e){return e.history&&e.history[0]}}};n(585);var Eu=Fn()(Fu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("tab-switcher"),c=Object(wt.J)("Status"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",pu,[Object(wt.k)("div",hu,[Object(wt.k)("div",bu,Object(wt.O)(e.$t("nav.search")),1)]),Object(wt.k)("div",mu,[Object(wt.W)(Object(wt.k)("input",{ref:"searchInput","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchTerm=t),class:"search-input",placeholder:e.$t("nav.search"),onKeyup:t[1]||(t[1]=Object(wt.X)(t=>e.newQuery(e.searchTerm),["enter"]))},null,40,fu),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"btn button-default search-button",type:"submit",onClick:t[2]||(t[2]=t=>e.newQuery(e.searchTerm))},[Object(wt.m)(s,{icon:"search"})])]),e.loading?(Object(wt.D)(),Object(wt.j)("div",Ou,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"lg"})])):e.loaded?(Object(wt.D)(),Object(wt.j)("div",ju,[Object(wt.k)("div",gu,[Object(wt.m)(a,{ref:"tabSwitcher","on-switch":e.onResultTabSwitch,"active-tab":e.currenResultTab},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"statuses",label:e.$t("user_card.statuses")+e.resultCount("visibleStatuses")},null,8,vu),Object(wt.k)("span",{key:"people",label:e.$t("search.people")+e.resultCount("users")},null,8,yu),Object(wt.k)("span",{key:"hashtags",label:e.$t("search.hashtags")+e.resultCount("hashtags")},null,8,wu)]),_:1},8,["on-switch","active-tab"])])])):Object(wt.i)("",!0),Object(wt.k)("div",ku,["statuses"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",_u,[0===e.visibleStatuses.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Su,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.visibleStatuses,e=>(Object(wt.D)(),Object(wt.h)(c,{key:e.id,collapsable:!1,expandable:!1,compact:!1,class:"search-result",statusoid:e,"no-heading":!1},null,8,["statusoid"]))),128))])):"people"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",Cu,[0===e.users.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Pu,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(l,{key:e.id,user:e,class:"list-item search-result"},null,8,["user"]))),128))])):"hashtags"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",xu,[0===e.hashtags.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Du,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.hashtags,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.url,class:"status trend search-result"},[Object(wt.k)("div",Tu,[Object(wt.m)(u,{to:{name:"tag-timeline",params:{tag:t.name}}},{default:Object(wt.V)(()=>[Object(wt.l)(" #"+Object(wt.O)(t.name),1)]),_:2},1032,["to"]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Iu,[1==e.lastHistoryRecord(t).accounts?(Object(wt.D)(),Object(wt.j)("span",$u,Object(wt.O)(e.$t("search.person_talking",{count:e.lastHistoryRecord(t).accounts})),1)):(Object(wt.D)(),Object(wt.j)("span",zu,Object(wt.O)(e.$t("search.people_talking",{count:e.lastHistoryRecord(t).accounts})),1))])):Object(wt.i)("",!0)]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Mu,Object(wt.O)(e.lastHistoryRecord(t).uses),1)):Object(wt.i)("",!0)]))),128))])):Object(wt.i)("",!0)]),Uu])}]]);const Lu={class:"settings panel panel-default"},Ru={class:"panel-heading"},Au={class:"panel-body"},Nu={class:"container"},Bu={class:"text-fields"},Vu={class:"form--label",for:"sign-up-username"},Hu=["disabled","placeholder"],qu={key:0,class:"form-error"},Ju={key:0},Wu={class:"form--label",for:"sign-up-fullname"},Yu=["disabled","placeholder"],Gu={key:1,class:"form-error"},Ku={key:0},Xu={class:"form--label",for:"email"},Zu=["disabled"],Qu={key:2,class:"form-error"},ed={key:0},td={class:"form-group"},nd={class:"form--label",for:"bio"},rd=["disabled","placeholder"],id={class:"form--label",for:"sign-up-password"},od=["disabled"],sd={key:3,class:"form-error"},ad={key:0},cd={class:"form--label",for:"sign-up-password-confirmation"},ld=["disabled"],ud={key:4,class:"form-error"},dd={key:0},pd={key:1},hd={key:5,class:"form-group"},bd={class:"form--label",for:"reason"},md=["disabled","placeholder"],fd={key:6,id:"captcha-group",class:"form-group"},Od={class:"form--label",for:"captcha-label"},jd=["src"],gd=["disabled"],vd={key:7,class:"form-group"},yd={for:"token"},wd={class:"form-group"},kd=["disabled"],_d=["innerHTML"],Sd={key:0,class:"form-group"},Cd={class:"alert error"};var Pd=n(333),xd=n(62);function Dd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Td(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Id={setup:function(){return{v$:Object(Pd.a)()}},data:function(){return{user:{email:"",fullname:"",username:"",password:"",confirm:"",reason:"",language:""},captcha:{}}},components:{InterfaceLanguageSwitcher:n(174).a},validations:function(){var e=this;return{user:{email:{required:Object(xd.b)((function(){return e.accountActivationRequired}))},username:{required:xd.a},fullname:{required:xd.a},password:{required:xd.a},confirm:{required:xd.a,sameAs:Object(xd.c)(this.user.password)},reason:{required:Object(xd.b)((function(){return e.accountApprovalRequired}))},language:{}}}},created:function(){(!this.registrationOpen&&!this.token||this.signedIn)&&this.$router.push({name:"root"}),this.setCaptcha()},computed:Td({token:function(){return this.$route.params.token},bioPlaceholder:function(){return this.replaceNewlines(this.$t("registration.bio_placeholder"))},reasonPlaceholder:function(){return this.replaceNewlines(this.$t("registration.reason_placeholder"))}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},signedIn:function(e){return!!e.users.currentUser},isPending:function(e){return e.users.signUpPending},serverValidationErrors:function(e){return e.users.signUpErrors},termsOfService:function(e){return e.instance.tos},accountActivationRequired:function(e){return e.instance.accountActivationRequired},accountApprovalRequired:function(e){return e.instance.accountApprovalRequired}})),methods:Td(Td({},Object(a.b)(["signUp","getCaptcha"])),{},{submit:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.user.nickname=e.user.username,e.user.token=e.token,e.user.captcha_solution=e.captcha.solution,e.user.captcha_token=e.captcha.token,e.user.captcha_answer_data=e.captcha.answer_data,e.user.language&&(e.user.language=Cl.a.internalToBackendLocale(e.user.language)),e.v$.$touch(),e.v$.$invalid){t.next=18;break}return t.prev=8,t.next=11,e.signUp(e.user);case 11:e.$router.push({name:"friends"}),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(8),console.warn("Registration failed: ",t.t0),e.setCaptcha();case 18:case"end":return t.stop()}}),t,null,[[8,14]])})))()},setCaptcha:function(){var e=this;this.getCaptcha().then((function(t){e.captcha=t}))},replaceNewlines:function(e){return e.replace(/\s*\n\s*/g," \n")}})};n(587);var $d=Fn()(Id,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("interface-language-switcher");return Object(wt.D)(),Object(wt.j)("div",Lu,[Object(wt.k)("div",Ru,Object(wt.O)(e.$t("registration.registration")),1),Object(wt.k)("div",Au,[Object(wt.k)("form",{class:"registration-form",onSubmit:t[10]||(t[10]=Object(wt.Y)(t=>e.submit(e.user),["prevent"]))},[Object(wt.k)("div",Nu,[Object(wt.k)("div",Bu,[Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.username.$error}])},[Object(wt.k)("label",Vu,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-username","onUpdate:modelValue":t[0]||(t[0]=t=>e.v$.user.username.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.username_placeholder")},null,8,Hu),[[wt.S,e.v$.user.username.$model,void 0,{trim:!0}]])],2),e.v$.user.username.$dirty?(Object(wt.D)(),Object(wt.j)("div",qu,[Object(wt.k)("ul",null,[e.v$.user.username.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ju,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.username_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.fullname.$error}])},[Object(wt.k)("label",Wu,Object(wt.O)(e.$t("registration.fullname")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-fullname","onUpdate:modelValue":t[1]||(t[1]=t=>e.v$.user.fullname.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.fullname_placeholder")},null,8,Yu),[[wt.S,e.v$.user.fullname.$model,void 0,{trim:!0}]])],2),e.v$.user.fullname.$dirty?(Object(wt.D)(),Object(wt.j)("div",Gu,[Object(wt.k)("ul",null,[e.v$.user.fullname.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ku,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.fullname_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.email.$error}])},[Object(wt.k)("label",Xu,Object(wt.O)(e.$t("registration.email")),1),Object(wt.W)(Object(wt.k)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=t=>e.v$.user.email.$model=t),disabled:e.isPending,class:"form-control",type:"email"},null,8,Zu),[[wt.S,e.v$.user.email.$model]])],2),e.v$.user.email.$dirty?(Object(wt.D)(),Object(wt.j)("div",Qu,[Object(wt.k)("ul",null,[e.v$.user.email.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ed,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.email_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",td,[Object(wt.k)("label",nd,Object(wt.O)(e.$t("registration.bio"))+" ("+Object(wt.O)(e.$t("general.optional"))+")",1),Object(wt.W)(Object(wt.k)("textarea",{id:"bio","onUpdate:modelValue":t[3]||(t[3]=t=>e.user.bio=t),disabled:e.isPending,class:"form-control",placeholder:e.bioPlaceholder},null,8,rd),[[wt.S,e.user.bio]])]),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.password.$error}])},[Object(wt.k)("label",id,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password","onUpdate:modelValue":t[4]||(t[4]=t=>e.user.password=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,od),[[wt.S,e.user.password]])],2),e.v$.user.password.$dirty?(Object(wt.D)(),Object(wt.j)("div",sd,[Object(wt.k)("ul",null,[e.v$.user.password.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ad,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.confirm.$error}])},[Object(wt.k)("label",cd,Object(wt.O)(e.$t("registration.password_confirm")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password-confirmation","onUpdate:modelValue":t[5]||(t[5]=t=>e.user.confirm=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,ld),[[wt.S,e.user.confirm]])],2),e.v$.user.confirm.$dirty?(Object(wt.D)(),Object(wt.j)("div",ud,[Object(wt.k)("ul",null,[e.v$.user.confirm.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",dd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_required")),1)])),e.v$.user.confirm.sameAsPassword?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",pd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_match")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.language.$error}])},[Object(wt.m)(s,{for:"email-language","prompt-text":e.$t("registration.email_language"),language:e.v$.user.language.$model,"set-language":t=>e.v$.user.language.$model=t},null,8,["prompt-text","language","set-language"])],2),e.accountApprovalRequired?(Object(wt.D)(),Object(wt.j)("div",hd,[Object(wt.k)("label",bd,Object(wt.O)(e.$t("registration.reason")),1),Object(wt.W)(Object(wt.k)("textarea",{id:"reason","onUpdate:modelValue":t[6]||(t[6]=t=>e.user.reason=t),disabled:e.isPending,class:"form-control",placeholder:e.reasonPlaceholder},null,8,md),[[wt.S,e.user.reason]])])):Object(wt.i)("",!0),"none"!=e.captcha.type?(Object(wt.D)(),Object(wt.j)("div",fd,[Object(wt.k)("label",Od,Object(wt.O)(e.$t("registration.captcha")),1),["kocaptcha","native"].includes(e.captcha.type)?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("img",{src:e.captcha.url,onClick:t[7]||(t[7]=(...t)=>e.setCaptcha&&e.setCaptcha(...t))},null,8,jd),Object(wt.k)("sub",null,Object(wt.O)(e.$t("registration.new_captcha")),1),Object(wt.W)(Object(wt.k)("input",{id:"captcha-answer","onUpdate:modelValue":t[8]||(t[8]=t=>e.captcha.solution=t),disabled:e.isPending,class:"form-control",type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},null,8,gd),[[wt.S,e.captcha.solution]])],64)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),e.token?(Object(wt.D)(),Object(wt.j)("div",vd,[Object(wt.k)("label",yd,Object(wt.O)(e.$t("registration.token")),1),Object(wt.W)(Object(wt.k)("input",{id:"token","onUpdate:modelValue":t[9]||(t[9]=t=>e.token=t),disabled:"true",class:"form-control",type:"text"},null,512),[[wt.S,e.token]])])):Object(wt.i)("",!0),Object(wt.k)("div",wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("registration.register")),9,kd)])]),Object(wt.k)("div",{class:"terms-of-service",innerHTML:e.termsOfService},null,8,_d)]),e.serverValidationErrors.length?(Object(wt.D)(),Object(wt.j)("div",Sd,[Object(wt.k)("div",Cd,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.serverValidationErrors,e=>(Object(wt.D)(),Object(wt.j)("span",{key:e},Object(wt.O)(e),1))),128))])])):Object(wt.i)("",!0)],32)])])}]]);const zd={class:"settings panel panel-default"},Md={class:"panel-heading"},Ud={class:"panel-body"},Fd={class:"container"},Ed={key:0},Ld={key:0},Rd={key:1},Ad={key:1},Nd={key:0},Bd={class:"form-group text-center"},Vd={key:2},Hd={key:0,class:"password-reset-required error"},qd={class:"form-group"},Jd=["disabled","placeholder"],Wd={class:"form-group"},Yd=["disabled"],Gd={key:3,class:"alert error notice-dismissible"};var Kd=function(e){var t=e.instance,n={email:e.email},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return"".concat(e,"&").concat(r)}),""),i="".concat(t).concat("/auth/password","?").concat(r);return window.fetch(i,{method:"POST"})};function Xd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Qd={data:function(){return{user:{email:""},isPending:!1,success:!1,throttled:!1,error:null}},computed:Zd(Zd({},Object(a.e)({signedIn:function(e){return!!e.users.currentUser},instance:function(e){return e.instance}})),{},{mailerEnabled:function(){return this.instance.mailerEnabled}}),created:function(){this.signedIn&&this.$router.push({name:"root"})},props:{passwordResetRequested:{default:!1,type:Boolean}},methods:{dismissError:function(){this.error=null},submit:function(){var e=this;this.isPending=!0;var t=this.user.email,n=this.instance.server;Kd({instance:n,email:t}).then((function(t){var n=t.status;e.isPending=!1,e.user.email="",204===n?(e.success=!0,e.error=null):429===n&&(e.throttled=!0,e.error=e.$t("password_reset.too_many_requests"))})).catch((function(){e.isPending=!1,e.user.email="",e.error=e.$t("general.generic_error")}))}}};n(588);var ep=Fn()(Qd,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",zd,[Object(wt.k)("div",Md,Object(wt.O)(e.$t("password_reset.password_reset")),1),Object(wt.k)("div",Ud,[Object(wt.k)("form",{class:"password-reset-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Fd,[e.mailerEnabled?e.success||e.throttled?(Object(wt.D)(),Object(wt.j)("div",Ad,[e.success?(Object(wt.D)(),Object(wt.j)("p",Nd,Object(wt.O)(e.$t("password_reset.check_email")),1)):Object(wt.i)("",!0),Object(wt.k)("div",Bd,[Object(wt.m)(s,{to:{name:"root"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.return_home")),1)]),_:1})])])):(Object(wt.D)(),Object(wt.j)("div",Vd,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Hd,Object(wt.O)(e.$t("password_reset.password_reset_required")),1)):Object(wt.i)("",!0),Object(wt.k)("p",null,Object(wt.O)(e.$t("password_reset.instruction")),1),Object(wt.k)("div",qd,[Object(wt.W)(Object(wt.k)("input",{ref:"email","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.email=t),disabled:e.isPending,placeholder:e.$t("password_reset.placeholder"),class:"form-control",type:"input"},null,8,Jd),[[wt.S,e.user.email]])]),Object(wt.k)("div",Wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default btn-block"},Object(wt.O)(e.$t("settings.save")),9,Yd)])])):(Object(wt.D)(),Object(wt.j)("div",Ed,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Ld,Object(wt.O)(e.$t("password_reset.password_reset_required_but_mailer_is_disabled")),1)):(Object(wt.D)(),Object(wt.j)("p",Rd,Object(wt.O)(e.$t("password_reset.password_reset_disabled")),1))])),e.error?(Object(wt.D)(),Object(wt.j)("p",Gd,[Object(wt.k)("span",null,Object(wt.O)(e.error),1),Object(wt.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.dismissError(),["prevent"]))},[Object(wt.m)(a,{icon:"times"})])])):Object(wt.i)("",!0)])],32)])])}]]);const tp={class:"settings panel panel-default"},np={class:"panel-heading"},rp={class:"title"},ip={class:"panel-body"};const op={class:"follow-request-card-content-container"};var sp={props:["user"],components:{BasicUserCard:Qc.a},methods:{findFollowRequestNotificationId:function(){var e=this,t=Object(W.e)(this.$store).find((function(t){return t.from_profile.id===e.user.id&&"follow_request"===t.type}));return t&&t.id},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user);var e=this.findFollowRequestNotificationId();this.$store.dispatch("markSingleNotificationAsSeen",{id:e}),this.$store.dispatch("updateNotification",{id:e,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this,t=this.findFollowRequestNotificationId();this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:t}),e.$store.dispatch("removeFollowRequest",e.user)}))}}};n(589);var ap={components:{FollowRequestCard:Fn()(sp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(s,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",op,[Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.approveUser&&e.approveUser(...t))},Object(wt.O)(e.$t("user_card.approve")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.denyUser&&e.denyUser(...t))},Object(wt.O)(e.$t("user_card.deny")),1)])]),_:1},8,["user"])}]])},computed:{requests:function(){return this.$store.state.api.followRequests}}};var cp=Fn()(ap,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowRequestCard");return Object(wt.D)(),Object(wt.j)("div",tp,[Object(wt.k)("div",np,[Object(wt.k)("div",rp,Object(wt.O)(e.$t("nav.friend_requests")),1)]),Object(wt.k)("div",ip,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.requests,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);var lp={props:["code"],mounted:function(){var e=this;if(this.code){var t=this.$store.state.oauth,n=t.clientId,r=t.clientSecret;ze.getToken({clientId:n,clientSecret:r,instance:this.$store.state.instance.server,code:this.code}).then((function(t){e.$store.commit("setToken",t.access_token),e.$store.dispatch("loginUser",t.access_token),e.$router.push({name:"friends"})}))}}};var up=Fn()(lp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("h1",null,"...")}]]);const dp={class:"panel panel-default"},pp={class:"panel-heading"},hp={class:"panel-body"};var bp={components:{FollowCard:tu},data:function(){return{users:[]}},mounted:function(){this.getWhoToFollow()},methods:{showWhoToFollow:function(e){var t=this;e.forEach((function(e,n){t.$store.state.api.backendInteractor.fetchUser({id:e.acct}).then((function(e){e.error||(t.$store.commit("addNewUsers",[e]),t.users.push(e))}))}))},getWhoToFollow:function(){var e=this,t=this.$store.state.users.currentUser.credentials;t&&j.c.suggestions({credentials:t}).then((function(t){e.showWhoToFollow(t)}))}}};var mp=Fn()(bp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowCard");return Object(wt.D)(),Object(wt.j)("div",dp,[Object(wt.k)("div",pp,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1),Object(wt.k)("div",hp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);const fp={class:"column-inner"};const Op={class:"panel panel-default"},jp={class:"panel-body"},gp=["innerHTML"];var vp={computed:{content:function(){return this.$store.state.instance.tos}}};n(590);var yp=Fn()(vp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",null,[Object(wt.k)("div",Op,[Object(wt.k)("div",jp,[Object(wt.k)("div",{class:"tos-content",innerHTML:e.content},null,8,gp)])])])}]]);const wp={class:"staff-panel"},kp={class:"panel panel-default base01-background"},_p={class:"panel-heading timeline-heading base02-background"},Sp={class:"title"},Cp={class:"panel-body"};var Pp=n(334),xp=n.n(Pp);function Dp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dp(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ip={created:function(){var e=this;this.$store.state.instance.staffAccounts.forEach((function(t){return e.$store.dispatch("fetchUserIfMissing",t)}))},components:{BasicUserCard:Qc.a},computed:Tp(Tp({groupedStaffAccounts:function(){var e=he()(this.staffAccounts,this.findUser).filter((function(e){return e})),t=xp()(e,"role");return[{role:"admin",users:t.admin},{role:"moderator",users:t.moderator}].filter((function(e){return e.users}))}},Object(a.c)(["findUser"])),Object(a.e)({staffAccounts:function(e){return e.instance.staffAccounts}}))};n(591);var $p=Fn()(Ip,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.j)("div",wp,[Object(wt.k)("div",kp,[Object(wt.k)("div",_p,[Object(wt.k)("div",Sp,Object(wt.O)(e.$t("about.staff")),1)]),Object(wt.k)("div",Cp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.groupedStaffAccounts,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.role,class:"staff-group"},[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.role."+t.role)),1),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(t.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.screen_name,user:e},null,8,["user"]))),128))]))),128))])])])}]]);const zp={key:0,class:"mrf-transparency-panel"},Mp={class:"panel panel-default base01-background"},Up={class:"panel-heading timeline-heading base02-background"},Fp={class:"title"},Ep={class:"panel-body"},Lp={class:"mrf-section"},Rp=["textContent"],Ap={key:0},Np={key:1},Bp={key:0},Vp={key:1},Hp={key:2},qp={key:0},Jp={key:1},Wp={key:3},Yp={key:0},Gp={key:1},Kp={key:4},Xp={key:0},Zp={key:1},Qp={key:5},eh={key:0},th={key:1},nh={key:6},rh={key:0},ih={key:1},oh={key:7},sh={key:8},ah=["textContent"],ch={key:9},lh=["textContent"],uh={key:10};function dh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ph(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var hh=function(e,t,n){return e.map((function(e){return t[n]&&t[n][e]&&t[n][e].reason?{instance:e,reason:t[n][e].reason}:{instance:e,reason:""}}))},bh={computed:ph(ph({},Object(a.e)({federationPolicy:function(e){return qt()(e,"instance.federationPolicy")},mrfPolicies:function(e){return qt()(e,"instance.federationPolicy.mrf_policies",[])},quarantineInstances:function(e){return hh(qt()(e,"instance.federationPolicy.quarantined_instances",[]),qt()(e,"instance.federationPolicy.quarantined_instances_info",[]),"quarantined_instances")},acceptInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.accept",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"accept")},rejectInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.reject",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"reject")},ftlRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.federated_timeline_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"federated_timeline_removal")},mediaNsfwInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_nsfw",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_nsfw")},mediaRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_removal")},keywordsFtlRemoval:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.federated_timeline_removal",[])},keywordsReject:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.reject",[])},keywordsReplace:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.replace",[])}})),{},{hasInstanceSpecificPolicies:function(){return this.quarantineInstances.length||this.acceptInstances.length||this.rejectInstances.length||this.ftlRemovalInstances.length||this.mediaNsfwInstances.length||this.mediaRemovalInstances.length},hasKeywordPolicies:function(){return this.keywordsFtlRemoval.length||this.keywordsReject.length||this.keywordsReplace.length}})};n(592);var mh={components:{InstanceSpecificPanel:Yr,FeaturesPanel:ai,TermsOfServicePanel:yp,StaffPanel:$p,MRFTransparencyPanel:Fn()(bh,[["render",function(e,t,n,r,i,o){return e.federationPolicy?(Object(wt.D)(),Object(wt.j)("div",zp,[Object(wt.k)("div",Mp,[Object(wt.k)("div",Up,[Object(wt.k)("div",Fp,Object(wt.O)(e.$t("about.mrf.federation")),1)]),Object(wt.k)("div",Ep,[Object(wt.k)("div",Lp,[Object(wt.k)("h2",null,Object(wt.O)(e.$t("about.mrf.mrf_policies")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.mrf_policies_desc")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mrfPolicies,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,Rp))),128))]),e.hasInstanceSpecificPolicies?(Object(wt.D)(),Object(wt.j)("h2",Ap,Object(wt.O)(e.$t("about.mrf.simple.simple_policies")),1)):Object(wt.i)("",!0),e.acceptInstances.length?(Object(wt.D)(),Object(wt.j)("div",Np,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.accept")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.accept_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.acceptInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_accept"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Bp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Vp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.rejectInstances.length?(Object(wt.D)(),Object(wt.j)("div",Hp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.reject")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.reject_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.rejectInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_reject"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",qp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Jp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.quarantineInstances.length?(Object(wt.D)(),Object(wt.j)("div",Wp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.quarantineInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_quarantine"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Yp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Gp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.ftlRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",Kp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ftlRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_ftl_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Xp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Zp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaNsfwInstances.length?(Object(wt.D)(),Object(wt.j)("div",Qp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaNsfwInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_nsfw"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",eh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",th,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",nh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",rh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",ih,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.hasKeywordPolicies?(Object(wt.D)(),Object(wt.j)("h2",oh,Object(wt.O)(e.$t("about.mrf.keyword.keyword_policies")),1)):Object(wt.i)("",!0),e.keywordsFtlRemoval.length?(Object(wt.D)(),Object(wt.j)("div",sh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.ftl_removal")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsFtlRemoval,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,ah))),128))])])):Object(wt.i)("",!0),e.keywordsReject.length?(Object(wt.D)(),Object(wt.j)("div",ch,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.reject")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReject,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,lh))),128))])])):Object(wt.i)("",!0),e.keywordsReplace.length?(Object(wt.D)(),Object(wt.j)("div",uh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.replace")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReplace,t=>(Object(wt.D)(),Object(wt.j)("li",{key:t},Object(wt.O)(t.pattern)+" "+Object(wt.O)(e.$t("about.mrf.keyword.is_replaced_by"))+" "+Object(wt.O)(t.replacement),1))),128))])])):Object(wt.i)("",!0)])])])])):Object(wt.i)("",!0)}]])},computed:{showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent}}};var fh=Fn()(mh,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("instance-specific-panel"),a=Object(wt.J)("staff-panel"),c=Object(wt.J)("terms-of-service-panel"),l=Object(wt.J)("MRFTransparencyPanel"),u=Object(wt.J)("features-panel");return Object(wt.D)(),Object(wt.j)("div",fp,[e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(s,{key:0})):Object(wt.i)("",!0),Object(wt.m)(a),Object(wt.m)(c),Object(wt.m)(l),e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(u,{key:1})):Object(wt.i)("",!0)])}]]);const Oh={class:"panel panel-default"},jh={class:"panel-heading"},gh={class:"panel-body"},vh={key:0};var yh={data:function(){return{error:!1}},mounted:function(){this.redirect()},methods:{redirect:function(){var e=this,t=this.$route.params.username+"@"+this.$route.params.hostname;this.$store.state.api.backendInteractor.fetchUser({id:t}).then((function(t){if(t.error)e.error=!0;else{e.$store.commit("addNewUsers",[t]);var n=t.id;e.$router.replace({name:"external-user-profile",params:{id:n}})}})).catch((function(){e.error=!0}))}}};var wh,kh,_h=Fn()(yh,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Oh,[Object(wt.k)("div",jh,Object(wt.O)(e.$t("remote_user_resolver.remote_user_resolver")),1),Object(wt.k)("div",gh,[Object(wt.k)("p",null,Object(wt.O)(e.$t("remote_user_resolver.searching_for"))+" @"+Object(wt.O)(e.$route.params.username)+"@"+Object(wt.O)(e.$route.params.hostname),1),e.error?(Object(wt.D)(),Object(wt.j)("p",vh,Object(wt.O)(e.$t("remote_user_resolver.error")),1)):Object(wt.i)("",!0)])])}]]),Sh=function(e){var t=function(t,n,r){e.state.users.currentUser?r():r(e.state.instance.redirectRootNoLogin||"/main/all")},n=[{name:"root",path:"/",redirect:function(t){return(e.state.users.currentUser?e.state.instance.redirectRootLogin:e.state.instance.redirectRootNoLogin)||"/main/all"}},{name:"public-external-timeline",path:"/main/all",component:Za},{name:"public-timeline",path:"/main/public",component:Ka},{name:"friends",path:"/main/friends",component:ec,beforeEnter:t},{name:"tag-timeline",path:"/tag/:tag",component:nc},{name:"bookmarks",path:"/bookmarks",component:ic},{name:"conversation",path:"/notice/:id",component:sc,meta:{dontScroll:!0}},{name:"remote-user-profile-acct",path:"/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)",component:_h,beforeEnter:t},{name:"remote-user-profile",path:"/remote-users/:hostname/:username",component:_h,beforeEnter:t},{name:"external-user-profile",path:"/users/:id",component:du},{name:"interactions",path:"/users/:username/interactions",component:Oc,beforeEnter:t},{name:"dms",path:"/users/:username/dms",component:gc,beforeEnter:t},{name:"registration",path:"/registration",component:$d},{name:"password-reset",path:"/password-reset",component:ep,props:!0},{name:"registration-token",path:"/registration/:token",component:$d},{name:"friend-requests",path:"/friend-requests",component:cp,beforeEnter:t},{name:"notifications",path:"/:username/notifications",component:fs.default,props:function(){return{disableTeleport:!0}},beforeEnter:t},{name:"login",path:"/login",component:fr},{name:"shout-panel",path:"/shout-panel",component:Fi,props:function(){return{floating:!1}}},{name:"oauth-callback",path:"/oauth-callback",component:up,props:function(e){return{code:e.query.code}}},{name:"search",path:"/search",component:Eu,props:function(e){return{query:e.query.query}}},{name:"who-to-follow",path:"/who-to-follow",component:mp,beforeEnter:t},{name:"about",path:"/about",component:fh},{name:"user-profile",path:"/:_(users)?/:name",component:du}];return e.state.instance.pleromaChatMessagesAvailable&&(n=n.concat([{name:"chat",path:"/users/:username/chats/:recipient_id",component:El,meta:{dontScroll:!1},beforeEnter:t},{name:"chats",path:"/users/:username/chats",component:al,meta:{dontScroll:!1},beforeEnter:t}])),n},Ch=n(170),Ph=new Set([]),xh=function(e){var t=window.innerWidth-document.documentElement.clientWidth;Ch.disableBodyScroll(e,{reserveScrollBarGap:!0}),Ph.add(e),setTimeout((function(){if(Ph.size<=1){if(void 0===wh){var e=document.getElementById("nav");wh=window.getComputedStyle(e).getPropertyValue("padding-right"),e.style.paddingRight=wh?"calc(".concat(wh," + ").concat(t,"px)"):"".concat(t,"px")}if(void 0===kh){var n=document.getElementById("app_bg_wrapper");kh=window.getComputedStyle(n).getPropertyValue("right"),n.style.right=kh?"calc(".concat(kh," + ").concat(t,"px)"):"".concat(t,"px")}document.body.classList.add("scroll-locked")}}))},Dh=function(e){Ph.delete(e),setTimeout((function(){0===Ph.size&&(void 0!==wh&&(document.getElementById("nav").style.paddingRight=wh,wh=void 0),void 0!==kh&&(document.getElementById("app_bg_wrapper").style.right=kh,kh=void 0),document.body.classList.remove("scroll-locked"))})),Ch.enableBodyScroll(e)},Th={mounted:function(e,t){t.value&&xh(e)},updated:function(e,t){t.oldValue!==t.value&&(t.value?xh(e):Dh(e))},unmounted:function(e){Dh(e)}},Ih=function(e){e.directive("body-scroll-lock",Th)},$h=n(101);function zh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Mh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Uh,Fh,Eh,Lh,Rh,Ah,Nh,Bh,Vh,Hh,qh,Jh,Wh,Yh=null,Gh=function(e){var t=atob(e),n=Uint8Array.from(d()(t).map((function(e){return e.charCodeAt(0)})));return(new TextDecoder).decode(n)},Kh=(Uh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=document.getElementById("initial-results")?(Yh||(Yh=JSON.parse(document.getElementById("initial-results").textContent)),Yh):null)&&n[t]){e.next=3;break}return e.abrupt("return",window.fetch(t));case 3:return r=Gh(n[t]),i=JSON.parse(r),e.abrupt("return",{ok:!0,json:function(){return i},text:function(){return i}});case 6:case"end":return e.stop()}}),e)}))),function(e){return Uh.apply(this,arguments)}),Xh=(Fh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/api/v1/instance");case 4:if(!(r=e.sent).ok){e.next=16;break}return e.next=8,r.json();case 8:i=e.sent,o=i.max_toot_chars,a=i.pleroma.vapid_public_key,n.dispatch("setInstanceOption",{name:"textlimit",value:o}),n.dispatch("setInstanceOption",{name:"accountApprovalRequired",value:i.approval_required}),a&&n.dispatch("setInstanceOption",{name:"vapidPublicKey",value:a}),e.next=17;break;case 16:throw r;case 17:e.next=23;break;case 19:e.prev=19,e.t0=e.catch(1),console.error("Could not load instance config, potentially fatal"),console.error(e.t0);case 23:case"end":return e.stop()}}),e,null,[[1,19]])}))),function(e){return Fh.apply(this,arguments)}),Zh=(Eh=i()(s.a.mark((function e(t){var n,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.store,e.prev=1,e.next=4,window.fetch("/api/pleroma/frontend_configurations");case 4:if(!(n=e.sent).ok){e.next=12;break}return e.next=8,n.json();case 8:return r=e.sent,e.abrupt("return",r.pleroma_fe);case 12:throw n;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("Could not load backend-provided frontend config, potentially fatal"),console.error(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Eh.apply(this,arguments)}),Qh=(Lh=i()(s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,window.fetch("/static/config.json");case 3:if(!(t=e.sent).ok){e.next=8;break}return e.abrupt("return",t.json());case 8:throw t;case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(0),console.warn("Failed to load static/config.json, continuing without it."),console.warn(e.t0),e.abrupt("return",{});case 16:case"end":return e.stop()}}),e,null,[[0,11]])}))),function(){return Lh.apply(this,arguments)}),eb=(Rh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.apiConfig,r=t.staticConfig,i=t.store,o=window.___pleromafe_dev_overrides||{},a=window.___pleromafe_mode.NODE_ENV,c={},o.staticConfigPreference&&"development"===a?(console.warn("OVERRIDING API CONFIG WITH STATIC CONFIG"),c=Object.assign({},n,r)):c=Object.assign({},r,n),(l=function(e){i.dispatch("setInstanceOption",{name:e,value:c[e]})})("nsfwCensorImage"),l("background"),l("hidePostStats"),l("hideBotIndication"),l("hideUserStats"),l("hideFilteredStatuses"),l("logo"),i.dispatch("setInstanceOption",{name:"logoMask",value:void 0===c.logoMask||c.logoMask}),i.dispatch("setInstanceOption",{name:"logoMargin",value:void 0===c.logoMargin?0:c.logoMargin}),l("logoLeft"),i.commit("authFlow/setInitialStrategy",c.loginMethod),l("redirectRootNoLogin"),l("redirectRootLogin"),l("showInstanceSpecificPanel"),l("minimalScopesMode"),l("hideMutedPosts"),l("collapseMessageWithSubject"),l("scopeCopy"),l("subjectLineBehavior"),l("postContentType"),l("alwaysShowSubjectInput"),l("showFeaturesPanel"),l("hideSitename"),l("sidebarRight"),e.abrupt("return",i.dispatch("setTheme",c.theme));case 31:case"end":return e.stop()}}),e)}))),function(e){return Rh.apply(this,arguments)}),tb=(Ah=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/terms-of-service.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"tos",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load TOS"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Ah.apply(this,arguments)}),nb=(Nh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/instance/panel.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"instanceSpecificPanelContent",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load instance panel"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Nh.apply(this,arguments)}),rb=(Bh=i()(s.a.mark((function e(t){var n,r,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/stickers.json");case 4:if(!(r=e.sent).ok){e.next=15;break}return e.next=8,r.json();case 8:return o=e.sent,e.next=11,Promise.all(Object.entries(o).map(function(){var e=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=m()(t,2),r=n[0],i=n[1],e.next=3,window.fetch(i+"pack.json");case 3:if(o=e.sent,a={},!o.ok){e.next=9;break}return e.next=8,o.json();case 8:a=e.sent;case 9:return e.abrupt("return",{pack:r,path:i,meta:a});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:a=e.sent.sort((function(e,t){return e.meta.title.localeCompare(t.meta.title)})),n.dispatch("setInstanceOption",{name:"stickers",value:a}),e.next=16;break;case 15:throw r;case 16:e.next=22;break;case 18:e.prev=18,e.t0=e.catch(1),console.warn("Can't load stickers"),console.warn(e.t0);case 22:case"end":return e.stop()}}),e,null,[[1,18]])}))),function(e){return Bh.apply(this,arguments)}),ib=(Vh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=n.state,i=n.commit,o=r.oauth,a=r.instance,e.abrupt("return",Ie(Mh(Mh({},o),{},{instance:a.server,commit:i})).then((function(e){return $e(Mh(Mh({},e),{},{instance:a.server}))})).then((function(e){i("setAppToken",e.access_token),i("setBackendInteractor",Se(n.getters.getToken()))})));case 4:case"end":return e.stop()}}),e)}))),function(e){return Vh.apply(this,arguments)}),ob=function(e){var t=e.store,n=e.accounts.map((function(e){return e.split("/").pop()}));t.dispatch("setInstanceOption",{name:"staffAccounts",value:n})},sb=(Hh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p,h,b,m;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/nodeinfo/2.0.json");case 4:if(!(r=e.sent).ok){e.next=49;break}return e.next=8,r.json();case 8:i=e.sent,o=i.metadata,a=o.features,n.dispatch("setInstanceOption",{name:"name",value:o.nodeName}),n.dispatch("setInstanceOption",{name:"registrationOpen",value:i.openRegistrations}),n.dispatch("setInstanceOption",{name:"mediaProxyAvailable",value:a.includes("media_proxy")}),n.dispatch("setInstanceOption",{name:"safeDM",value:a.includes("safe_dm_mentions")}),n.dispatch("setInstanceOption",{name:"shoutAvailable",value:a.includes("chat")}),n.dispatch("setInstanceOption",{name:"pleromaChatMessagesAvailable",value:a.includes("pleroma_chat_messages")}),n.dispatch("setInstanceOption",{name:"gopherAvailable",value:a.includes("gopher")}),n.dispatch("setInstanceOption",{name:"pollsAvailable",value:a.includes("polls")}),n.dispatch("setInstanceOption",{name:"pollLimits",value:o.pollLimits}),n.dispatch("setInstanceOption",{name:"mailerEnabled",value:o.mailerEnabled}),c=o.uploadLimits,n.dispatch("setInstanceOption",{name:"uploadlimit",value:parseInt(c.general)}),n.dispatch("setInstanceOption",{name:"avatarlimit",value:parseInt(c.avatar)}),n.dispatch("setInstanceOption",{name:"backgroundlimit",value:parseInt(c.background)}),n.dispatch("setInstanceOption",{name:"bannerlimit",value:parseInt(c.banner)}),n.dispatch("setInstanceOption",{name:"fieldsLimits",value:o.fieldsLimits}),n.dispatch("setInstanceOption",{name:"restrictedNicknames",value:o.restrictedNicknames}),n.dispatch("setInstanceOption",{name:"postFormats",value:o.postFormats}),l=o.suggestions,n.dispatch("setInstanceOption",{name:"suggestionsEnabled",value:l.enabled}),n.dispatch("setInstanceOption",{name:"suggestionsWeb",value:l.web}),u=i.software,n.dispatch("setInstanceOption",{name:"backendVersion",value:u.version}),n.dispatch("setInstanceOption",{name:"pleromaBackend",value:"pleroma"===u.name}),d=o.private,n.dispatch("setInstanceOption",{name:"private",value:d}),p=window.___pleromafe_commit_hash,n.dispatch("setInstanceOption",{name:"frontendVersion",value:p}),h=o.federation,n.dispatch("setInstanceOption",{name:"tagPolicyAvailable",value:void 0!==h.mrf_policies&&o.federation.mrf_policies.includes("TagPolicy")}),n.dispatch("setInstanceOption",{name:"federationPolicy",value:h}),n.dispatch("setInstanceOption",{name:"federating",value:void 0===h.enabled||h.enabled}),b=o.accountActivationRequired,n.dispatch("setInstanceOption",{name:"accountActivationRequired",value:b}),m=o.staffAccounts,ob({store:n,accounts:m}),e.next=50;break;case 49:throw r;case 50:e.next=56;break;case 52:e.prev=52,e.t0=e.catch(1),console.warn("Could not load nodeinfo"),console.warn(e.t0);case 56:case"end":return e.stop()}}),e,null,[[1,52]])}))),function(e){return Hh.apply(this,arguments)}),ab=(qh=i()(s.a.mark((function e(t){var n,r,i,o;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.next=3,Promise.all([Zh({store:n}),Qh()]);case 3:return r=e.sent,i=r[0],o=r[1],e.next=8,eb({store:n,apiConfig:i,staticConfig:o}).then(ib({store:n}));case 8:case"end":return e.stop()}}),e)}))),function(e){return qh.apply(this,arguments)}),cb=(Jh=i()(s.a.mark((function e(t){var n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.abrupt("return",new Promise(function(){var e=i()(s.a.mark((function e(t,r){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.getters.getUserToken()){e.next=9;break}return e.prev=1,e.next=4,n.dispatch("loginUser",n.getters.getUserToken());case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error(e.t0);case 9:t();case 10:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(e){return Jh.apply(this,arguments)}),lb=(Wh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=t.i18n,n.dispatch("setLayoutWidth",Ce()),n.dispatch("setLayoutHeight",Pe()),$h.a.initFaviconService(),i=window.___pleromafe_dev_overrides||{},o=void 0!==i.target?i.target:window.location.origin,n.dispatch("setInstanceOption",{name:"server",value:o}),e.next=9,ab({store:n});case 9:return a=n.state.config,c=a.customTheme,l=a.customThemeSource,u=n.state.instance.theme,l||c?l&&l.themeEngineVersion===O.a?Object(f.b)(l):Object(f.b)(c):u||console.error("Failed to load any theme!"),e.next=15,Promise.all([cb({store:n}),nb({store:n}),sb({store:n}),Xh({store:n})]);case 15:return n.dispatch("fetchMutes"),tb({store:n}),rb({store:n}),d=Object(nn.a)({history:Object(nn.b)(),routes:Sh(n),scrollBehavior:function(e,t,n){return!e.matched.some((function(e){return e.meta.dontScroll}))&&(n||{left:0,top:0})}}),(p=Object(wt.g)(ra)).use(d),p.use(n),p.use(r),p.use(on.a),p.use(Ih),p.component("FAIcon",sn.a),p.component("FALayers",sn.b),p.mount("#app"),e.abrupt("return",p);case 29:case"end":return e.stop()}}),e)}))),function(e){return Wh.apply(this,arguments)}),ub=(window.navigator.language||"en").split("-")[0],db=Object(Rt.a)({locale:"en",fallbackLocale:"en",messages:tn.a.default});tn.a.setLanguage(db,ub);var pb={paths:["config","users.lastLoginName","oauth"]};i()(s.a.mark((function e(){var t,n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,n=[en],e.prev=2,e.next=5,Qt(pb);case 5:r=e.sent,n.push(r),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),t=!0;case 13:i=Object(a.a)({modules:{i18n:{getters:{i18n:function(){return db.global}}},interface:l,instance:w,users:Ge,statuses:oe,api:rt,config:g.a,serverSideConfig:it.a,shout:ot,oauth:st,authFlow:ct,mediaViewer:dt,oauthTokens:pt,reports:mt,polls:ft,postStatus:Ot,chats:Lt},plugins:n,strict:!1}),t&&i.dispatch("pushGlobalNotice",{messageKey:"errors.storage_unavailable",level:"error"}),lb({store:i,i18n:db});case 16:case"end":return e.stop()}}),e,null,[[2,9]])})))(),window.___pleromafe_mode=Object({NODE_ENV:"production"}),window.___pleromafe_commit_hash="38d10749\n",window.___pleromafe_dev_overrides=void 0}]);
-//# sourceMappingURL=app.e8949b9a3c7cfdab2e4c.js.map
\ No newline at end of file
+!function(e){function t(t){for(var r,i,a=t[0],c=t[1],l=t[2],u=0,p=[];u<a.length;u++)i=a[u],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(r in c)Object.prototype.hasOwnProperty.call(c,r)&&(e[r]=c[r]);for(d&&d(t);p.length;)p.shift()();return s.push.apply(s,l||[]),n()}function n(){for(var e,t=0;t<s.length;t++){for(var n=s[t],r=!0,i=1;i<n.length;i++){var c=n[i];0!==o[c]&&(r=!1)}r&&(s.splice(t--,1),e=a(a.s=n[0]))}return e}var r={},i={0:0},o={0:0},s=[];function a(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.e=function(e){var t=[];i[e]?t.push(i[e]):0!==i[e]&&{2:1,3:1,4:1}[e]&&t.push(i[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{2:"4e6541aa0979ab5fe8ab",3:"2f4099421df47087d7d1",4:"10e378d3da0e7f32661d",5:"31d6cfe0d16ae931b73c",6:"31d6cfe0d16ae931b73c",7:"31d6cfe0d16ae931b73c",8:"31d6cfe0d16ae931b73c",9:"31d6cfe0d16ae931b73c",10:"31d6cfe0d16ae931b73c",11:"31d6cfe0d16ae931b73c",12:"31d6cfe0d16ae931b73c",13:"31d6cfe0d16ae931b73c",14:"31d6cfe0d16ae931b73c",15:"31d6cfe0d16ae931b73c",16:"31d6cfe0d16ae931b73c",17:"31d6cfe0d16ae931b73c",18:"31d6cfe0d16ae931b73c",19:"31d6cfe0d16ae931b73c",20:"31d6cfe0d16ae931b73c",21:"31d6cfe0d16ae931b73c",22:"31d6cfe0d16ae931b73c",23:"31d6cfe0d16ae931b73c",24:"31d6cfe0d16ae931b73c",25:"31d6cfe0d16ae931b73c",26:"31d6cfe0d16ae931b73c",27:"31d6cfe0d16ae931b73c",28:"31d6cfe0d16ae931b73c",29:"31d6cfe0d16ae931b73c",30:"31d6cfe0d16ae931b73c",31:"31d6cfe0d16ae931b73c",32:"31d6cfe0d16ae931b73c"}[e]+".css",o=a.p+r,s=document.getElementsByTagName("link"),c=0;c<s.length;c++){var l=(d=s[c]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(l===r||l===o))return t()}var u=document.getElementsByTagName("style");for(c=0;c<u.length;c++){var d;if((l=(d=u[c]).getAttribute("data-href"))===r||l===o)return t()}var p=document.createElement("link");p.rel="stylesheet",p.type="text/css",p.onload=t,p.onerror=function(t){var r=t&&t.target&&t.target.src||o,s=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");s.code="CSS_CHUNK_LOAD_FAILED",s.request=r,delete i[e],p.parentNode.removeChild(p),n(s)},p.href=o,document.getElementsByTagName("head")[0].appendChild(p)})).then((function(){i[e]=0})));var n=o[e];if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((function(t,r){n=o[e]=[t,r]}));t.push(n[2]=r);var s,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{2:"55d5f2926c7b22177236",3:"6817af5c7ddbbd72fbf1",4:"927a84e2225924985925",5:"bbbe2165b2726754babd",6:"c6e50a831e6b09d426c7",7:"7a9d3de7e3eb6affa8fa",8:"6e10d130a82421e5de97",9:"4c310a18d1e30d64ab78",10:"b67f1d16d8fdcd03f775",11:"88732498617afe7ab4fa",12:"21fb2f8c9787acc40766",13:"bd887f6f8965a89629f1",14:"8d076150d2d32a70c85c",15:"458ea2a090159a1c312d",16:"b026bc770b996a75ab86",17:"37f97cc3eab74f285530",18:"5e155da6b34cb233975a",19:"4449616295c79e9feb82",20:"c3c9f56f752974bf19cf",21:"13590b4f67813801857e",22:"af3b6f25635a9809f6e8",23:"27002d630c581d75786b",24:"17fecccd566085bc7273",25:"d92131b48359fae551a4",26:"8e2b950cad8e4bb7145f",27:"b70f29d1c24421eeb8e0",28:"3eeac63a0c7d7ca9f57e",29:"a9703e50212c8482b1b8",30:"ccdf2a34d5a00135f6b7",31:"079c61206f2e6ac69873",32:"2c5f6af0c5d2d87ad611"}[e]+".js"}(e);var l=new Error;s=function(t){c.onerror=c.onload=null,clearTimeout(u);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+i+")",l.name="ChunkLoadError",l.type=r,l.request=i,n[1](l)}o[e]=void 0}};var u=setTimeout((function(){s({type:"timeout",target:c})}),12e4);c.onerror=c.onload=s,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],l=c.push.bind(c);c.push=t,c=c.slice();for(var u=0;u<c.length;u++)t(c[u]);var d=l;s.push([593,1]),n()}([,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"g",(function(){return h})),n.d(t,"a",(function(){return b})),n.d(t,"f",(function(){return m})),n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return j})),n.d(t,"b",(function(){return g})),n.d(t,"c",(function(){return v}));var r=n(5),i=n.n(r),o=n(103),s=n.n(o),a=n(312),c=n.n(a),l=n(26),u=n(313);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var h=function(e){var t={},n=e.hasOwnProperty("acct"),r=n&&!e.hasOwnProperty("avatar");if(t.id=String(e.id),t._original=e,n){if(t.screen_name=e.acct,t.statusnet_profile_url=e.url,r)return t;if(t.emoji=e.emojis,t.name=s()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:s()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){var i=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,i&&(t.relationship=i),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member"}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var o=t.screen_name.split("@"),a=u.a.toUnicode(o[1]);a!==o[1]&&(a="🌏"+a,t.screen_name_ui=[o[0],a].join("@"))}return t},b=function(e){var t={};return!e.hasOwnProperty("oembed")?(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id):t.mimetype=e.mimetype,t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},m=function e(t){var n={},r=t.hasOwnProperty("account");if(r){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,t.pleroma){var i=t.pleroma;n.text=i.content?t.pleroma.content["text/plain"]:t.content,n.summary=i.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=i.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=i.thread_muted,n.emoji_reactions=i.emoji_reactions,n.parent_visible=void 0===i.parent_visible||i.parent_visible}else n.text=t.content,n.summary=t.spoiler_text;if(t.akkoma){var o=t.akkoma;o&&o.source&&"text/x.misskeymarkdown"===o.source.mediaType&&(n.mfm_content=o.source.content)}else n.mfm_content=null;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=s()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return p(p({},e),{},{title_html:s()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=function(e){return e.is_post_verb?"status":e.retweeted_status?"retweet":"string"==typeof e.uri&&e.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof e.text&&e.text.match(/favorited/)?"favorite":e.text.match(/deleted notice {{tag/)||e.qvitter_delete_notice?"deletion":e.text.match(/started following/)||"follow"===e.activity_type?"follow":"unknown"}(t),void 0===t.nsfw?(n.nsfw=O(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=h(r?t.account:t.user),n.attentions=((r?t.mentions:t.attentions)||[]).map(h),n.attachments=((r?t.media_attachments:t.attachments)||[]).map(b);var a=r?t.reblog:t.retweeted_status;return a&&(n.retweeted_status=e(a)),n.favoritedBy=[],n.rebloggedBy=[],n},f=function(e){var t={};if(!e.hasOwnProperty("ntype"))t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=Object(l.b)(t.type)?m(e.status):null,t.action=t.status,t.target="move"!==t.type?null:h(e.target),t.from_profile=h(e.account),t.emoji=e.emoji,t.emoji_url=e.emoji_url;else{var n=m(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?m(e.notice.favorited_status):n,t.action=n,t.from_profile="pleroma:chat_mention"===t.type?h(e.account):h(e.from_profile)}return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},O=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.flakeId,r=c()(e);if(r){var i=r.next.max_id,o=r.prev.min_id;return{maxId:n?i:parseInt(i,10),minId:n?o:parseInt(o,10)}}},g=function(e){var t={};return t.id=e.id,t.account=h(e.account),t.unread=e.unread,t.lastMessage=v(e.last_message),t.updated_at=new Date(e.updated_at),t},v=function(e){if(e){if(e.isNormalized)return e;var t=e;return t.id=e.id,t.created_at=new Date(e.created_at),t.chat_id=e.chat_id,t.emojis=e.emojis,t.content=e.content,e.attachment?t.attachments=[b(e.attachment)]:t.attachments=[],t.pending=!!e.pending,t.error=!1,t.idempotency_key=e.idempotency_key,t.isNormalized=!0,t}}},function(e,t,n){"use strict";n.d(t,"d",(function(){return xe})),n.d(t,"a",(function(){return Ie})),n.d(t,"b",(function(){return ze}));var r=n(13),i=n.n(r),o=n(40),s=n.n(o),a=n(11),c=n.n(a),l=n(5),u=n.n(l),d=n(16),p=n.n(d),h=n(46),b=n.n(h),m=n(97),f=n.n(m),O=n(21),j=n.n(O),g=n(29),v=n.n(g),y=n(10),w=n.n(y),k=n(14),_=n(28),S=n.n(_),C=n(128),P=n.n(C),x=n(129),D=n.n(x),T=n(165),I=n.n(T),$=n(314),z=n.n($),M=n(315),U=n.n(M),F=n(130),E=n.n(F),L=n(316),R=n.n(L),A=n(12),N=n.n(A),B=n(166),V=n.n(B);function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=E()(e);if(t){var i=E()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return U()(this,n)}}function q(e,t,n,r){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=n,this.response=r,Error.captureStackTrace&&Error.captureStackTrace(this)}q.prototype=Object.create(Error.prototype),q.prototype.constructor=q;var J=function(e){z()(n,e);var t=H(n);function n(e){var r,i;D()(this,n),r=t.call(this),Error.captureStackTrace&&Error.captureStackTrace(I()(r));try{if("string"==typeof e&&(e=JSON.parse(e)).hasOwnProperty("error")&&(e=JSON.parse(e.error)),"object"===S()(e)){var o=JSON.parse(e.error);o.ap_id&&(o.username=o.ap_id,delete o.ap_id),r.message=(i=o,Object.entries(i).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1].reduce((function(e,t){return e+[V()(r.replace(/_/g," ")),t].join(" ")+". "}),"");return[].concat(N()(e),[i])}),[]))}else r.message=e}catch(t){r.message=e}return r}return P()(n)}(R()(Error)),W=["nickname"],Y=["id","credentials"];function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){u()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var X=function(e,t){return"/api/pleroma/admin/users/".concat(e,"/permission_group/").concat(t)},Z=function(e){return"/api/v1/notifications/".concat(e,"/dismiss")},Q=function(e){return"/api/v1/statuses/".concat(e,"/favourite")},ee=function(e){return"/api/v1/statuses/".concat(e,"/unfavourite")},te=function(e){return"/api/v1/statuses/".concat(e,"/reblog")},ne=function(e){return"/api/v1/statuses/".concat(e,"/unreblog")},re=function(e){return"/api/v1/accounts/".concat(e,"/statuses")},ie=function(e){return"/api/v1/timelines/tag/".concat(e)},oe=function(e){return"/api/v1/accounts/".concat(e,"/mute")},se=function(e){return"/api/v1/accounts/".concat(e,"/unmute")},ae=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/subscribe")},ce=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/unsubscribe")},le=function(e){return"/api/v1/statuses/".concat(e,"/bookmark")},ue=function(e){return"/api/v1/statuses/".concat(e,"/unbookmark")},de=function(e){return"/api/v1/statuses/".concat(e,"/favourited_by")},pe=function(e){return"/api/v1/statuses/".concat(e,"/reblogged_by")},he=function(e){return"/api/v1/statuses/".concat(e,"/pin")},be=function(e){return"/api/v1/statuses/".concat(e,"/unpin")},me=function(e){return"/api/v1/statuses/".concat(e,"/mute")},fe=function(e){return"/api/v1/statuses/".concat(e,"/unmute")},Oe=function(e){return"/api/v1/pleroma/statuses/".concat(e,"/reactions")},je=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ge=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ve=function(e){return"/api/v1/pleroma/chats/".concat(e,"/messages")},ye=function(e){return"/api/v1/pleroma/chats/".concat(e,"/read")},we=function(e,t){return"/api/v1/pleroma/chats/".concat(e,"/messages/").concat(t)},ke=window.fetch,_e=function(e,t){var n=""+e;return(t=t||{}).credentials="same-origin",ke(n,t)},Se=function(e){var t=e.method,n=e.url,r=e.params,i=e.payload,o=e.credentials,s=e.headers,a={method:t,headers:K({Accept:"application/json","Content-Type":"application/json"},void 0===s?{}:s)};return r&&(n+="?"+Object.entries(r).map((function(e){var t=c()(e,2),n=t[0],r=t[1];return encodeURIComponent(n)+"="+encodeURIComponent(r)})).join("&")),i&&(a.body=JSON.stringify(i)),o&&(a.headers=K(K({},a.headers),Ce(o))),_e(n,a).then((function(e){return new Promise((function(t,r){return e.json().then((function(i){return e.ok?t(i):r(new q(e.status,i,{url:n,options:a},e))})).catch((function(t){return r(new q(e.status,t,{url:n,options:a},e))}))}))}))},Ce=function(e){return e?{Authorization:"Bearer ".concat(e)}:{}},Pe=function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/following")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},xe=function(e){var t=e.credentials,n=e.stream,r=e.args,i=void 0===r?{}:r;return Object.entries(K(K({},t?{access_token:t}:{}),{},{stream:n},i)).reduce((function(e,t){var n=c()(t,2),r=n[0],i=n[1];return e+"".concat(r,"=").concat(i,"&")}),"/api/v1/streaming?")},De=new Set(["update","notification","delete","filters_changed"]),Te=new Set(["pleroma:chat_update"]),Ie=function(e){var t=e.url,n=e.preprocessor,r=void 0===n?$e:n,i=e.id,o=void 0===i?"Unknown":i,s=new EventTarget,a=new WebSocket(t);if(!a)throw new Error("Failed to create socket ".concat(o));var c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e};e.addEventListener(t,(function(e){s.dispatchEvent(new CustomEvent(t,{detail:n(e)}))}))};return a.addEventListener("open",(function(e){console.debug("[WS][".concat(o,"] Socket connected"),e)})),a.addEventListener("error",(function(e){console.debug("[WS][".concat(o,"] Socket errored"),e)})),a.addEventListener("close",(function(e){console.debug("[WS][".concat(o,"] Socket disconnected with code ").concat(e.code),e)})),c(a,"open"),c(a,"close"),c(a,"message",r),c(a,"error"),s.close=function(){a.close(1e3,"Shutting down socket")},s.getState=function(){return a.readyState},s},$e=function(e){var t=e.data;if(t){var n=JSON.parse(t),r=n.event,i=n.payload;if(!De.has(r)&&!Te.has(r))return console.warn("Unknown event",e),null;if("delete"===r)return{event:r,id:i};var o=i?JSON.parse(i):null;return"update"===r?{event:r,status:Object(k.f)(o)}:"notification"===r?{event:r,notification:Object(k.e)(o)}:"pleroma:chat_update"===r?{event:r,chatUpdate:Object(k.b)(o)}:void 0}},ze=Object.freeze({JOINED:1,CLOSED:2,ERROR:3,DISABLED:4,STARTING:5,STARTING_INITIAL:6}),Me={verifyCredentials:function(e){return _e("/api/v1/accounts/verify_credentials",{headers:Ce(e)}).then((function(e){return e.ok?e.json():{error:e}})).then((function(e){return e.error?e:Object(k.g)(e)}))},fetchTimeline:function(e){var t=e.timeline,n=e.credentials,r=e.since,i=void 0!==r&&r,o=e.until,s=void 0!==o&&o,a=e.userId,c=void 0!==a&&a,l=e.tag,u=void 0!==l&&l,d=e.withMuted,p=void 0!==d&&d,h=e.replyVisibility,b=void 0===h?"all":h,m="notifications"===t,f=[],O={public:"/api/v1/timelines/public",friends:"/api/v1/timelines/home",dms:"/api/v1/timelines/direct",notifications:"/api/v1/notifications",publicAndExternal:"/api/v1/timelines/public",user:re,media:re,favorites:"/api/v1/favourites",tag:ie,bookmarks:"/api/v1/bookmarks"}[t];"user"!==t&&"media"!==t||(O=O(c)),i&&f.push(["since_id",i]),s&&f.push(["max_id",s]),u&&(O=O(u)),"media"===t&&f.push(["only_media",1]),"public"===t&&f.push(["local",!0]),"public"!==t&&"publicAndExternal"!==t||f.push(["only_media",!1]),"favorites"!==t&&"bookmarks"!==t&&f.push(["with_muted",p]),"all"!==b&&f.push(["reply_visibility",b]),f.push(["limit",20]);var g=j()(f,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");O+="?".concat(g);var v="",y="",w={};return _e(O,{headers:Ce(n)}).then((function(e){return v=e.status,y=e.statusText,w=Object(k.d)(e.headers.get("Link"),{flakeId:"bookmarks"!==t&&"notifications"!==t}),e})).then((function(e){return e.json()})).then((function(e){return e.errors?(e.status=v,e.statusText=y,e):{data:e.map(m?k.e:k.f),pagination:w}}))},fetchPinnedStatuses:function(e){var t=e.id,n=e.credentials,r=re(t)+"?pinned=true";return Se({url:r,credentials:n}).then((function(e){return e.map(k.f)}))},fetchConversation:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e,"/context")}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){var t=e.ancestors,n=e.descendants;return{ancestors:t.map(k.f),descendants:n.map(k.f)}}))},fetchStatus:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/statuses/".concat(e)}(t);return _e(r,{headers:Ce(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){return Object(k.f)(e)}))},fetchFriends:Pe,exportFriends:function(e){var t,n=e.id,r=e.credentials;return new Promise((t=i()(w.a.mark((function e(t,i){var o,s,a,c;return w.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,o=[],s=!0;case 3:if(!s){e.next=12;break}return a=o.length>0?b()(o).id:void 0,e.next=7,Pe({id:n,maxId:a,credentials:r});case 7:c=e.sent,o=f()(o,c),0===c.length&&(s=!1),e.next=3;break;case 12:t(o),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),i(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,15]])}))),function(e,n){return t.apply(this,arguments)}))},fetchFollowers:function(e){var t=e.id,n=e.maxId,r=e.sinceId,i=e.limit,o=void 0===i?20:i,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/followers")}(t),c=[n&&"max_id=".concat(n),r&&"since_id=".concat(r),o&&"limit=".concat(o),"with_relationships=true"].filter((function(e){return e})).join("&");return _e(a+=c?"?"+c:"",{headers:Ce(s)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},followUser:function(e){var t=e.id,n=e.credentials,r=s()(e,Y),i=function(e){return"/api/v1/accounts/".concat(e,"/follow")}(t),o={};return void 0!==r.reblogs&&(o.reblogs=r.reblogs),_e(i,{body:JSON.stringify(o),headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),method:"POST"}).then((function(e){return e.json()}))},unfollowUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/accounts/".concat(e,"/unfollow")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},pinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:he(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unpinOwnStatus:function(e){var t=e.id,n=e.credentials;return Se({url:be(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},muteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:me(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},unmuteConversation:function(e){var t=e.id,n=e.credentials;return Se({url:fe(t),credentials:n,method:"POST"}).then((function(e){return Object(k.f)(e)}))},blockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/block")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},unblockUser:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/accounts/".concat(e,"/unblock")}(t),{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},fetchUser:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts","/").concat(t);return Se({url:r,credentials:n}).then((function(e){return Object(k.g)(e)}))},fetchUserRelationship:function(e){var t=e.id,n=e.credentials,r="".concat("/api/v1/accounts/relationships","/?id=").concat(t);return _e(r,{headers:Ce(n)}).then((function(e){return new Promise((function(t,n){return e.json().then((function(i){return e.ok?t(i):n(new q(e.status,i,{url:r},e))}))}))}))},favorite:function(e){var t=e.id,n=e.credentials;return Se({url:Q(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unfavorite:function(e){var t=e.id,n=e.credentials;return Se({url:ee(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},retweet:function(e){var t=e.id,n=e.credentials;return Se({url:te(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},unretweet:function(e){var t=e.id,n=e.credentials;return Se({url:ne(t),method:"POST",credentials:n}).then((function(e){return Object(k.f)(e)}))},bookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:le(t),headers:Ce(n),method:"POST"})},unbookmarkStatus:function(e){var t=e.id,n=e.credentials;return Se({url:ue(t),headers:Ce(n),method:"POST"})},postStatus:function(e){var t=e.credentials,n=e.status,r=e.spoilerText,i=e.visibility,o=e.sensitive,s=e.poll,a=e.mediaIds,c=void 0===a?[]:a,l=e.inReplyToStatusId,u=e.contentType,d=e.preview,p=e.idempotencyKey,h=new FormData,b=s.options||[];if(h.append("status",n),h.append("source","Pleroma FE"),r&&h.append("spoiler_text",r),i&&h.append("visibility",i),o&&h.append("sensitive",o),u&&h.append("content_type",u),c.forEach((function(e){h.append("media_ids[]",e)})),b.some((function(e){return""!==e}))){var m={expires_in:s.expiresIn,multiple:s.multiple};Object.keys(m).forEach((function(e){h.append("poll[".concat(e,"]"),m[e])})),b.forEach((function(e){h.append("poll[options][]",e)}))}l&&h.append("in_reply_to_id",l),d&&h.append("preview","true");var f=Ce(t);return p&&(f["idempotency-key"]=p),_e("/api/v1/statuses",{body:h,method:"POST",headers:f}).then((function(e){return e.json()})).then((function(e){return e.error?e:Object(k.f)(e)}))},deleteStatus:function(e){var t=e.id,n=e.credentials;return _e(function(e){return"/api/v1/statuses/".concat(e)}(t),{headers:Ce(n),method:"DELETE"})},uploadMedia:function(e){var t=e.formData,n=e.credentials;return _e("/api/v1/media",{body:t,method:"POST",headers:Ce(n)}).then((function(e){return e.json()})).then((function(e){return Object(k.a)(e)}))},setMediaDescription:function(e){var t=e.id,n=e.description,r=e.credentials;return Se({url:"".concat("/api/v1/media","/").concat(t),method:"PUT",headers:Ce(r),payload:{description:n}}).then((function(e){return Object(k.a)(e)}))},fetchMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/mutes/",credentials:t}).then((function(e){return e.map(k.g)}))},muteUser:function(e){var t=e.id,n=e.credentials;return Se({url:oe(t),credentials:n,method:"POST"})},unmuteUser:function(e){var t=e.id,n=e.credentials;return Se({url:se(t),credentials:n,method:"POST"})},subscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ae(t),credentials:n,method:"POST"})},unsubscribeUser:function(e){var t=e.id,n=e.credentials;return Se({url:ce(t),credentials:n,method:"POST"})},fetchBlocks:function(e){var t=e.credentials;return Se({url:"/api/v1/blocks/",credentials:t}).then((function(e){return e.map(k.g)}))},fetchOAuthTokens:function(e){var t=e.credentials;return _e("/api/oauth_tokens.json",{headers:Ce(t)}).then((function(e){if(e.ok)return e.json();throw new Error("Error fetching auth tokens",e)}))},revokeOAuthToken:function(e){var t=e.id,n=e.credentials,r="/api/oauth_tokens/".concat(t);return _e(r,{headers:Ce(n),method:"DELETE"})},tagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"PUT",headers:i,body:JSON.stringify(r)})},untagUser:function(e){var t=e.tag,n=e.credentials,r={nicknames:[e.user.screen_name],tags:[t]},i=Ce(n);return i["Content-Type"]="application/json",_e("/api/pleroma/admin/users/tag",{method:"DELETE",headers:i,body:JSON.stringify(r)})},deleteUser:function(e){var t=e.credentials,n=e.user.screen_name,r=Ce(t);return _e("".concat("/api/pleroma/admin/users","?nickname=").concat(n),{method:"DELETE",headers:r})},addRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"POST",headers:Ce(n),body:{}})},deleteRight:function(e){var t=e.right,n=e.credentials,r=e.user.screen_name;return _e(X(r,t),{method:"DELETE",headers:Ce(n),body:{}})},activateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/activate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},deactivateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Se({url:"/api/pleroma/admin/users/deactivate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return p()(e,"users.0")}))},register:function(e){var t=e.params,n=e.credentials,r=t.nickname,i=s()(t,W);return _e("/api/v1/accounts",{method:"POST",headers:K(K({},Ce(n)),{},{"Content-Type":"application/json"}),body:JSON.stringify(K({nickname:r,locale:"en_US",agreement:!0},i))}).then((function(e){return e.ok?e.json():e.json().then((function(e){throw new J(e)}))}))},getCaptcha:function(){return _e("/api/pleroma/captcha").then((function(e){return e.json()}))},updateProfileImages:function(e){var t=e.credentials,n=e.avatar,r=void 0===n?null:n,i=e.avatarName,o=void 0===i?null:i,s=e.banner,a=void 0===s?null:s,c=e.background,l=void 0===c?null:c,u=new FormData;return null!==r&&(null!==o?u.append("avatar",r,o):u.append("avatar",r)),null!==a&&u.append("header",a),null!==l&&u.append("pleroma_background_image",l),_e("/api/v1/accounts/update_credentials",{headers:Ce(t),method:"PATCH",body:u}).then((function(e){return e.json()})).then((function(e){if(e.error)throw new Error(e.error);return Object(k.g)(e)}))},updateProfile:function(e){var t=e.credentials,n=e.params;return Se({url:"/api/v1/accounts/update_credentials",method:"PATCH",payload:n,credentials:t}).then((function(e){return Object(k.g)(e)}))},importMutes:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/mutes_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importBlocks:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/blocks_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},importFollows:function(e){var t=e.file,n=e.credentials,r=new FormData;return r.append("list",t),_e("/api/pleroma/follow_import",{body:r,method:"POST",headers:Ce(n)}).then((function(e){return e.ok}))},deleteAccount:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/delete_account",{body:r,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changeEmail:function(e){var t=e.credentials,n=e.email,r=e.password,i=new FormData;return i.append("email",n),i.append("password",r),_e("/api/pleroma/change_email",{body:i,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},changePassword:function(e){var t=e.credentials,n=e.password,r=e.newPassword,i=e.newPasswordConfirmation,o=new FormData;return o.append("password",n),o.append("new_password",r),o.append("new_password_confirmation",i),_e("/api/pleroma/change_password",{body:o,method:"POST",headers:Ce(t)}).then((function(e){return e.json()}))},settingsMFA:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaDisableOTP:function(e){var t=e.credentials,n=e.password,r=new FormData;return r.append("password",n),_e("/api/pleroma/accounts/mfa/totp",{body:r,method:"DELETE",headers:Ce(t)}).then((function(e){return e.json()}))},generateMfaBackupCodes:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/backup_codes",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaSetupOTP:function(e){var t=e.credentials;return _e("/api/pleroma/accounts/mfa/setup/totp",{headers:Ce(t),method:"GET"}).then((function(e){return e.json()}))},mfaConfirmOTP:function(e){var t=e.credentials,n=e.password,r=e.token,i=new FormData;return i.append("password",n),i.append("code",r),_e("/api/pleroma/accounts/mfa/confirm/totp",{body:i,headers:Ce(t),method:"POST"}).then((function(e){return e.json()}))},fetchFollowRequests:function(e){var t=e.credentials;return _e("/api/v1/follow_requests",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return e.map(k.g)}))},approveUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/authorize")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},denyUser:function(e){var t=e.id,n=e.credentials,r=function(e){return"/api/v1/follow_requests/".concat(e,"/reject")}(t);return _e(r,{headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},suggestions:function(e){var t=e.credentials;return _e("/api/v1/suggestions",{headers:Ce(t)}).then((function(e){return e.json()}))},markNotificationsAsSeen:function(e){var t=e.id,n=e.credentials,r=e.single,i=void 0!==r&&r,o=new FormData;return i?o.append("id",t):o.append("max_id",t),_e("/api/v1/pleroma/notifications/read",{body:o,headers:Ce(n),method:"POST"}).then((function(e){return e.json()}))},dismissNotification:function(e){var t=e.credentials,n=e.id;return Se({url:Z(n),method:"POST",payload:{id:n},credentials:t})},vote:function(e){var t,n=e.pollId,r=e.choices,i=e.credentials;return(new FormData).append("choices",r),Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t,"/votes")),method:"POST",credentials:i,payload:{choices:r}})},fetchPoll:function(e){var t,n=e.pollId,r=e.credentials;return Se({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t)),method:"GET",credentials:r})},fetchFavoritedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:de(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchRebloggedByUsers:function(e){var t=e.id,n=e.credentials;return Se({url:pe(t),method:"GET",credentials:n}).then((function(e){return e.map(k.g)}))},fetchMascot:function(e){var t=e.credentials;return Se({url:"/api/v1/pleroma/mascot",credentials:t})},updateMascot:function(e){var t=e.mascot,n=e.credentials,r=new FormData;return r.append("file",t),_e("/api/v1/pleroma/mascot",{headers:Ce(n),method:"PUT",body:r}).then((function(e){return e.json()}))},fetchEmojiReactions:function(e){var t=e.id,n=e.credentials;return Se({url:Oe(t),credentials:n}).then((function(e){return e.map((function(e){return e.accounts=e.accounts.map(k.g),e}))}))},reactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:je(t,n),method:"PUT",credentials:r}).then(k.f)},unreactWithEmoji:function(e){var t=e.id,n=e.emoji,r=e.credentials;return Se({url:ge(t,n),method:"DELETE",credentials:r}).then(k.f)},reportUser:function(e){var t=e.credentials,n=e.userId,r=e.statusIds,i=e.comment,o=e.forward;return Se({url:"/api/v1/reports",method:"POST",payload:{account_id:n,status_ids:r,comment:i,forward:o},credentials:t})},updateNotificationSettings:function(e){var t=e.credentials,n=e.settings,r=new FormData;return v()(n,(function(e,t){r.append(t,e)})),_e("/api/pleroma/notification_settings",{headers:Ce(t),method:"PUT",body:r}).then((function(e){return e.json()}))},search2:function(e){var t=e.credentials,n=e.q,r=e.resolve,i=e.limit,o=e.offset,s=e.following,a="/api/v2/search",c=[];n&&c.push(["q",encodeURIComponent(n)]),r&&c.push(["resolve",r]),i&&c.push(["limit",i]),o&&c.push(["offset",o]),s&&c.push(["following",!0]),c.push(["with_relationships",!0]);var l=j()(c,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return a+="?".concat(l),_e(a,{headers:Ce(t)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching search result",e)})).then((function(e){return e.json()})).then((function(e){return e.accounts=e.accounts.slice(0,i).map((function(e){return Object(k.g)(e)})),e.statuses=e.statuses.slice(0,i).map((function(e){return Object(k.f)(e)})),e}))},searchUsers:function(e){var t=e.credentials,n=e.query;return Se({url:"/api/v1/accounts/search",params:{q:n,resolve:!0},credentials:t}).then((function(e){return e.map(k.g)}))},fetchKnownDomains:function(e){var t=e.credentials;return Se({url:"/api/v1/instance/peers",credentials:t})},fetchDomainMutes:function(e){var t=e.credentials;return Se({url:"/api/v1/domain_blocks",credentials:t})},muteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"POST",payload:{domain:t},credentials:n})},unmuteDomain:function(e){var t=e.domain,n=e.credentials;return Se({url:"/api/v1/domain_blocks",method:"DELETE",payload:{domain:t},credentials:n})},chats:function(e){var t=e.credentials;return _e("/api/v1/pleroma/chats",{headers:Ce(t)}).then((function(e){return e.json()})).then((function(e){return{chats:e.map(k.b).filter((function(e){return e}))}}))},getOrCreateChat:function(e){var t,n=e.accountId,r=e.credentials;return Se({url:(t=n,"/api/v1/pleroma/chats/by-account-id/".concat(t)),method:"POST",credentials:r})},chatMessages:function(e){var t=e.id,n=e.credentials,r=e.maxId,i=e.sinceId,o=e.limit,s=void 0===o?20:o,a=ve(t),c=[r&&"max_id=".concat(r),i&&"since_id=".concat(i),s&&"limit=".concat(s)].filter((function(e){return e})).join("&");return Se({url:a+=c?"?"+c:"",method:"GET",credentials:n})},sendChatMessage:function(e){var t=e.id,n=e.content,r=e.mediaId,i=void 0===r?null:r,o=e.idempotencyKey,s=e.credentials,a={content:n};i&&(a.media_id=i);var c={};return o&&(c["idempotency-key"]=o),Se({url:ve(t),method:"POST",payload:a,credentials:s,headers:c})},readChat:function(e){var t=e.id,n=e.lastReadId,r=e.credentials;return Se({url:ye(t),method:"POST",payload:{last_read_id:n},credentials:r})},deleteChatMessage:function(e){var t=e.chatId,n=e.messageId,r=e.credentials;return Se({url:we(t,n),method:"DELETE",credentials:r})}};t.c=Me},,,function(e,t,n){"use strict";n.d(t,"i",(function(){return p})),n.d(t,"h",(function(){return b})),n.d(t,"c",(function(){return f})),n.d(t,"a",(function(){return O})),n.d(t,"b",(function(){return j})),n.d(t,"f",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"j",(function(){return y})),n.d(t,"e",(function(){return w})),n.d(t,"d",(function(){return k}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(20);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e,t,n){if(null!=e){if("#"===e[0]||"transparent"===e)return e;if("object"===c()(e)){var r=e;e=r.r,t=r.g,n=r.b}var i=[e,t,n].map((function(e){return e=(e=(e=Math.ceil(e))<0?0:e)>255?255:e})),o=s()(i,3);return e=o[0],t=o[1],n=o[2],"#".concat(((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1))}},h=function(e){return"rgb".split("").reduce((function(t,n){return t[n]=function(e){var t=e/255;return t<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}(e[n]),t}),{})},b=function(e){var t=h(e);return.2126*t.r+.7152*t.g+.0722*t.b},m=function(e,t){var n=b(e),r=b(t),i=n>r?[n,r]:[r,n],o=s()(i,2);return(o[0]+.05)/(o[1]+.05)},f=function(e,t,n){return m(j(n,t),e)},O=function(e,t,n){return 1===t||void 0===t?e:"rgb".split("").reduce((function(r,i){return r[i]=e[i]*t+n[i]*(1-t),r}),{})},j=function(e,t){return t.reduce((function(e,t){var n=s()(t,2),r=n[0],i=n[1];return O(r,i,e)}),e)},g=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},v=function(e,t){return"rgb".split("").reduce((function(n,r){return n[r]=(e[r]+t[r])/2,n}),{})},y=function(e){return"rgba(".concat(Math.floor(e.r),", ").concat(Math.floor(e.g),", ").concat(Math.floor(e.b),", ").concat(e.a,")")},w=function(e,t,n){if(m(e,t)<4.5){var r=void 0!==t.a?{a:t.a}:{},i=Object.assign(r,Object(l.invertLightness)(t).rgb);return!n&&m(e,i)<4.5?Object(l.contrastRatio)(e,t).rgb:i}return t},k=function(e,t){var n={};if("object"===c()(e))n=e;else if("string"==typeof e){if(!e.startsWith("#"))return e;n=g(e)}return y(d(d({},n),{},{a:t}))}},,,,function(e,t,n){"use strict";n.r(t);var r=n(0);var i=n(50),o=n(6),s=n(3);o.c.add(s.ab);var a={props:["user","betterShadow","compact","bot"],data:function(){return{showPlaceholder:!1,defaultAvatar:"".concat(this.$store.state.instance.server+this.$store.state.instance.defaultAvatar)}},components:{StillImage:i.a},methods:{imgSrc:function(e){return!e||this.showPlaceholder?this.defaultAvatar:e},imageLoadError:function(){this.showPlaceholder=!0}}},c=(n(512),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("StillImage"),c=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)(["Avatar",{"-compact":e.compact}])},[e.user?(Object(r.D)(),Object(r.h)(a,{key:0,class:Object(r.w)(["avatar",{"-compact":e.compact,"-better-shadow":e.betterShadow}]),alt:e.user.screen_name_ui,title:e.user.screen_name_ui,src:e.imgSrc(e.user.profile_image_url_original),"image-load-error":e.imageLoadError},null,8,["alt","title","src","image-load-error","class"])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["avatar -placeholder",{"-compact":e.compact}])},null,2)),e.bot?(Object(r.D)(),Object(r.h)(c,{key:2,icon:"robot",class:"bot-indicator"})):Object(r.i)("",!0)],2)}]]);t.default=l},function(e,t,n){"use strict";var r=n(124),i=n.n(r),o=function(e){return e&&e.includes("@")};t.a=function(e,t,n){var r=!t||o(t)||i()(n,t);return{name:r?"external-user-profile":"user-profile",params:r?{id:e}:{name:t}}}},function(e,t,n){"use strict";n.r(t);var r=n(0);var i={name:"Popover",props:{trigger:String,placement:String,boundTo:Object,boundToSelector:String,margin:Object,offset:Object,popoverClass:String,removePadding:Boolean},data:function(){return{hidden:!0,styles:{opacity:0},oldSize:{width:0,height:0}}},methods:{containerBoundingClientRect:function(){return(this.boundToSelector?this.$el.closest(this.boundToSelector):this.$el.offsetParent).getBoundingClientRect()},updateStyles:function(){if(this.hidden)this.styles={opacity:0};else{var e=this.$refs.trigger&&this.$refs.trigger.children[0]||this.$el,t=e.offsetWidth||e.clientWidth,n=e.offsetHeight||e.clientHeight,r=e.getBoundingClientRect(),i=r.left+.5*r.width,o=r.top,s=this.$refs.content,a=this.boundTo&&("container"===this.boundTo.x||"container"===this.boundTo.y)&&this.containerBoundingClientRect(),c=this.margin||{},l=this.boundTo&&"container"===this.boundTo.x?{min:a.left+(c.left||0),max:a.right-(c.right||0)}:{min:0+(c.left||10),max:window.innerWidth-(c.right||10)},u=this.boundTo&&"container"===this.boundTo.y?{min:a.top+(c.top||0),max:a.bottom-(c.bottom||0)}:{min:0+(c.top||50),max:window.innerHeight-(c.bottom||5)},d=0;i-.5*s.offsetWidth<l.min&&(d+=-(i-.5*s.offsetWidth)+l.min),i+d+.5*s.offsetWidth>l.max&&(d-=i+d+.5*s.offsetWidth-l.max);var p="bottom"!==this.placement;o+s.offsetHeight>u.max&&(p=!0),o-s.offsetHeight<u.min&&(p=!1);var h=0;if(this.removePadding&&p){var b=getComputedStyle(e);h=parseFloat(b.paddingTop)+parseFloat(b.paddingBottom)}var m=this.offset&&this.offset.y||0,f=p?-n+h-m-s.offsetHeight:m,O=this.offset&&this.offset.x||0,j=.5*t-.5*s.offsetWidth+d+O;this.styles={opacity:1,transform:"translateX(".concat(Math.round(j),"px) translateY(").concat(Math.round(f),"px)")}}},showPopover:function(){var e=this,t=this.hidden;this.hidden=!1,this.$nextTick((function(){t&&e.$emit("show"),e.updateStyles()}))},hidePopover:function(){this.hidden||this.$emit("close"),this.hidden=!0,this.styles={opacity:0}},onMouseenter:function(e){"hover"===this.trigger&&this.showPopover()},onMouseleave:function(e){"hover"===this.trigger&&this.hidePopover()},onClick:function(e){"click"===this.trigger&&(this.hidden?this.showPopover():this.hidePopover())},onClickOutside:function(e){this.hidden||this.$el.contains(e.target)||this.hidePopover()}},updated:function(){var e=this.$refs.content;e&&(this.oldSize.width===e.offsetWidth&&this.oldSize.height===e.offsetHeight||(this.updateStyles(),this.oldSize={width:e.offsetWidth,height:e.offsetHeight}))},created:function(){document.addEventListener("click",this.onClickOutside)},unmounted:function(){document.removeEventListener("click",this.onClickOutside),this.hidePopover()}},o=(n(527),n(4));const s=n.n(o)()(i,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("div",{onMouseenter:t[1]||(t[1]=(...t)=>e.onMouseenter&&e.onMouseenter(...t)),onMouseleave:t[2]||(t[2]=(...t)=>e.onMouseleave&&e.onMouseleave(...t))},[Object(r.k)("button",{ref:"trigger",class:"button-unstyled popover-trigger-button",type:"button",onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},[Object(r.I)(e.$slots,"trigger")],512),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"content",style:Object(r.x)(e.styles),class:Object(r.w)(["popover",e.popoverClass||"popover-default"])},[Object(r.I)(e.$slots,"content",{class:"popover-inner",close:e.hidePopover})],6))],32)}]]);t.default=s},function(e,t,n){"use strict";var r=n(11),i=n.n(r),o=n(12),s=n.n(o),a=n(40),c=n.n(a),l=n(328),u=n.n(l),d=n(75),p=n.n(d),h=n(0);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var f=function(e){var t=/(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gi.exec(e);return t&&(t[1]||t[2])},O=function(e){var t=e.substring(1,e.length-1).replace(new RegExp("^"+f(e)),"").replace(/\/?$/,"").trim(),n=Array.from(t.matchAll(/([a-z0-9-]+)(?:=("[^"]+?"|'[^']+?'))?/gi)).map((function(e){var t=i()(e,3);t[0];return[t[1],t[2]]})).map((function(e){var t=i()(e,2),n=t[0],r=t[1];return r?[n,r.substring(1,r.length-1)]:[n,!0]}));return Object.fromEntries(n)},j=function(e,t,n){for(var r=[],i="",o=0;o<e.length;o++){var s=e[o];if(":"===s){var a,c=e.slice(o+1),l=!1,u=b(t);try{for(u.s();!(a=u.n()).done;){var d=a.value;if(c.slice(0,d.shortcode.length+1)===d.shortcode+":"){l=d;break}}}catch(e){u.e(e)}finally{u.f()}l?(r.push(i),i="",r.push(n(l)),o+=l.shortcode.length+1):i+=s}else i+=s}return i&&r.push(i),r};function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var y=n(50),w=n(81);const k={class:"HashtagLink"},_=["href","innerHTML"];var S={name:"HashtagLink",props:{url:{required:!0,type:String},content:{required:!0,type:String},tag:{required:!1,type:String,default:""}},methods:{onClick:function(){var e,t,n=this.tag||(e=this.url,!!(t=/tag[s]*\/(\w+)$/g.exec(e))&&t[1]);if(n){var r=this.generateTagLink(n);this.$router.push(r)}else window.open(this.url,"_blank")},generateTagLink:function(e){return"/tag/".concat(e)}}},C=(n(515),n(4));var P=n.n(C)()(S,[["render",function(e,t,n,r,i,o){return Object(h.D)(),Object(h.j)("span",k,[Object(h.k)("a",{href:e.url,class:"original",target:"_blank",onClick:t[0]||(t[0]=Object(h.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"])),innerHTML:e.content},null,8,_)])}]]),x=(n(516),["index"]);t.a={name:"RichContent",components:{MentionsLine:w.b,HashtagLink:P},props:{html:{required:!0,type:String},attentions:{required:!1,default:function(){return[]}},emoji:{required:!0,type:Array},handleLinks:{required:!1,type:Boolean,default:!1},greentext:{required:!1,type:Boolean,default:!1}},render:function(){var e=this,t=T(this.html,this.greentext).newHtml,n=null,r="",o=[],a=[],l=[],u=[],d=0,b=0,m=!1,g=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),n=[],r=[["",n]],i="",o=null,s=function(){return r[r.length-1][1]},a=function(){""!==i&&(s().push(i),i="")},c=function(e){s().push([e])},l=function(e){var t=s(),n=[p()(e),[]];r.push(n),t.push(n)},u=function(e){var t=r[r.length-1];f(r[r.length-1][0])===f(e)?(t.push(e),r.pop()):s().push(e)},d=0;d<e.length;d++){var h=e[d];if("<"===h&&null===o)a(),o=h;else if(">"!==h&&null!==o)o+=h;else if(">"===h&&null!==o){var b=o+=h;o=null;var m=f(b);"/"===b[1]?u(b):t.has(m)||"/"===b[b.length-2]?c(b):l(b)}else i+=h}return o&&(i+=o),a(),n}(t).map((function t(o,c,u,p){if("string"==typeof o){var b=""===o.trim();return o.includes("\n")&&(n=null),b?(r=o,c!==u.length-1&&null!==n?o.trim():o):(n=null,o.includes(":")&&(o=["",j(o,e.emoji,(function(e){var t=e.shortcode,n=e.url;return Object(h.m)(y.a,{class:"emoji img",src:n,title:":".concat(t,":"),alt:":".concat(t,":")},null)}))]),o)}if(Array.isArray(o)){var m=o,g=i()(m,3),v=g[0],k=g[1],_=g[2],S=f(v),C=O(v),P=!(null!==n)||k&&"string"==typeof k[0]&&k[0].match(/^\s/)?"":r;switch(S){case"br":n=null;break;case"img":return["",[P,(x=v,Object(h.m)(y.a,Object(h.u)(O(x),{class:"img"}),null))],""];case"a":if(!e.handleLinks)break;if(C.class&&C.class.includes("mention"))return function(t,r){var i=D(t,r,d++);return i.notifying=e.attentions.some((function(e){return e.statusnet_profile_url===i.url})),a.push(i),null===n&&(n=[]),n.push(i),n.length>w.a&&l.push(i),1===n.length?Object(h.m)(w.b,{mentions:n},null):""}(C,k);if(n=null,C.href)return function(e,t){var n=e.href.replace(/&/g,"&"),r=t.map((function(t){return"string"==typeof t?t.replace(e.href,n):"<span>"===t[0]?Object(h.m)("span",null,[t[1]]):t[1]}));return Object(h.m)("a",Object(h.u)({attrs:e},{href:n}),s()(r))}(C,k);break;case"span":if(e.handleLinks&&C.class&&C.class.includes("h-card"))return["",k.map(t),""]}return void 0!==k?["",[P,[v,k.map(t),_]],""]:["",[P,o],""]}var x})),v=s()(g).reverse().map((function t(n,r,a,l){var d;if("string"==typeof n)return""===n.trim()?n:(m||(m=!0),p()(n));if(Array.isArray(n)){var j=i()(n,2),g=j[0],v=j[1],y=""===g?"":f(g);switch(y){case"a":if(!e.handleLinks)break;var w=O(g);if(w.class&&w.class.includes("hashtag")||"tag"===w.rel)return function(e,t,n){var r=D(e,t,b++),i=(r.index,c()(r,x));u.push(i),n||o.push(i);var s=i.url,a=i.tag,l=i.content;return Object(h.m)(P,{url:s,tag:a,content:l},null)}(w,v,m);w.target="_blank";var k=s()(v).reverse().map(t).reverse();return Object(h.m)("a",w,[k]);case"":return s()(v).reverse().map(t).reverse()}if(void 0!==v){var _=Array.isArray(v)?s()(v).reverse().map(t).reverse():v;return Object(h.m)(y,O(g),"function"==typeof(d=_)||"[object Object]"===Object.prototype.toString.call(d)&&!Object(h.t)(d)?_:{default:function(){return[_]}})}return Object(h.m)(y,null,null)}return n})).reverse(),k=Object(h.m)("span",{class:"RichContent"},[v]),_={lastTags:o,writtenMentions:a,writtenTags:u,invisibleMentions:l};return this.$emit("parseReady",_),k}};var D=function(e,t,n){var r=t.map((function e(t){return"string"==typeof t?t:t[1].map(e).join("")})).join("");return{index:n,url:e.href,tag:e["data-tag"],content:u()(t).join(""),textContent:r}},T=function(e,t){var n=new Set(["p","div"]);return{newHtml:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),r=new Set(["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"]),i=new Set(["br"]),o=new Set([].concat(s()(r.values()),s()(i.values()))),a=new Set(o),c=g(n);try{for(c.s();!(e=c.n()).done;){var l=e.value;a.delete(l)}}catch(e){c.e(e)}finally{c.f()}for(var u=new Set([].concat(s()(a.values()),s()(n.values()))),d=[],p=[],h="",b=null,m=function(){h.trim().length>0?d.push({level:[].concat(p),text:h}):d.push(h),h=""},O=function(e){m(),d.push(e)},j=function(e){m(),d.push(e),p.unshift(f(e))},v=function(e){p[0]===f(e)?(m(),d.push(e),p.shift()):h+=e},y=0;y<t.length;y++){var w=t[y];if("<"===w&&null===b)b=w;else if(">"!==w&&null!==b)b+=w;else if(">"===w&&null!==b){var k=b+=w;b=null;var _=f(k);u.has(_)?i.has(_)?O(k):a.has(_)?"/"===k[1]?v(k):"/"===k[k.length-2]?O(k):j(k):h+=k:h+=k}else"\n"===w?O(w):h+=w}return b&&(h+=b),m(),d}(e).reverse().map((function(e,r,i){if(!e.text)return e;var o=e.text;if(t&&e.level.every((function(e){return n.has(e)}))&&(o.includes(">")||o.includes("<"))){var s=o.replace(/<[^>]+?>/gi,"").replace(/@\w+/gi,"").trim();if(s.startsWith(">"))return"<span class='greentext'>".concat(o,"</span>");if(s.startsWith("<"))return"<span class='cyantext'>".concat(o,"</span>")}return o})).reverse().join("")}}},function(e,t,n){"use strict";n.d(t,"e",(function(){return d})),n.d(t,"b",(function(){return b})),n.d(t,"c",(function(){return m})),n.d(t,"d",(function(){return O})),n.d(t,"a",(function(){return j})),n.d(t,"f",(function(){return g}));var r=n(124),i=n.n(r),o=n(125),s=n.n(o),a=n(49),c=n.n(a),l=n(126),u=n(127),d=function(e){return e.state.statuses.notifications.data},p=function(e){var t=e.rootState||e.state;return[t.config.notificationVisibility.likes&&"like",t.config.notificationVisibility.mentions&&"mention",t.config.notificationVisibility.repeats&&"repeat",t.config.notificationVisibility.follows&&"follow",t.config.notificationVisibility.followRequest&&"follow_request",t.config.notificationVisibility.moves&&"move",t.config.notificationVisibility.emojiReactions&&"pleroma:emoji_reaction",t.config.notificationVisibility.polls&&"poll"].filter((function(e){return e}))},h=["like","mention","repeat","pleroma:emoji_reaction","poll"],b=function(e){return i()(h,e)},m=function(e){return!(b(e.type)&&!e.status)},f=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},O=function(e,t){var n=e.rootState||e.state;if(!t.seen&&p(e).includes(t.type)&&("mention"!==t.type||!function(e,t){if(t.status)return t.status.muted||Object(l.a)(t.status,e.rootGetters.mergedConfig.muteWords).length>0}(e,t))){var r=v(t,e.rootGetters.i18n);Object(u.a)(n,r)}},j=function(e,t){var n=d(e).map((function(e){return e})).sort(f);return(n=s()(n,"seen")).filter((function(n){return(t||p(e)).includes(n.type)}))},g=function(e){return c()(j(e),(function(e){return!e.seen}))},v=function(e,t){var n,r={tag:e.id},i=e.status,o=e.from_profile.name;switch(r.title=o,r.icon=e.from_profile.profile_image_url,e.type){case"like":n="favorited_you";break;case"repeat":n="repeated_you";break;case"follow":n="followed_you";break;case"move":n="migrated_to";break;case"follow_request":n="follow_request";break;case"poll":n="poll_ended"}return"pleroma:emoji_reaction"===e.type?r.body=t.t("notifications.reacted_with",[e.emoji]):n?r.body=t.t("notifications."+n):b(e.type)&&(r.body=e.status.text),i&&i.attachments&&i.attachments.length>0&&!i.nsfw&&i.attachments[0].mimetype.startsWith("image/")&&(r.image=i.attachments[0].url),r}},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return l})),n.d(t,"b",(function(){return c}));var r=n(5),i=n.n(r),o=n(18);function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var c=function(e){if(void 0!==e){var t=e.color,n=e.type;if("string"==typeof t){var r=Object(o.f)(t);if(null!=r){var i="rgb(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),")"),s="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .1)"),c="rgba(".concat(Math.floor(r.r),", ").concat(Math.floor(r.g),", ").concat(Math.floor(r.b),", .2)"),l={"--____highlight-solidColor":i,"--____highlight-tintColor":s,"--____highlight-tintColor2":c};return"striped"===n?a({backgroundImage:["repeating-linear-gradient(135deg,","".concat(s," ,"),"".concat(s," 20px,"),"".concat(c," 20px,"),"".concat(c," 40px")].join(" "),backgroundPosition:"0 0"},l):"solid"===n?a({backgroundColor:c},l):"side"===n?a({backgroundImage:["linear-gradient(to right,","".concat(i," ,"),"".concat(i," 2px,"),"transparent 6px"].join(" "),backgroundPosition:"0 0"},l):void 0}}}},l=function(e){return"USER____"+e.screen_name.replace(/\./g,"_").replace(/@/g,"_AT_")}},,function(e,t,n){"use strict";var r=function(e){return e.match(/flash/)?"flash":e.match(/text\/html/)?"html":e.match(/image/)?"image":e.match(/video/)?"video":e.match(/audio/)?"audio":"unknown"},i={fileType:r,fileMatchesSomeType:function(e,t){return e.some((function(e){return r(t.mimetype)===e}))}};t.a=i},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"alert error"},o={key:1,class:"status-container muted"},s={class:"status-username"},a={key:0,class:"mute-thread"},c={key:1,class:"mute-thread"},l=["title"],u={key:0,class:"pin"},d={class:"faint"},p={class:"right-side faint"},h=["title"],b=Object(r.l)(" "+Object(r.O)(" ")+" "),m=["data-tags"],f={key:0,class:"left-side"},O=["href"],j={class:"right-side"},g={key:1,class:"status-heading"},v={class:"heading-name-row"},y={class:"heading-left"},w=["title"],k=["title"],_=["src"],S={class:"heading-right"},C=["title"],P=["title"],x=["title","aria-expanded"],D=["title"],T={key:0,class:"heading-reply-row"},I={key:0,class:"glued-label reply-glued-label"},$=["aria-label"],z=Object(r.l)(" "+Object(r.O)(" ")+" "),M={class:"reply-to-text"},U={key:1,class:"reply-to-no-popover"},F={class:"reply-to-text"},E={key:1,class:"glued-label"},L=["aria-label"],R={class:"mentions-text"},A={key:2,class:"replies"},N=["title"],B={key:1,class:"faint"},V=["onClick"],H={key:0,class:"favs-repeated-users"},q={class:"stats"},J={class:"stat-count"},W={class:"stat-title"},Y={class:"stat-number"},G={class:"stat-count"},K={class:"stat-title"},X={class:"stat-number"},Z={class:"avatar-row"},Q={key:4,class:"status-actions"},ee={key:3,class:"gravestone"},te={class:"left-side"},ne={class:"right-side"},re={class:"deleted-text"},ie={key:4,class:"status-container reply-form"};var oe=n(5),se=n.n(oe),ae=n(136),ce=n.n(ae),le=n(75),ue=n.n(le);const de={class:"ReplyButton"},pe=["title"],he={key:1},be={key:2,class:"action-counter"};var me=n(6),fe=n(3);me.c.add(fe.Y);var Oe={name:"ReplyButton",props:["status","replying"],computed:{loggedIn:function(){return!!this.$store.state.users.currentUser}}},je=(n(546),n(4)),ge=n.n(je);var ve=ge()(Oe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",de,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",{"-active":e.replying}]),title:e.$t("tool_tip.reply"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.$emit("toggle"),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"reply"})],10,pe)):(Object(r.D)(),Object(r.j)("span",he,[Object(r.m)(a,{icon:"reply",class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.reply")},null,8,["title"])])),e.status.replies_count>0?(Object(r.D)(),Object(r.j)("span",be,Object(r.O)(e.status.replies_count),1)):Object(r.i)("",!0)])}]]);const ye={class:"FavoriteButton"},we=["title"],ke={key:1},_e={key:2,class:"action-counter"};var Se=n(8),Ce=n(41);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}me.c.add(fe.jb,Ce.d);var xe={props:["status","loggedIn"],data:function(){return{animated:!1}},methods:{favorite:function(){var e=this;this.status.favorited?this.$store.dispatch("unfavorite",{id:this.status.id}):this.$store.dispatch("favorite",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(Se.c)(["mergedConfig"]))};n(547);var De=ge()(xe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",ye,[e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.favorited&&"-favorited"]),title:e.$t("tool_tip.favorite"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.favorite(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:[e.status.favorited?"fas":"far","star"],spin:e.animated},null,8,["icon","spin"])],10,we)):(Object(r.D)(),Object(r.j)("span",ke,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",title:e.$t("tool_tip.favorite"),icon:["far","star"]},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.fave_num>0?(Object(r.D)(),Object(r.j)("span",_e,Object(r.O)(e.status.fave_num),1)):Object(r.i)("",!0)])}]]);const Te={class:"reaction-picker-filter"},Ie=["placeholder"],$e={class:"reaction-picker"},ze=["title","onClick"],Me=Object(r.k)("div",{class:"reaction-picker-divider"},null,-1),Ue=["title","onClick"],Fe=["src"],Ee={key:1},Le=Object(r.k)("div",{class:"reaction-bottom-fader"},null,-1),Re=["title"];var Ae=n(12),Ne=n.n(Ae),Be=n(24);me.c.add(Ce.c);var Ve={props:["status"],data:function(){return{filterWord:""}},components:{Popover:Be.default},methods:{addReaction:function(e,t,n){var r=this.status.emoji_reactions.find((function(e){return e.name===t}));r&&r.me?this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:t}):this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:t}),n()},focusInput:function(){var e=this;this.$nextTick((function(){var t=e.$el.querySelector("input");t&&t.focus()}))}},computed:{commonEmojis:function(){return[{displayText:"thumbsup",replacement:"👍"},{displayText:"angry",replacement:"😠"},{displayText:"eyes",replacement:"👀"},{displayText:"joy",replacement:"😂"},{displayText:"fire",replacement:"🔥"}]},emojis:function(){if(""!==this.filterWord){for(var e=this.filterWord.toLowerCase(),t=[],n=0,r=[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji));n<r.length;n++){var i=r[n];if(i.replacement===this.filterWord)return[i];var o=i.displayText.toLowerCase().indexOf(e);o>-1&&(Array.isArray(t[o])||(t[o]=[]),t[o].push(i))}return t.flat()}return[].concat(Ne()(this.$store.state.instance.emoji),Ne()(this.$store.state.instance.customEmoji))||[]},mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(548);var He=ge()(Ve,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"ReactButton",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"",onShow:e.focusInput},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Te,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.filterWord=t),size:"1",placeholder:e.$t("emoji.search_emoji")},null,8,Ie),[[r.S,e.filterWord]])]),Object(r.k)("div",$e,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.commonEmojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.replacement,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},Object(r.O)(t.replacement),9,ze))),128)),Me,(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,(t,i)=>(Object(r.D)(),Object(r.j)("span",{key:i,class:"emoji-button",title:t.displayText,onClick:r=>e.addReaction(r,t.replacement,n)},[!1!==t.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.imageUrl,width:"30px",class:"custom-reaction"},null,8,Fe)):(Object(r.D)(),Object(r.j)("span",Ee,Object(r.O)(t.replacement),1))],8,Ue))),128)),Le])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled popover-trigger",title:e.$t("tool_tip.add_reaction")},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:["far","smile-beam"]})],8,Re)]),_:1},8,["onShow"])}]]);const qe={class:"RetweetButton"},Je=["title"],We={key:1},Ye={key:2},Ge={key:3,class:"no-event"};me.c.add(fe.Z);var Ke={props:["status","loggedIn","visibility"],data:function(){return{animated:!1}},methods:{retweet:function(){var e=this;this.status.repeated?this.$store.dispatch("unretweet",{id:this.status.id}):this.$store.dispatch("retweet",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig}}};n(549);var Xe=ge()(Ke,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",qe,["private"!==e.visibility&&"direct"!==e.visibility&&e.loggedIn?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled interactive",e.status.repeated&&"-repeated"]),title:e.$t("tool_tip.repeat"),onClick:t[0]||(t[0]=Object(r.Y)(t=>e.retweet(),["prevent"]))},[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",spin:e.animated},null,8,["spin"])],10,Je)):e.loggedIn?(Object(r.D)(),Object(r.j)("span",We,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"lock",title:e.$t("timeline.no_retweet_hint")},null,8,["title"])])):(Object(r.D)(),Object(r.j)("span",Ye,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"])])),!e.mergedConfig.hidePostStats&&e.status.repeat_num>0?(Object(r.D)(),Object(r.j)("span",Ge,Object(r.O)(e.status.repeat_num),1)):Object(r.i)("",!0)])}]]);const Ze={class:"dropdown-menu"},Qe=["onClick"],et=["onClick"],tt=["onClick"],nt=["onClick"],rt=["onClick"],it=["onClick"],ot=["href"],st=["onClick"],at={class:"button-unstyled popover-trigger"};me.c.add(fe.w,fe.j,Ce.a,fe.C,fe.qb,fe.fb,fe.A,Ce.b);var ct={props:["status"],components:{Popover:Be.default},methods:{deleteStatus:function(){window.confirm(this.$t("status.delete_confirm"))&&this.$store.dispatch("deleteStatus",{id:this.status.id})},pinStatus:function(){var e=this;this.$store.dispatch("pinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unpinStatus:function(){var e=this;this.$store.dispatch("unpinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},muteConversation:function(){var e=this;this.$store.dispatch("muteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unmuteConversation:function(){var e=this;this.$store.dispatch("unmuteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},copyLink:function(){var e=this;navigator.clipboard.writeText(this.statusLink).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},bookmarkStatus:function(){var e=this;this.$store.dispatch("bookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unbookmarkStatus:function(){var e=this;this.$store.dispatch("unbookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},reportStatus:function(){this.$store.dispatch("openUserReportingModal",{userId:this.status.user.id,statusIds:[this.status.id]})}},computed:{currentUser:function(){return this.$store.state.users.currentUser},canDelete:function(){if(this.currentUser)return this.currentUser.rights.moderator||this.currentUser.rights.admin||this.status.user.id===this.currentUser.id},ownStatus:function(){return this.status.user.id===this.currentUser.id},canPin:function(){return this.ownStatus&&("public"===this.status.visibility||"unlisted"===this.status.visibility)},canMute:function(){return!!this.currentUser},statusLink:function(){return"".concat(this.$store.state.instance.server).concat(this.$router.resolve({name:"conversation",params:{id:this.status.id}}).href)}}};n(550);var lt=ge()(ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{class:"ExtraButtons",trigger:"click",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(({close:n})=>[Object(r.k)("div",Ze,[e.canMute&&!e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.muteConversation&&e.muteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.mute_conversation")),1)])):Object(r.i)("",!0),e.canMute&&e.status.thread_muted?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.unmuteConversation&&e.unmuteConversation(...t),["prevent"]))},[Object(r.m)(a,{"fixed-width":"",icon:"eye-slash"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unmute_conversation")),1)])):Object(r.i)("",!0),!e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[2]||(t[2]=Object(r.Y)((...t)=>e.pinStatus&&e.pinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.pin")),1)],8,Qe)):Object(r.i)("",!0),e.status.pinned&&e.canPin?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(r.Y)((...t)=>e.unpinStatus&&e.unpinStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"thumbtack"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unpin")),1)],8,et)):Object(r.i)("",!0),e.status.bookmarked?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(r.Y)((...t)=>e.bookmarkStatus&&e.bookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","bookmark"]}),Object(r.k)("span",null,Object(r.O)(e.$t("status.bookmark")),1)],8,tt)),e.status.bookmarked?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(r.Y)((...t)=>e.unbookmarkStatus&&e.unbookmarkStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"bookmark"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.unbookmark")),1)],8,nt)):Object(r.i)("",!0),e.canDelete?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[6]||(t[6]=Object(r.Y)((...t)=>e.deleteStatus&&e.deleteStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"times"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.delete")),1)],8,rt)):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[7]||(t[7]=Object(r.Y)((...t)=>e.copyLink&&e.copyLink(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:"share-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.copy_link")),1)],8,it),e.status.is_local?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:7,class:"button-default dropdown-item dropdown-item-icon",title:"Source",href:e.status.external_url,target:"_blank"},[Object(r.m)(a,{"fixed-width":"",icon:"external-link-alt"}),Object(r.k)("span",null,Object(r.O)(e.$t("status.external_source")),1)],8,ot)),Object(r.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[8]||(t[8]=Object(r.Y)((...t)=>e.reportStatus&&e.reportStatus(...t),["prevent"])),n]},[Object(r.m)(a,{"fixed-width":"",icon:["far","flag"]}),Object(r.k)("span",null,Object(r.O)(e.$t("user_card.report")),1)],8,st)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",at,[Object(r.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"ellipsis-h"})])]),_:1})}]]),ut=n(57),dt=n(35),pt=n(22),ht=n(144),bt=n(59),mt=n(45),ft=n(25);const Ot={key:1,class:"status-preview-no-content faint"},jt={key:2,class:"status-preview-no-content"};var gt=n(30),vt=n.n(gt);me.c.add(fe.r);var yt={name:"StatusPopover",props:["statusId"],data:function(){return{error:!1}},computed:{status:function(){return vt()(this.$store.state.statuses.allStatuses,{id:this.statusId})}},components:{Status:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,34))})),Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))}))},methods:{enter:function(){var e=this;if(!this.status){if(!this.statusId)return void(this.error=!0);this.$store.dispatch("fetchStatus",this.statusId).then((function(t){return e.error=!1})).catch((function(t){return e.error=!0}))}}}};n(552);var wt=ge()(yt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("FAIcon"),l=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(l,{trigger:"hover","popover-class":"popover-default status-popover","bound-to":{x:"container"},onShow:e.enter},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[e.status?(Object(r.D)(),Object(r.h)(a,{key:0,"is-preview":!0,statusoid:e.status,compact:!0},null,8,["statusoid"])):e.error?(Object(r.D)(),Object(r.j)("div",Ot,Object(r.O)(e.$t("status.status_unavailable")),1)):(Object(r.D)(),Object(r.j)("div",jt,[Object(r.m)(c,{icon:"circle-notch",spin:"",size:"2x"})]))]),_:3},8,["onShow"])}]]);const kt={class:"user-list-popover"},_t={class:"user-list-names"},St={class:"user-list-screen-name"};me.c.add(fe.r);var Ct={name:"UserListPopover",props:["users"],components:{RichContent:ft.a,Popover:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,24))})),UserAvatar:Object(r.n)((function(){return Promise.resolve().then(n.bind(null,22))}))},computed:{usersCapped:function(){return this.users.slice(0,16)}}};n(553);var Pt=ge()(Ct,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserAvatar"),c=Object(r.J)("RichContent"),l=Object(r.J)("FAIcon"),u=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(u,{trigger:"hover",placement:"top",offset:{y:5}},{trigger:Object(r.V)(()=>[Object(r.I)(e.$slots,"default")]),content:Object(r.V)(()=>[Object(r.k)("div",kt,[e.users.length?(Object(r.D)(!0),Object(r.j)(r.a,{key:0},Object(r.H)(e.usersCapped,e=>(Object(r.D)(),Object(r.j)("div",{key:e.id,class:"user-list-row"},[Object(r.m)(a,{user:e,class:"avatar-small",compact:!0},null,8,["user"]),Object(r.k)("div",_t,[Object(r.m)(c,{class:"username",title:"@"+e.screen_name_ui,html:e.name_html,emoji:e.emoji},null,8,["title","html","emoji"]),Object(r.k)("span",St,Object(r.O)(e.screen_name_ui),1)])]))),128)):(Object(r.D)(),Object(r.h)(l,{key:1,icon:"circle-notch",spin:"",size:"3x"}))])]),_:3})}]]);const xt={class:"emoji-reactions"},Dt=["onClick"],Tt={key:0},It=["src","title"],$t={key:1},zt={class:"reaction-emoji unicode-emoji"};var Mt={name:"EmojiReactions",components:{UserAvatar:pt.default,UserListPopover:Pt},props:["status"],data:function(){return{showAll:!1}},computed:{tooManyReactions:function(){return this.status.emoji_reactions.length>12},emojiReactions:function(){return this.showAll?this.status.emoji_reactions:this.status.emoji_reactions.slice(0,12)},showMoreString:function(){return"+".concat(this.status.emoji_reactions.length-12)},accountsForEmoji:function(){return this.status.emoji_reactions.reduce((function(e,t){return e[t.name]=t.accounts||[],e}),{})},loggedIn:function(){return!!this.$store.state.users.currentUser}},methods:{toggleShowAll:function(){this.showAll=!this.showAll},reactedWith:function(e){return this.status.emoji_reactions.find((function(t){return t.name===e})).me},fetchEmojiReactionsByIfMissing:function(){this.status.emoji_reactions.find((function(e){return!e.accounts}))&&this.$store.dispatch("fetchEmojiReactionsBy",this.status.id)},reactWith:function(e){this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:e})},unreact:function(e){this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:e})},emojiOnClick:function(e,t){this.loggedIn&&(this.reactedWith(e)?this.unreact(e):this.reactWith(e))}}};n(554);var Ut=ge()(Mt,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("UserListPopover");return Object(r.D)(),Object(r.j)("div",xt,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojiReactions,n=>(Object(r.D)(),Object(r.h)(a,{key:n.name,users:e.accountsForEmoji[n.name]},{default:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["emoji-reaction btn button-default",{"picked-reaction":e.reactedWith(n.name),"not-clickable":!e.loggedIn}]),onClick:t=>e.emojiOnClick(n.name,t),onMouseenter:t[0]||(t[0]=t=>e.fetchEmojiReactionsByIfMissing())},[null!==n.url?(Object(r.D)(),Object(r.j)("span",Tt,[Object(r.k)("img",{src:n.url,title:n.name,class:"reaction-emoji",width:"2.55em"},null,8,It),Object(r.l)(" "+Object(r.O)(n.count),1)])):(Object(r.D)(),Object(r.j)("span",$t,[Object(r.k)("span",zt,Object(r.O)(n.name),1),Object(r.k)("span",null,Object(r.O)(n.count),1)]))],42,Dt)]),_:2},1032,["users"]))),128)),e.tooManyReactions?(Object(r.D)(),Object(r.j)("a",{key:0,class:"emoji-reaction-expand faint",href:"javascript:void(0)",onClick:t[1]||(t[1]=(...t)=>e.toggleShowAll&&e.toggleShowAll(...t))},Object(r.O)(e.showAll?e.$t("general.show_less"):e.showMoreString),1)):Object(r.i)("",!0)])}]]),Ft=n(81),Et=n(79),Lt=n(23),Rt=n(31),At=n(126);function Nt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Bt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nt(Object(n),!0).forEach((function(t){se()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}me.c.add(fe.y,fe.I,fe.O,fe.P,fe.rb,fe.Z,fe.Y,fe.W,fe.jb,fe.ib,fe.w,fe.C,fe.B,fe.qb,fe.q,fe.n,fe.e);var Vt,Ht=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},qt=function(e,t,n){var r=Ht(t),i="controlledSet".concat(r),o="uncontrolled".concat(r);e[i]?e[i](n):e[o]=n},Jt={name:"Status",components:{ReplyButton:ve,FavoriteButton:De,ReactButton:He,RetweetButton:Xe,ExtraButtons:lt,PostStatusForm:ut.a,UserCard:dt.a,UserAvatar:pt.default,AvatarList:ht.a,Timeago:bt.a,StatusPopover:wt,UserListPopover:Pt,EmojiReactions:Ut,StatusContent:mt.a,RichContent:ft.a,MentionLink:Et.a,MentionsLine:Ft.b},props:["statusoid","expandable","inConversation","focused","highlight","compact","replies","isPreview","noHeading","inlineExpanded","showPinned","inProfile","profileUserId","simpleTree","controlledThreadDisplayStatus","controlledToggleThreadDisplay","showOtherRepliesAsButton","controlledShowingTall","controlledToggleShowingTall","controlledExpandingSubject","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject","controlledReplying","controlledToggleReplying","controlledMediaPlaying","controlledSetMediaPlaying","dive"],data:function(){return{uncontrolledReplying:!1,unmuted:!1,userExpanded:!1,uncontrolledMediaPlaying:[],suspendable:!0,error:null,headTailLinks:null}},computed:Bt(Bt({},(Vt=["replying","mediaPlaying"],Vt.reduce((function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{muteWords:function(){return this.mergedConfig.muteWords},showReasonMutedThread:function(){return(this.status.thread_muted||this.status.reblog&&this.status.reblog.thread_muted)&&!this.inConversation},repeaterClass:function(){var e=this.statusoid.user;return Object(Rt.a)(e)},userClass:function(){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user;return Object(Rt.a)(e)},deleted:function(){return this.statusoid.deleted},repeaterStyle:function(){var e=this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])},userStyle:function(){if(!this.noHeading){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user,t=this.mergedConfig.highlight;return Object(Rt.b)(t[e.screen_name])}},userProfileLink:function(){return this.generateUserProfileLink(this.status.user.id,this.status.user.screen_name)},replyProfileLink:function(){if(this.isReply){var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e?e.statusnet_profile_url:"NOT_FOUND"}},retweet:function(){return!!this.statusoid.retweeted_status},retweeterUser:function(){return this.statusoid.user},retweeter:function(){return this.statusoid.user.name||this.statusoid.user.screen_name_ui},retweeterHtml:function(){return this.statusoid.user.name},retweeterProfileLink:function(){return this.generateUserProfileLink(this.statusoid.user.id,this.statusoid.user.screen_name)},status:function(){return this.retweet?this.statusoid.retweeted_status:this.statusoid},statusFromGlobalRepository:function(){return this.$store.state.statuses.allStatusesObject[this.status.id]},loggedIn:function(){return!!this.currentUser},muteWordHits:function(){return Object(At.a)(this.status,this.muteWords)},rtBotStatus:function(){return this.statusoid.user.bot},botStatus:function(){return this.status.user.bot},botIndicator:function(){return this.botStatus&&!this.hideBotIndication},rtBotIndicator:function(){return this.rtBotStatus&&!this.hideBotIndication},mentionsLine:function(){var e=this;if(!this.headTailLinks)return[];var t=new Set(this.headTailLinks.writtenMentions.map((function(e){return e.url})));return this.status.attentions.filter((function(n){return n.id!==e.status.in_reply_to_user_id&&n.statusnet_profile_url!==e.status.user.statusnet_profile_url&&!t.has(n.statusnet_profile_url)})).map((function(e){return{url:e.statusnet_profile_url,content:e.screen_name,userId:e.id}}))},hasMentionsLine:function(){return this.mentionsLine.length>0},muted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.userIsMuted||status.thread_muted||this.muteWordHits.length>0||this.muteBotStatuses&&this.botStatus&&!this.compact;return!this.unmuted&&!this.shouldNotMute&&e},userIsMuted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.status,t=e.reblog,n=this.$store.getters.relationship(e.user.id),r=t&&this.$store.getters.relationship(t.user.id);return e.muted||t&&t.muted||n.muting||r&&r.muting},shouldNotMute:function(){var e=this.status,t=e.reblog;return(this.inProfile&&(!t&&e.user.id===this.profileUserId||t&&t.user.id===this.profileUserId)||this.inConversation&&e.thread_muted)&&!this.muteWordHits.length>0},hideMutedUsers:function(){return this.mergedConfig.hideMutedPosts},hideMutedThreads:function(){return this.mergedConfig.hideMutedThreads},hideFilteredStatuses:function(){return this.mergedConfig.hideFilteredStatuses},hideWordFilteredPosts:function(){return this.mergedConfig.hideWordFilteredPosts},hideStatus:function(){return!this.shouldNotMute&&(this.muted&&this.hideFilteredStatuses||this.userIsMuted&&this.hideMutedUsers||this.status.thread_muted&&this.hideMutedThreads||this.muteWordHits.length>0&&this.hideWordFilteredPosts)},isFocused:function(){return!!this.focused||!!this.inConversation&&this.status.id===this.highlight},isReply:function(){return!(!this.status.in_reply_to_status_id||!this.status.in_reply_to_user_id)},replyToName:function(){if(this.status.in_reply_to_screen_name)return this.status.in_reply_to_screen_name;var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e&&e.screen_name_ui},replySubject:function(){if(!this.status.summary)return"";var e=ue()(this.status.summary),t=this.mergedConfig.subjectLineBehavior,n=e.match(/^re[: ]/i);return"noop"!==t&&n||"masto"===t?e:"email"===t?"re: ".concat(e):"noop"===t?"":void 0},combinedFavsAndRepeatsUsers:function(){var e=[].concat(this.statusFromGlobalRepository.favoritedBy,this.statusFromGlobalRepository.rebloggedBy);return ce()(e,"id")},tags:function(){return this.status.tags.filter((function(e){return e.hasOwnProperty("name")})).map((function(e){return e.name})).join(" ")},hidePostStats:function(){return this.mergedConfig.hidePostStats},muteBotStatuses:function(){return this.mergedConfig.muteBotStatuses},hideBotIndication:function(){return this.mergedConfig.hideBotIndication},currentUser:function(){return this.$store.state.users.currentUser},betterShadow:function(){return this.$store.state.interface.browserSupport.cssFilter},mergedConfig:function(){return this.$store.getters.mergedConfig},isSuspendable:function(){return!this.replying&&0===this.mediaPlaying.length},inThreadForest:function(){return!!this.controlledThreadDisplayStatus},threadShowing:function(){return"showing"===this.controlledThreadDisplayStatus},visibilityLocalized:function(){return this.$i18n.t("general.scope_in_timeline."+this.status.visibility)}}),methods:{visibilityIcon:function(e){switch(e){case"private":return"lock";case"unlisted":return"lock-open";case"direct":return"envelope";case"local":return"users";default:return"globe"}},showError:function(e){this.error=e},clearError:function(){this.error=void 0},toggleReplying:function(){!function(e,t){var n=Ht(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]}(this,"replying")},gotoOriginal:function(e){this.inConversation&&this.$emit("goto",e)},toggleExpanded:function(){this.$emit("toggleExpanded")},toggleMute:function(){this.unmuted=!this.unmuted},toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e,t){return Object(Lt.a)(e,t,this.$store.state.instance.restrictedNicknames)},addMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.concat(e))},removeMediaPlaying:function(e){qt(this,"mediaPlaying",this.mediaPlaying.filter((function(t){return t!==e})))},setHeadTailLinks:function(e){this.headTailLinks=e},toggleThreadDisplay:function(){this.controlledToggleThreadDisplay()},scrollIfHighlighted:function(e){var t=e;if(this.status.id===t){var n=this.$el.getBoundingClientRect();n.top<100||n.height>=window.innerHeight-50?window.scrollBy(0,n.top-100):n.bottom>window.innerHeight-50&&window.scrollBy(0,n.bottom-window.innerHeight+50)}}},watch:{highlight:function(e){this.scrollIfHighlighted(e)},"status.repeat_num":function(e){this.isFocused&&this.statusFromGlobalRepository.rebloggedBy&&this.statusFromGlobalRepository.rebloggedBy.length!==e&&this.$store.dispatch("fetchRepeats",this.status.id)},"status.fave_num":function(e){this.isFocused&&this.statusFromGlobalRepository.favoritedBy&&this.statusFromGlobalRepository.favoritedBy.length!==e&&this.$store.dispatch("fetchFavs",this.status.id)},isSuspendable:function(e){this.suspendable=e}}};n(555);const Wt=ge()(Jt,[["render",function(e,t,n,oe,se,ae){const ce=Object(r.J)("FAIcon"),le=Object(r.J)("router-link"),ue=Object(r.J)("UserAvatar"),de=Object(r.J)("RichContent"),pe=Object(r.J)("UserCard"),he=Object(r.J)("Timeago"),be=Object(r.J)("StatusPopover"),me=Object(r.J)("MentionLink"),fe=Object(r.J)("MentionsLine"),Oe=Object(r.J)("StatusContent"),je=Object(r.J)("UserListPopover"),ge=Object(r.J)("AvatarList"),ve=Object(r.J)("EmojiReactions"),ye=Object(r.J)("reply-button"),we=Object(r.J)("retweet-button"),ke=Object(r.J)("favorite-button"),_e=Object(r.J)("ReactButton"),Se=Object(r.J)("extra-buttons"),Ce=Object(r.J)("PostStatusForm");return e.hideStatus?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:0,ref:"root",class:Object(r.w)(["Status",[{"-focused":e.isFocused},{"-conversation":e.inlineExpanded}]])},[e.error?(Object(r.D)(),Object(r.j)("div",i,[Object(r.l)(Object(r.O)(e.error)+" ",1),Object(r.k)("span",{class:"fa-scale-110 fa-old-padding",onClick:t[0]||(t[0]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(ce,{icon:"times"})])])):Object(r.i)("",!0),e.muted&&!e.isPreview?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("small",s,[e.muted&&e.retweet?(Object(r.D)(),Object(r.h)(ce,{key:0,class:"fa-scale-110 fa-old-padding repeat-icon",icon:"retweet"})):Object(r.i)("",!0),Object(r.m)(le,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["to"])]),e.showReasonMutedThread?(Object(r.D)(),Object(r.j)("small",a,Object(r.O)(e.$t("status.thread_muted")),1)):Object(r.i)("",!0),e.showReasonMutedThread&&e.muteWordHits.length>0?(Object(r.D)(),Object(r.j)("small",c,Object(r.O)(e.$t("status.thread_muted_and_words")),1)):Object(r.i)("",!0),Object(r.k)("small",{class:"mute-words",title:e.muteWordHits.join(", ")},Object(r.O)(e.muteWordHits.join(", ")),9,l),Object(r.k)("button",{class:"unmute button-unstyled",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{icon:"eye-slash",class:"fa-scale-110 fa-old-padding"})])])):(Object(r.D)(),Object(r.j)(r.a,{key:2},[e.showPinned?(Object(r.D)(),Object(r.j)("div",u,[Object(r.m)(ce,{icon:"thumbtack",class:"faint"}),Object(r.k)("span",d,Object(r.O)(e.$t("status.pinned")),1)])):Object(r.i)("",!0),!e.retweet||e.noHeading||e.inConversation?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)([[e.repeaterClass,{highlighted:e.repeaterStyle}],"status-container repeat-info"]),style:Object(r.x)([e.repeaterStyle])},[e.retweet?(Object(r.D)(),Object(r.h)(ue,{key:0,class:"left-side repeater-avatar",bot:e.rtBotIndicator,"better-shadow":e.betterShadow,user:e.statusoid.user},null,8,["bot","better-shadow","user"])):Object(r.i)("",!0),Object(r.k)("div",p,[Object(r.k)("span",{class:"status-username repeater-name",title:e.retweeter},[e.retweeterHtml?(Object(r.D)(),Object(r.h)(le,{key:0,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.m)(de,{html:e.retweeterHtml,emoji:e.retweeterUser.emoji},null,8,["html","emoji"])]),_:1},8,["to"])):(Object(r.D)(),Object(r.h)(le,{key:1,to:e.retweeterProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.retweeter),1)]),_:1},8,["to"]))],8,h),b,Object(r.m)(ce,{icon:"retweet",class:"repeat-icon",title:e.$t("tool_tip.repeat")},null,8,["title"]),Object(r.l)(" "+Object(r.O)(e.$t("timeline.repeated")),1)])],6)),e.deleted?(Object(r.D)(),Object(r.j)("div",ee,[Object(r.k)("div",te,[Object(r.m)(ue,{class:"post-avatar",compact:e.compact,bot:e.botIndicator},null,8,["compact","bot"])]),Object(r.k)("div",ne,[Object(r.k)("div",re,Object(r.O)(e.$t("status.status_deleted")),1),e.replying?(Object(r.D)(),Object(r.h)(ye,{key:0,replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"])):Object(r.i)("",!0)])])):(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)([[e.userClass,{highlighted:e.userStyle,"-repeat":e.retweet&&!e.inConversation}],"status-container"]),style:Object(r.x)([e.userStyle]),"data-tags":e.tags},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",f,[Object(r.k)("a",{href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(ue,{class:"post-avatar",bot:e.botIndicator,compact:e.compact,"better-shadow":e.betterShadow,user:e.status.user},null,8,["bot","compact","better-shadow","user"])],40,O)])),Object(r.k)("div",j,[e.userExpanded?(Object(r.D)(),Object(r.h)(pe,{key:0,"user-id":e.status.user.id,rounded:!0,bordered:!0,class:"usercard"},null,8,["user-id"])):Object(r.i)("",!0),e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.k)("div",v,[Object(r.k)("div",y,[e.status.user.name_html?(Object(r.D)(),Object(r.j)("h4",{key:0,class:"status-username",title:e.status.user.name},[Object(r.m)(de,{html:e.status.user.name,emoji:e.status.user.emoji},null,8,["html","emoji"])],8,w)):(Object(r.D)(),Object(r.j)("h4",{key:1,class:"status-username",title:e.status.user.name},Object(r.O)(e.status.user.name),9,k)),Object(r.m)(le,{class:"account-name",title:e.status.user.screen_name_ui,to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.status.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.status.user&&e.status.user.favicon?(Object(r.D)(),Object(r.j)("img",{key:2,class:"status-favicon",src:e.status.user.favicon},null,8,_)):Object(r.i)("",!0)]),Object(r.k)("span",S,[Object(r.m)(le,{class:"timeago faint-link",to:{name:"conversation",params:{id:e.status.id}}},{default:Object(r.V)(()=>[Object(r.m)(he,{time:e.status.created_at,"auto-update":60},null,8,["time"])]),_:1},8,["to"]),e.status.visibility?(Object(r.D)(),Object(r.j)("span",{key:0,class:"visibility-icon",title:e.visibilityLocalized},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.visibilityIcon(e.status.visibility)},null,8,["icon"])],8,C)):Object(r.i)("",!0),e.expandable&&!e.isPreview?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled",title:e.$t("status.expand"),onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"plus-square"})],8,P)):Object(r.i)("",!0),e.unmuted?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",icon:"eye-slash",class:"fa-scale-110"})])):Object(r.i)("",!0),e.inThreadForest&&e.replies&&e.replies.length&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled",title:e.threadShowing?e.$t("status.thread_hide"):e.$t("status.thread_show"),"aria-expanded":e.threadShowing?"true":"false",onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleThreadDisplay&&e.toggleThreadDisplay(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:e.threadShowing?"chevron-up":"chevron-down"},null,8,["icon"])],8,x)):Object(r.i)("",!0),e.dive&&!e.simpleTree?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled",title:e.$t("status.show_only_conversation_under_this"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},[Object(r.m)(ce,{"fixed-width":"",class:"fa-scale-110",icon:"angle-double-right"})],8,D)):Object(r.i)("",!0)])]),e.isReply||e.hasMentionsLine?(Object(r.D)(),Object(r.j)("div",T,[e.isReply?(Object(r.D)(),Object(r.j)("span",I,[e.isPreview?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("span",F,Object(r.O)(e.$t("status.reply_to")),1)])):(Object(r.D)(),Object(r.h)(be,{key:0,"status-id":e.status.parent_visible&&e.status.in_reply_to_status_id,class:Object(r.w)(["reply-to-popover",{"-strikethrough":!e.status.parent_visible}]),style:{"min-width":"0"}},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled reply-to","aria-label":e.$t("tool_tip.reply"),onClick:t[7]||(t[7]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.m)(ce,{class:"fa-scale-110 fa-old-padding",icon:"reply",flip:"horizontal"}),z,Object(r.k)("span",M,Object(r.O)(e.$t("status.reply_to")),1)],8,$)]),_:1},8,["status-id","class"])),Object(r.m)(me,{content:e.replyToName,url:e.replyProfileLink,"user-id":e.status.in_reply_to_user_id,"user-screen-name":e.status.in_reply_to_screen_name},null,8,["content","url","user-id","user-screen-name"])])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.j)("span",E,[Object(r.k)("span",{class:"mentions","aria-label":e.$t("tool_tip.mentions"),onClick:t[8]||(t[8]=Object(r.Y)(t=>e.gotoOriginal(e.status.in_reply_to_status_id),["prevent"]))},[Object(r.k)("span",R,Object(r.O)(e.$t("status.mentions")),1)],8,L),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:0,mentions:e.mentionsLine.slice(0,1),class:"mentions-line-first"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0),e.hasMentionsLine?(Object(r.D)(),Object(r.h)(fe,{key:2,mentions:e.mentionsLine.slice(1),class:"mentions-line"},null,8,["mentions"])):Object(r.i)("",!0)])):Object(r.i)("",!0)])),Object(r.m)(Oe,{ref:"content",status:e.status,"no-heading":e.noHeading,highlight:e.highlight,focused:e.isFocused,"controlled-showing-tall":e.controlledShowingTall,"controlled-expanding-subject":e.controlledExpandingSubject,"controlled-showing-long-subject":e.controlledShowingLongSubject,"controlled-toggle-showing-tall":e.controlledToggleShowingTall,"controlled-toggle-expanding-subject":e.controlledToggleExpandingSubject,"controlled-toggle-showing-long-subject":e.controlledToggleShowingLongSubject,onMediaplay:t[9]||(t[9]=t=>e.addMediaPlaying(t)),onMediapause:t[10]||(t[10]=t=>e.removeMediaPlaying(t)),onParseReady:e.setHeadTailLinks},null,8,["status","no-heading","highlight","focused","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","onParseReady"]),e.inConversation&&!e.isPreview&&e.replies&&e.replies.length?(Object(r.D)(),Object(r.j)("div",A,[e.showOtherRepliesAsButton&&e.replies.length>1?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled -link faint",title:e.$tc("status.ancestor_follow",e.replies.length-1,{numReplies:e.replies.length-1}),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.dive&&e.dive(...t),["prevent"]))},Object(r.O)(e.$tc("status.replies_list_with_others",e.replies.length-1,{numReplies:e.replies.length-1})),9,N)):(Object(r.D)(),Object(r.j)("span",B,Object(r.O)(e.$t("status.replies_list")),1)),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.replies,t=>(Object(r.D)(),Object(r.h)(be,{key:t.id,"status-id":t.id},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link reply-link",onClick:Object(r.Y)(n=>e.gotoOriginal(t.id),["prevent"])},Object(r.O)(t.name),9,V)]),_:2},1032,["status-id"]))),128))])):Object(r.i)("",!0),Object(r.m)(r.e,{name:"fade"},{default:Object(r.V)(()=>[!e.hidePostStats&&e.isFocused&&e.combinedFavsAndRepeatsUsers.length>0?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("div",q,[e.statusFromGlobalRepository.rebloggedBy&&e.statusFromGlobalRepository.rebloggedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:0,users:e.statusFromGlobalRepository.rebloggedBy},{default:Object(r.V)(()=>[Object(r.k)("div",J,[Object(r.k)("a",W,Object(r.O)(e.$t("status.repeats")),1),Object(r.k)("div",Y,Object(r.O)(e.statusFromGlobalRepository.rebloggedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),e.statusFromGlobalRepository.favoritedBy&&e.statusFromGlobalRepository.favoritedBy.length>0?(Object(r.D)(),Object(r.h)(je,{key:1,users:e.statusFromGlobalRepository.favoritedBy},{default:Object(r.V)(()=>[Object(r.k)("div",G,[Object(r.k)("a",K,Object(r.O)(e.$t("status.favorites")),1),Object(r.k)("div",X,Object(r.O)(e.statusFromGlobalRepository.favoritedBy.length),1)])]),_:1},8,["users"])):Object(r.i)("",!0),Object(r.k)("div",Z,[Object(r.m)(ge,{users:e.combinedFavsAndRepeatsUsers},null,8,["users"])])])])):Object(r.i)("",!0)]),_:1}),!e.mergedConfig.emojiReactionsOnTimeline&&!e.isFocused||e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(ve,{key:3,status:e.status},null,8,["status"])),e.noHeading||e.isPreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",Q,[Object(r.m)(ye,{replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"]),Object(r.m)(we,{visibility:e.status.visibility,"logged-in":e.loggedIn,status:e.status},null,8,["visibility","logged-in","status"]),Object(r.m)(ke,{"logged-in":e.loggedIn,status:e.status},null,8,["logged-in","status"]),e.loggedIn?(Object(r.D)(),Object(r.h)(_e,{key:0,status:e.status},null,8,["status"])):Object(r.i)("",!0),Object(r.m)(Se,{status:e.status,onOnError:e.showError,onOnSuccess:e.clearError},null,8,["status","onOnError","onOnSuccess"])]))])],14,m)),e.replying?(Object(r.D)(),Object(r.j)("div",ie,[Object(r.m)(Ce,{class:"reply-body","reply-to":e.status.id,attentions:e.status.attentions,"replied-user":e.status.user,"copy-message-scope":e.status.visibility,subject:e.replySubject,onPosted:e.toggleReplying},null,8,["reply-to","attentions","replied-user","copy-message-scope","subject","onPosted"])])):Object(r.i)("",!0)],64))],2))}]]);t.default=Wt},function(e,t,n){"use strict";var r=n(0);const i={class:"panel-heading -flexible-height"},o={class:"user-info"},s={class:"container"},a={class:"user-info-avatar-link-overlay"},c={class:"user-summary"},l={class:"top-line"},u=["href"],d={class:"bottom-line"},p={key:0,class:"alert user-role"},h={key:1,class:"alert user-role"},b={key:2,class:"alert user-role"},m={key:1},f={key:2,class:"dailyAvg"},O={class:"user-meta"},j={key:0,class:"following"},g={key:1,class:"highlighter"},v=["id"],y=["id"],w=Object(r.l)(" "+Object(r.O)(" ")+" "),k={value:"disabled"},_={value:"solid"},S={value:"striped"},C={value:"side"},P={key:0,class:"user-interactions"},x={class:"btn-group"},D=["disabled"],T=["disabled"],I=["disabled"],$={key:1,class:"user-interactions"},z={key:0,class:"panel-body"},M={key:0,class:"user-counts"},U=Object(r.k)("br",null,null,-1);var F=n(5),E=n.n(F),L=n(22),R=n(143),A=n(104),N=n(140);const B={class:"dropdown-menu"},V={key:0},H=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),q={key:1,role:"separator",class:"dropdown-divider"},J={key:2};var W=n(6),Y=n(3);const G={class:"panel-heading dialog-modal-heading"},K={class:"title"},X={class:"dialog-modal-content"},Z={class:"dialog-modal-footer user-interactions panel-footer"};var Q={props:{darkOverlay:{default:!0,type:Boolean},onCancel:{default:function(){},type:Function}}},ee=(n(526),n(4)),te=n.n(ee);var ne=te()(Q,[["render",function(e,t,n,i,o,s){return Object(r.D)(),Object(r.j)("span",{class:Object(r.w)({"dark-overlay":e.darkOverlay}),onClick:t[1]||(t[1]=Object(r.Y)(t=>e.onCancel(),["self","stop"]))},[Object(r.k)("div",{class:"dialog-modal panel panel-default",onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["stop"]))},[Object(r.k)("div",G,[Object(r.k)("div",K,[Object(r.I)(e.$slots,"header")])]),Object(r.k)("div",X,[Object(r.I)(e.$slots,"default")]),Object(r.k)("div",Z,[Object(r.I)(e.$slots,"footer")])])],2)}]]),re=n(24);W.c.add(Y.n);var ie={props:["user"],data:function(){return{tags:{FORCE_NSFW:"mrf_tag:media-force-nsfw",STRIP_MEDIA:"mrf_tag:media-strip",FORCE_UNLISTED:"mrf_tag:force-unlisted",DISABLE_REMOTE_SUBSCRIPTION:"mrf_tag:disable-remote-subscription",DISABLE_ANY_SUBSCRIPTION:"mrf_tag:disable-any-subscription",SANDBOX:"mrf_tag:sandbox",QUARANTINE:"mrf_tag:quarantine"},showDeleteUserDialog:!1,toggled:!1}},components:{DialogModal:ne,Popover:re.default},computed:{tagsSet:function(){return new Set(this.user.tags)},hasTagPolicy:function(){return this.$store.state.instance.tagPolicyAvailable}},methods:{hasTag:function(e){return this.tagsSet.has(e)},toggleTag:function(e){var t=this,n=this.$store;this.tagsSet.has(e)?n.state.api.backendInteractor.untagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("untagUser",{user:t.user,tag:e})})):n.state.api.backendInteractor.tagUser({user:this.user,tag:e}).then((function(r){r.ok&&n.commit("tagUser",{user:t.user,tag:e})}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(r){r.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,r=n.id,i=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var o="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===i||e.$route.params.id===r;o&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}};n(528);var oe=te()(ie,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover"),l=Object(r.J)("DialogModal");return Object(r.D)(),Object(r.j)("div",null,[Object(r.m)(c,{trigger:"click",class:"moderation-tools-popover",placement:"bottom",offset:{y:5},onShow:t[11]||(t[11]=t=>e.setToggled(!0)),onClose:t[12]||(t[12]=t=>e.setToggled(!1))},{content:Object(r.V)(()=>[Object(r.k)("div",B,[e.user.is_local?(Object(r.D)(),Object(r.j)("span",V,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.toggleRight("admin"))},Object(r.O)(e.$t(e.user.rights.admin?"user_card.admin_menu.revoke_admin":"user_card.admin_menu.grant_admin")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.toggleRight("moderator"))},Object(r.O)(e.$t(e.user.rights.moderator?"user_card.admin_menu.revoke_moderator":"user_card.admin_menu.grant_moderator")),1),H])):Object(r.i)("",!0),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.toggleActivationStatus())},Object(r.O)(e.$t(e.user.deactivated?"user_card.admin_menu.activate_account":"user_card.admin_menu.deactivate_account")),1),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.deleteUserDialog(!0))},Object(r.O)(e.$t("user_card.admin_menu.delete_account")),1),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("div",q)):Object(r.i)("",!0),e.hasTagPolicy?(Object(r.D)(),Object(r.j)("span",J,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.toggleTag(e.tags.FORCE_NSFW))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_NSFW)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_nsfw")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.toggleTag(e.tags.STRIP_MEDIA))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.STRIP_MEDIA)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.strip_media")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=t=>e.toggleTag(e.tags.FORCE_UNLISTED))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_UNLISTED)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.force_unlisted")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[7]||(t[7]=t=>e.toggleTag(e.tags.SANDBOX))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.SANDBOX)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.sandbox")),1)]),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default dropdown-item",onClick:t[8]||(t[8]=t=>e.toggleTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_remote_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-default dropdown-item",onClick:t[9]||(t[9]=t=>e.toggleTag(e.tags.DISABLE_ANY_SUBSCRIPTION))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_ANY_SUBSCRIPTION)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.disable_any_subscription")),1)])):Object(r.i)("",!0),e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-default dropdown-item",onClick:t[10]||(t[10]=t=>e.toggleTag(e.tags.QUARANTINE))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.QUARANTINE)}])},null,2),Object(r.l)(" "+Object(r.O)(e.$t("user_card.admin_menu.quarantine")),1)])):Object(r.i)("",!0)])):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",{class:Object(r.w)(["btn button-default btn-block moderation-tools-button",{toggled:e.toggled}])},[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.moderation"))+" ",1),Object(r.m)(a,{icon:"chevron-down"})],2)]),_:1}),(Object(r.D)(),Object(r.h)(r.c,{to:"#modal"},[e.showDeleteUserDialog?(Object(r.D)(),Object(r.h)(l,{key:0,"on-cancel":e.deleteUserDialog.bind(this,!1)},{header:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),footer:Object(r.V)(()=>[Object(r.k)("button",{class:"btn button-default",onClick:t[13]||(t[13]=t=>e.deleteUserDialog(!1))},Object(r.O)(e.$t("general.cancel")),1),Object(r.k)("button",{class:"btn button-default danger",onClick:t[14]||(t[14]=t=>e.deleteUser())},Object(r.O)(e.$t("user_card.admin_menu.delete_user")),1)]),default:Object(r.V)(()=>[Object(r.k)("p",null,Object(r.O)(e.$t("user_card.admin_menu.delete_user_confirmation")),1)]),_:1},8,["on-cancel"])):Object(r.i)("",!0)]))])}]]);const se={class:"AccountActions"},ae={class:"dropdown-menu"},ce=Object(r.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),le={class:"button-unstyled ellipsis-button"};var ue=n(8);function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}W.c.add(Y.x);var pe={props:["user","relationship"],data:function(){return{}},components:{ProgressButton:A.a,Popover:re.default},methods:{showRepeats:function(){this.$store.dispatch("showReblogs",this.user.id)},hideRepeats:function(){this.$store.dispatch("hideReblogs",this.user.id)},blockUser:function(){this.$store.dispatch("blockUser",this.user.id)},unblockUser:function(){this.$store.dispatch("unblockUser",this.user.id)},reportUser:function(){this.$store.dispatch("openUserReportingModal",{userId:this.user.id})},openChat:function(){this.$router.push({name:"chat",params:{username:this.$store.state.users.currentUser.screen_name,recipient_id:this.user.id}})}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?de(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):de(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(ue.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}}))};n(529);var he=te()(pe,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.j)("div",se,[Object(r.m)(c,{trigger:"click",placement:"bottom","bound-to":{x:"container"},"remove-padding":""},{content:Object(r.V)(()=>[Object(r.k)("div",ae,[e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.showing_reblogs?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default dropdown-item",onClick:t[0]||(t[0]=(...t)=>e.hideRepeats&&e.hideRepeats(...t))},Object(r.O)(e.$t("user_card.hide_repeats")),1)):Object(r.i)("",!0),e.relationship.showing_reblogs?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default dropdown-item",onClick:t[1]||(t[1]=(...t)=>e.showRepeats&&e.showRepeats(...t))},Object(r.O)(e.$t("user_card.show_repeats")),1)),ce],64)):Object(r.i)("",!0),e.relationship.blocking?(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block dropdown-item",onClick:t[2]||(t[2]=(...t)=>e.unblockUser&&e.unblockUser(...t))},Object(r.O)(e.$t("user_card.unblock")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,class:"btn button-default btn-block dropdown-item",onClick:t[3]||(t[3]=(...t)=>e.blockUser&&e.blockUser(...t))},Object(r.O)(e.$t("user_card.block")),1)),Object(r.k)("button",{class:"btn button-default btn-block dropdown-item",onClick:t[4]||(t[4]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(r.O)(e.$t("user_card.report")),1),e.pleromaChatMessagesAvailable?(Object(r.D)(),Object(r.j)("button",{key:3,class:"btn button-default btn-block dropdown-item",onClick:t[5]||(t[5]=(...t)=>e.openChat&&e.openChat(...t))},Object(r.O)(e.$t("user_card.message")),1)):Object(r.i)("",!0)])]),trigger:Object(r.V)(()=>[Object(r.k)("button",le,[Object(r.m)(a,{class:"icon",icon:"ellipsis-v"})])]),_:1})])}]]),be=n(52),me=n(25),fe=n(23);function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){E()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}W.c.add(Y.bb,Y.i,Y.db,Y.A,Y.v);var ge={props:["userId","switcher","selected","hideBio","rounded","bordered","allowZoomingAvatar"],data:function(){return{followRequestInProgress:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter}},created:function(){this.$store.dispatch("fetchUserRelationship",this.user.id)},computed:je({user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},classes:function(){return[{"user-card-rounded-t":"top"===this.rounded,"user-card-rounded":!0===this.rounded,"user-card-bordered":!0===this.bordered}]},style:function(){return{backgroundImage:["linear-gradient(to bottom, var(--profileTint), var(--profileTint))","url(".concat(this.user.cover_photo,")")].join(", ")}},isOtherUser:function(){return this.user.id!==this.$store.state.users.currentUser.id},subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")},loggedIn:function(){return this.$store.state.users.currentUser},dailyAvg:function(){var e=Math.ceil((new Date-new Date(this.user.created_at))/864e5);return Math.round(this.user.statuses_count/e)},userHighlightType:je({get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.type||"disabled"},set:function(e){var t=this.$store.getters.mergedConfig.highlight[this.user.screen_name];"disabled"!==e?this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:t&&t.color||"#FFFFFF",type:e}):this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:void 0})}},Object(ue.c)(["mergedConfig"])),userHighlightColor:{get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.color},set:function(e){this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:e})}},visibleRole:function(){var e=this.user.rights;if(e){var t=e.admin||e.moderator,n=e.admin?"admin":"moderator";return t&&n}},hideFollowsCount:function(){return this.isOtherUser&&this.user.hide_follows_count},hideFollowersCount:function(){return this.isOtherUser&&this.user.hide_followers_count}},Object(ue.c)(["mergedConfig"])),components:{UserAvatar:L.default,RemoteFollow:R.a,ModerationTools:oe,AccountActions:he,ProgressButton:A.a,FollowButton:N.a,Select:be.a,RichContent:me.a},methods:{refetchRelationship:function(){return this.$store.dispatch("fetchUserRelationship",this.user.id)},muteUser:function(){this.$store.dispatch("muteUser",this.user.id)},unmuteUser:function(){this.$store.dispatch("unmuteUser",this.user.id)},muteDomain:function(){var e=this;this.$store.dispatch("muteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},unmuteDomain:function(){var e=this;this.$store.dispatch("unmuteDomain",this.user.screen_name.split("@")[1]).then((function(){return e.refetchRelationship()}))},subscribeUser:function(){return this.$store.dispatch("subscribeUser",this.user.id)},unsubscribeUser:function(){return this.$store.dispatch("unsubscribeUser",this.user.id)},setProfileView:function(e){this.switcher&&this.$store.commit("setProfileView",{v:e})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")},userProfileLink:function(e){return Object(fe.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},zoomAvatar:function(){var e={url:this.user.profile_image_url_original,mimetype:"image"};this.$store.dispatch("setMedia",[e]),this.$store.dispatch("setCurrentMedia",e)},mentionUser:function(){this.$store.dispatch("openPostStatusModal",{replyTo:!0,repliedUser:this.user})}}};n(530);const ve=te()(ge,[["render",function(e,t,n,F,E,L){const R=Object(r.J)("UserAvatar"),A=Object(r.J)("FAIcon"),N=Object(r.J)("router-link"),B=Object(r.J)("RichContent"),V=Object(r.J)("AccountActions"),H=Object(r.J)("Select"),q=Object(r.J)("FollowButton"),J=Object(r.J)("ProgressButton"),W=Object(r.J)("FALayers"),Y=Object(r.J)("ModerationTools"),G=Object(r.J)("RemoteFollow");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["user-card",e.classes])},[Object(r.k)("div",{class:Object(r.w)([{"hide-bio":e.hideBio},"background-image"]),style:Object(r.x)(e.style)},null,6),Object(r.k)("div",i,[Object(r.k)("div",o,[Object(r.k)("div",s,[e.allowZoomingAvatar?(Object(r.D)(),Object(r.j)("a",{key:0,class:"user-info-avatar-link",onClick:t[0]||(t[0]=(...t)=>e.zoomAvatar&&e.zoomAvatar(...t))},[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"]),Object(r.k)("div",a,[Object(r.m)(A,{class:"fa-scale-110 fa-old-padding",icon:"search-plus"})])])):(Object(r.D)(),Object(r.h)(N,{key:1,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(R,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"])]),_:1},8,["to"])),Object(r.k)("div",c,[Object(r.k)("div",l,[Object(r.m)(B,{title:e.user.name,class:"user-name",html:e.user.name,emoji:e.user.emoji},null,8,["title","html","emoji"]),!e.isOtherUser&&e.user.is_local?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled edit-profile-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.openProfileTab&&e.openProfileTab(...t),["stop"]))},[Object(r.m)(A,{"fixed-width":"",class:"icon",icon:"edit",title:e.$t("user_card.edit_profile")},null,8,["title"])])):Object(r.i)("",!0),e.isOtherUser&&!e.user.is_local?(Object(r.D)(),Object(r.j)("a",{key:1,href:e.user.statusnet_profile_url,target:"_blank",class:"button-unstyled external-link-button"},[Object(r.m)(A,{class:"icon",icon:"external-link-alt"})],8,u)):Object(r.i)("",!0),e.isOtherUser&&e.loggedIn?(Object(r.D)(),Object(r.h)(V,{key:2,user:e.user,relationship:e.relationship},null,8,["user","relationship"])):Object(r.i)("",!0)]),Object(r.k)("div",d,[Object(r.m)(N,{class:"user-screen-name",title:e.user.screen_name_ui,to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["title","to"]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.user.deactivated?(Object(r.D)(),Object(r.j)("span",p,Object(r.O)(e.$t("user_card.deactivated")),1)):Object(r.i)("",!0),e.visibleRole?(Object(r.D)(),Object(r.j)("span",h,Object(r.O)(e.$t("general.role."+e.visibleRole)),1)):Object(r.i)("",!0),e.user.bot?(Object(r.D)(),Object(r.j)("span",b,Object(r.O)(e.$t("user_card.bot")),1)):Object(r.i)("",!0)],64)),e.user.locked?(Object(r.D)(),Object(r.j)("span",m,[Object(r.m)(A,{class:"lock-icon",icon:"lock",size:"sm"})])):Object(r.i)("",!0),e.mergedConfig.hideUserStats||e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",f,Object(r.O)(e.dailyAvg)+" "+Object(r.O)(e.$t("user_card.per_day")),1))])])]),Object(r.k)("div",O,[e.relationship.followed_by&&e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",j,Object(r.O)(e.$t("user_card.follows_you")),1)):Object(r.i)("",!0),!e.isOtherUser||!e.loggedIn&&e.switcher?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,["disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,id:"userHighlightColorTx"+e.user.id,"onUpdate:modelValue":t[2]||(t[2]=t=>e.userHighlightColor=t),class:"userHighlightText",type:"text"},null,8,v)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),"disabled"!==e.userHighlightType?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:1,id:"userHighlightColor"+e.user.id,"onUpdate:modelValue":t[3]||(t[3]=t=>e.userHighlightColor=t),class:"userHighlightCl",type:"color"},null,8,y)),[[r.S,e.userHighlightColor]]):Object(r.i)("",!0),w,Object(r.m)(H,{id:"userHighlightSel"+e.user.id,modelValue:e.userHighlightType,"onUpdate:modelValue":t[4]||(t[4]=t=>e.userHighlightType=t),class:"userHighlightSel"},{default:Object(r.V)(()=>[Object(r.k)("option",k,Object(r.O)(e.$t("user_card.highlight.disabled")),1),Object(r.k)("option",_,Object(r.O)(e.$t("user_card.highlight.solid")),1),Object(r.k)("option",S,Object(r.O)(e.$t("user_card.highlight.striped")),1),Object(r.k)("option",C,Object(r.O)(e.$t("user_card.highlight.side")),1)]),_:1},8,["id","modelValue"])]))]),e.loggedIn&&e.isOtherUser?(Object(r.D)(),Object(r.j)("div",P,[Object(r.k)("div",x,[Object(r.m)(q,{relationship:e.relationship,user:e.user},null,8,["relationship","user"]),e.relationship.following?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.relationship.subscribing?(Object(r.D)(),Object(r.h)(J,{key:1,class:"btn button-default toggled",click:e.unsubscribeUser,title:e.$t("user_card.unsubscribe")},{default:Object(r.V)(()=>[Object(r.m)(W,null,{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"rss",transform:"left-5 shrink-6 up-3 rotate-20",flip:"horizontal"}),Object(r.m)(A,{icon:"rss",transform:"right-5 shrink-6 up-3 rotate-20"}),Object(r.m)(A,{icon:"bell"})]),_:1})]),_:1},8,["click","title"])):(Object(r.D)(),Object(r.h)(J,{key:0,class:"btn button-default",click:e.subscribeUser,title:e.$t("user_card.subscribe")},{default:Object(r.V)(()=>[Object(r.m)(A,{icon:"bell"})]),_:1},8,["click","title"]))],64)):Object(r.i)("",!0)]),Object(r.k)("div",null,[e.relationship.muting?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",disabled:e.user.deactivated,onClick:t[5]||(t[5]=(...t)=>e.unmuteUser&&e.unmuteUser(...t))},Object(r.O)(e.$t("user_card.muted")),9,D)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[6]||(t[6]=(...t)=>e.muteUser&&e.muteUser(...t))},Object(r.O)(e.$t("user_card.mute")),9,T))]),Object(r.k)("div",null,[e.relationship.domain_blocking?(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default btn-block toggled",onClick:t[7]||(t[7]=(...t)=>e.unmuteDomain&&e.unmuteDomain(...t))},Object(r.O)(e.$t("user_card.domain_muted")),1)):(Object(r.D)(),Object(r.j)("button",{key:1,class:"btn button-default btn-block",onClick:t[8]||(t[8]=(...t)=>e.muteDomain&&e.muteDomain(...t))},Object(r.O)(e.$t("user_card.mute_domain")),1))]),Object(r.k)("div",null,[Object(r.k)("button",{class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[9]||(t[9]=(...t)=>e.mentionUser&&e.mentionUser(...t))},Object(r.O)(e.$t("user_card.mention")),9,I)]),"admin"===e.loggedIn.role?(Object(r.D)(),Object(r.h)(Y,{key:0,user:e.user},null,8,["user"])):Object(r.i)("",!0)])):Object(r.i)("",!0),!e.loggedIn&&e.user.is_local?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(G,{user:e.user},null,8,["user"])])):Object(r.i)("",!0)])]),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",z,[!e.mergedConfig.hideUserStats&&e.switcher?(Object(r.D)(),Object(r.j)("div",M,[Object(r.k)("div",{class:"user-count",onClick:t[10]||(t[10]=Object(r.Y)(t=>e.setProfileView("statuses"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.statuses")),1),Object(r.k)("span",null,[Object(r.l)(Object(r.O)(e.user.statuses_count)+" ",1),U])]),Object(r.k)("div",{class:"user-count",onClick:t[11]||(t[11]=Object(r.Y)(t=>e.setProfileView("friends"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followees")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowsCount?e.$t("user_card.hidden"):e.user.friends_count),1)]),Object(r.k)("div",{class:"user-count",onClick:t[12]||(t[12]=Object(r.Y)(t=>e.setProfileView("followers"),["prevent"]))},[Object(r.k)("h5",null,Object(r.O)(e.$t("user_card.followers")),1),Object(r.k)("span",null,Object(r.O)(e.hideFollowersCount?e.$t("user_card.hidden"):e.user.followers_count),1)])])):Object(r.i)("",!0),e.hideBio?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(B,{key:1,class:"user-card-bio",html:e.user.description_html,emoji:e.user.emoji,"handle-links":!0},null,8,["html","emoji"]))]))],2)}]]);t.a=ve},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return a}));var r=n(20),i=n(18),o={undelay:null,topBar:null,badge:null,profileTint:null,fg:null,bg:"underlay",highlight:"bg",panel:"bg",popover:"bg",selectedMenu:"popover",btn:"bg",btnPanel:"panel",btnTopBar:"topBar",input:"bg",inputPanel:"panel",inputTopBar:"topBar",alert:"bg",alertPanel:"panel",poll:"bg",chatBg:"underlay",chatMessage:"chatBg"},s={profileTint:.5,alert:.5,input:.5,faint:.5,underlay:.15,alertPopup:.95},a={bg:{depends:[],opacity:"bg",priority:1},wallpaper:{depends:["bg"],color:function(e,t){return Object(r.brightness)(-2*e,t).rgb}},fg:{depends:[],priority:1},text:{depends:[],layer:"bg",opacity:null,priority:1},underlay:{default:"#000000",opacity:"underlay"},link:{depends:["accent"],priority:1},accent:{depends:["link"],priority:1},faint:{depends:["text"],opacity:"faint"},faintLink:{depends:["link"],opacity:"faint"},postFaintLink:{depends:["postLink"],opacity:"faint"},cBlue:"#0000ff",cRed:"#FF0000",cGreen:"#00FF00",cOrange:"#E3FF00",profileBg:{depends:["bg"],color:function(e,t){return{r:Math.floor(.53*t.r),g:Math.floor(.56*t.g),b:Math.floor(.59*t.b)}}},profileTint:{depends:["bg"],layer:"profileTint",opacity:"profileTint"},highlight:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},highlightLightText:{depends:["lightText"],layer:"highlight",textColor:!0},highlightPostLink:{depends:["postLink"],layer:"highlight",textColor:"preserve"},highlightFaintText:{depends:["faint"],layer:"highlight",textColor:!0},highlightFaintLink:{depends:["faintLink"],layer:"highlight",textColor:"preserve"},highlightPostFaintLink:{depends:["postFaintLink"],layer:"highlight",textColor:"preserve"},highlightText:{depends:["text"],layer:"highlight",textColor:!0},highlightLink:{depends:["link"],layer:"highlight",textColor:"preserve"},highlightIcon:{depends:["highlight","highlightText"],color:function(e,t,n){return Object(i.g)(t,n)}},popover:{depends:["bg"],opacity:"popover"},popoverLightText:{depends:["lightText"],layer:"popover",textColor:!0},popoverPostLink:{depends:["postLink"],layer:"popover",textColor:"preserve"},popoverFaintText:{depends:["faint"],layer:"popover",textColor:!0},popoverFaintLink:{depends:["faintLink"],layer:"popover",textColor:"preserve"},popoverPostFaintLink:{depends:["postFaintLink"],layer:"popover",textColor:"preserve"},popoverText:{depends:["text"],layer:"popover",textColor:!0},popoverLink:{depends:["link"],layer:"popover",textColor:"preserve"},popoverIcon:{depends:["popover","popoverText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedPost:"--highlight",selectedPostFaintText:{depends:["highlightFaintText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLightText:{depends:["highlightLightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostPostLink:{depends:["highlightPostLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostFaintLink:{depends:["highlightFaintLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostText:{depends:["highlightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLink:{depends:["highlightLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostIcon:{depends:["selectedPost","selectedPostText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenu:{depends:["bg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuLightText:{depends:["highlightLightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintText:{depends:["highlightFaintText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintLink:{depends:["highlightFaintLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuText:{depends:["highlightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuLink:{depends:["highlightLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuIcon:{depends:["selectedMenu","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},selectedMenuPopover:{depends:["popover"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},selectedMenuPopoverLightText:{depends:["selectedMenuLightText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintText:{depends:["selectedMenuFaintText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintLink:{depends:["selectedMenuFaintLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverText:{depends:["selectedMenuText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverLink:{depends:["selectedMenuLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverIcon:{depends:["selectedMenuPopover","selectedMenuText"],color:function(e,t,n){return Object(i.g)(t,n)}},lightText:{depends:["text"],layer:"bg",textColor:"preserve",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},postLink:{depends:["link"],layer:"bg",textColor:"preserve"},postGreentext:{depends:["cGreen"],layer:"bg",textColor:"preserve"},postCyantext:{depends:["cBlue"],layer:"bg",textColor:"preserve"},border:{depends:["fg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},poll:{depends:["accent","bg"],copacity:"poll",color:function(e,t,n){return Object(i.a)(t,.4,n)}},pollText:{depends:["text"],layer:"poll",textColor:!0},icon:{depends:["bg","text"],inheritsOpacity:!1,color:function(e,t,n){return Object(i.g)(t,n)}},fgText:{depends:["text"],layer:"fg",textColor:!0},fgLink:{depends:["link"],layer:"fg",textColor:"preserve"},panel:{depends:["fg"],opacity:"panel"},panelText:{depends:["text"],layer:"panel",textColor:!0},panelFaint:{depends:["fgText"],layer:"panel",opacity:"faint",textColor:!0},panelLink:{depends:["fgLink"],layer:"panel",textColor:"preserve"},topBar:"--fg",topBarText:{depends:["fgText"],layer:"topBar",textColor:!0},topBarLink:{depends:["fgLink"],layer:"topBar",textColor:"preserve"},tab:{depends:["btn"]},tabText:{depends:["btnText"],layer:"btn",textColor:!0},tabActiveText:{depends:["text"],layer:"bg",textColor:!0},btn:{depends:["fg"],variant:"btn",opacity:"btn"},btnText:{depends:["fgText"],layer:"btn",textColor:!0},btnPanelText:{depends:["btnText"],layer:"btnPanel",variant:"btn",textColor:!0},btnTopBarText:{depends:["btnText"],layer:"btnTopBar",variant:"btn",textColor:!0},btnPressed:{depends:["btn"],layer:"btn"},btnPressedText:{depends:["btnText"],layer:"btn",variant:"btnPressed",textColor:!0},btnPressedPanel:{depends:["btnPressed"],layer:"btn"},btnPressedPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnPressed",textColor:!0},btnPressedTopBar:{depends:["btnPressed"],layer:"btn"},btnPressedTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnPressed",textColor:!0},btnToggled:{depends:["btn"],layer:"btn",color:function(e,t){return Object(r.brightness)(20*e,t).rgb}},btnToggledText:{depends:["btnText"],layer:"btn",variant:"btnToggled",textColor:!0},btnToggledPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnToggled",textColor:!0},btnToggledTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnToggled",textColor:!0},btnDisabled:{depends:["btn","bg"],color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledText:{depends:["btnText","btnDisabled"],layer:"btn",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledPanelText:{depends:["btnPanelText","btnDisabled"],layer:"btnPanel",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},btnDisabledTopBarText:{depends:["btnTopBarText","btnDisabled"],layer:"btnTopBar",variant:"btnDisabled",color:function(e,t,n){return Object(i.a)(t,.25,n)}},input:{depends:["fg"],opacity:"input"},inputText:{depends:["text"],layer:"input",textColor:!0},inputPanelText:{depends:["panelText"],layer:"inputPanel",variant:"input",textColor:!0},inputTopbarText:{depends:["topBarText"],layer:"inputTopBar",variant:"input",textColor:!0},alertError:{depends:["cRed"],opacity:"alert"},alertErrorText:{depends:["text"],layer:"alert",variant:"alertError",textColor:!0},alertErrorPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertError",textColor:!0},alertWarning:{depends:["cOrange"],opacity:"alert"},alertWarningText:{depends:["text"],layer:"alert",variant:"alertWarning",textColor:!0},alertWarningPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertWarning",textColor:!0},alertSuccess:{depends:["cGreen"],opacity:"alert"},alertSuccessText:{depends:["text"],layer:"alert",variant:"alertSuccess",textColor:!0},alertSuccessPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertSuccess",textColor:!0},alertNeutral:{depends:["text"],opacity:"alert"},alertNeutralText:{depends:["text"],layer:"alert",variant:"alertNeutral",color:function(e,t){return Object(r.invertLightness)(t).rgb},textColor:!0},alertNeutralPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertNeutral",textColor:!0},alertPopupError:{depends:["alertError"],opacity:"alertPopup"},alertPopupErrorText:{depends:["alertErrorText"],layer:"popover",variant:"alertPopupError",textColor:!0},alertPopupWarning:{depends:["alertWarning"],opacity:"alertPopup"},alertPopupWarningText:{depends:["alertWarningText"],layer:"popover",variant:"alertPopupWarning",textColor:!0},alertPopupSuccess:{depends:["alertSuccess"],opacity:"alertPopup"},alertPopupSuccessText:{depends:["alertSuccessText"],layer:"popover",variant:"alertPopupSuccess",textColor:!0},alertPopupNeutral:{depends:["alertNeutral"],opacity:"alertPopup"},alertPopupNeutralText:{depends:["alertNeutralText"],layer:"popover",variant:"alertPopupNeutral",textColor:!0},badgeNotification:"--cRed",badgeNotificationText:{depends:["text","badgeNotification"],layer:"badge",variant:"badgeNotification",textColor:"bw"},chatBg:{depends:["bg"]},chatMessageIncomingBg:{depends:["chatBg"]},chatMessageIncomingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:!0},chatMessageIncomingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:"preserve"},chatMessageIncomingBorder:{depends:["border"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}},chatMessageOutgoingBg:{depends:["chatMessageIncomingBg"],color:function(e,t){return Object(r.brightness)(5*e,t).rgb}},chatMessageOutgoingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:!0},chatMessageOutgoingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:"preserve"},chatMessageOutgoingBorder:{depends:["chatMessageOutgoingBg"],opacity:"border",color:function(e,t){return Object(r.brightness)(2*e,t).rgb}}}},,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(70),s=n(336),a={ja_easy:"ja",zh_Hant:"zh-HANT",zh:"zh-Hans"},c=function(e){return a[e]||e},l=function(e){var t={ja_easy:"やさしいにほんご",zh:"简体中文",zh_Hant:"繁體中文"}[e]||s.a.getNativeName(e),n=c(e);return t.charAt(0).toLocaleUpperCase(n)+t.slice(1)},u=i()(o.a.languages,(function(e){return{code:e,name:l(e)}})).sort((function(e,t){return e.name.localeCompare(t.name)})),d={internalToBrowserLocale:c,internalToBackendLocale:function(e){return c(e).replace("_","-")},languages:u,getLanguageName:l};t.a=d},,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"i",(function(){return O})),n.d(t,"e",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"f",(function(){return y})),n.d(t,"a",(function(){return C})),n.d(t,"h",(function(){return P})),n.d(t,"d",(function(){return x})),n.d(t,"k",(function(){return T})),n.d(t,"c",(function(){return I})),n.d(t,"m",(function(){return $})),n.d(t,"j",(function(){return z})),n.d(t,"l",(function(){return M}));var r=n(28),i=n.n(r),o=n(12),s=n.n(o),a=n(5),c=n.n(a),l=n(11),u=n.n(l),d=n(20),p=n(18),h=n(54);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=function(e){var t=D(e).rules,n=document.head,r=document.body;r.classList.add("hidden");var i=document.createElement("style");n.appendChild(i);var o=i.sheet;o.toString(),o.insertRule(":root { ".concat(t.radii," }"),"index-max"),o.insertRule(":root { ".concat(t.colors," }"),"index-max"),o.insertRule(":root { ".concat(t.shadows," }"),"index-max"),o.insertRule(":root { ".concat(t.fonts," }"),"index-max"),r.classList.remove("hidden")},O=function(e,t){return 0===e.length?"none":e.filter((function(e){return t?e.inset:e})).map((function(e){return[e.x,e.y,e.blur,e.spread].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha),e.inset?"inset":""]).join(" ")})).join(", ")},j=function(e){return 0===e.length?"none":e.filter((function(e){return!e.inset&&0===Number(e.spread)})).map((function(e){return[e.x,e.y,e.blur/2].map((function(e){return e+"px"})).concat([Object(p.d)(e.color,e.alpha)]).join(" ")})).map((function(e){return"drop-shadow(".concat(e,")")})).join(" ")},g=function(e){var t=e.themeEngineVersion?e.colors||e:I(e.colors||e),n=Object(h.d)(t,e.opacity||{}),r=n.colors,i=n.opacity,o=Object.entries(r).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return i?(e.solid[r]=Object(p.i)(i),e.complete[r]=void 0===i.a?Object(p.i)(i):Object(p.j)(i),e):e}),{complete:{},solid:{}});return{rules:{colors:Object.entries(o.complete).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,": ").concat(r)})).join(";")},theme:{colors:o.solid,opacity:i}}},v=function(e){var t=e.radii||{};void 0!==e.btnRadius&&(t=Object.entries(e).filter((function(e){var t=u()(e,2),n=t[0];t[1];return n.endsWith("Radius")})).reduce((function(e,t){return e[t[0].split("Radius")[0]]=t[1],e}),{}));var n=Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{btn:4,input:4,checkbox:2,panel:10,avatar:5,avatarAlt:50,tooltip:2,attachment:5,chatMessage:t.panel});return{rules:{radii:Object.entries(n).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Radius: ").concat(r,"px")})).join(";")},theme:{radii:n}}},y=function(e){var t=Object.entries(e.fonts||{}).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=Object.entries(i).filter((function(e){var t=u()(e,2);t[0];return t[1]})).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),e[r]),e}),{interface:{family:"sans-serif"},input:{family:"inherit"},post:{family:"inherit"},postCode:{family:"monospace"}});return{rules:{fonts:Object.entries(t).filter((function(e){var t=u()(e,2);t[0];return t[1]})).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return"--".concat(n,"Font: ").concat(r.family)})).join(";")},theme:{fonts:t}}},w=function(e,t){return{x:0,y:e?1:-1,blur:0,spread:0,color:t?"#000000":"#FFFFFF",alpha:.2,inset:!0}},k=[w(!0,!1),w(!1,!0)],_=[w(!0,!0),w(!1,!1)],S={x:0,y:0,blur:4,spread:0,color:"--faint",alpha:1},C={panel:[{x:1,y:1,blur:4,spread:0,color:"#000000",alpha:.6}],topBar:[{x:0,y:0,blur:4,spread:0,color:"#000000",alpha:.6}],popup:[{x:2,y:2,blur:3,spread:0,color:"#000000",alpha:.5}],avatar:[{x:0,y:1,blur:8,spread:0,color:"#000000",alpha:.7}],avatarStatus:[],panelHeader:[],button:[{x:0,y:0,blur:2,spread:0,color:"#000000",alpha:1}].concat(k),buttonHover:[S].concat(k),buttonPressed:[S].concat(_),input:[].concat(_,[{x:0,y:0,blur:2,inset:!0,spread:0,color:"#000000",alpha:1}])},P=function(e,t){var n={button:"btn",panel:"bg",top:"topBar",popup:"popover",avatar:"bg",panelHeader:"panel",input:"input"},r=Object.fromEntries(Object.entries(e.shadows||{}).map((function(e){var t=u()(e,2);return[t[0],t[1].map((function(e){return m({color:"#000000"},e)}))]}))),i=r&&!e.themeEngineVersion?$(r,e.opacity):r||{},o=Object.entries(m(m({},C),i)).reduce((function(e,r){var i=u()(r,2),o=i[0],a=i[1],l=o.replace(/[A-Z].*$/,""),b=n[l],f=Object(p.h)(Object(d.convert)(t[b]).rgb)<.5?1:-1,O=a.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{color:Object(p.i)(Object(h.c)(n.color,(function(e){return Object(d.convert)(t[e]).rgb}),f))})])}),[]);return m(m({},e),{},c()({},o,O))}),{});return{rules:{shadows:Object.entries(o).map((function(e){var t=u()(e,2),n=t[0],r=t[1];return["--".concat(n,"Shadow: ").concat(O(r)),"--".concat(n,"ShadowFilter: ").concat(j(r)),"--".concat(n,"ShadowInset: ").concat(O(r,!0))].join(";")})).join(";")},theme:{shadows:o}}},x=function(e,t,n,r){return{rules:m(m(m(m({},n.rules),e.rules),t.rules),r.rules),theme:m(m(m(m({},n.theme),e.theme),t.theme),r.theme)}},D=function(e){var t=g(e);return x(t,v(e),P(e,t.theme.colors,t.mod),y(e))},T=function(){return window.fetch("/static/styles.json",{cache:"no-store"}).then((function(e){return e.json()})).then((function(e){return Object.entries(e).map((function(e){var t=u()(e,2),n=t[0],r=t[1],o=null;return"object"===i()(r)?o=Promise.resolve(r):"string"==typeof r&&(o=window.fetch(r,{cache:"no-store"}).then((function(e){return e.json()})).catch((function(e){return console.error(e),null}))),[n,o]}))})).then((function(e){return e.reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];return e[r]=i,e}),{})}))},I=function(e){return Object.entries(e).reduce((function(e,t){var n=u()(t,2),r=n[0],i=n[1];switch(r){case"lightBg":return m(m({},e),{},{highlight:i});case"btnText":return m(m({},e),["","Panel","TopBar"].reduce((function(e,t){return m(m({},e),{},c()({},"btn"+t+"Text",i))}),{}));default:return m(m({},e),{},c()({},r,i))}}),{})},$=function(e,t){return Object.entries(e).reduce((function(e,n){var r=u()(n,2),i=r[0],o=r[1],a=o.reduce((function(e,n){return[].concat(s()(e),[m(m({},n),{},{alpha:(o=n,a=o.color,(void 0===a?"#000000":a).startsWith("--")?(r=n,i=r.color,t[Object(h.f)(i.substring(2).split(",")[0])]||1):n.alpha)})]);var r,i,o,a}),[]);return m(m({},e),{},c()({},i,a))}),{})},z=function(e){return T().then((function(t){return t[e]?t[e]:t["pleroma-dark"]})).then((function(e){var t=Array.isArray(e),n=t?{}:e.theme;if(t){var r=Object(p.f)(e[1]),i=Object(p.f)(e[2]),o=Object(p.f)(e[3]),s=Object(p.f)(e[4]),a=Object(p.f)(e[5]||"#FF0000"),c=Object(p.f)(e[6]||"#00FF00"),l=Object(p.f)(e[7]||"#0000FF"),u=Object(p.f)(e[8]||"#E3FF00");n.colors={bg:r,fg:i,text:o,link:s,cRed:a,cBlue:l,cGreen:c,cOrange:u}}return{theme:n,source:e.source}}))},M=function(e){return z(e).then((function(e){return f(e.theme)}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){var n=!1,r=null;return r=window.setTimeout((function i(){var o=e();o&&o.finally?o.finally((function(){n||(r=window.setTimeout(i,t))})):console.warn("promiseInterval: promise call did not return a promise, stopping interval.")}),t),{stop:function(){n=!0,window.clearTimeout(r)}}}},function(e,t,n){"use strict";var r=n(0);const i={key:0},o={key:1},s={key:3,class:"link-preview media-body"};var a=n(5),c=n.n(a),l=n(58);const u=["title"],d={class:"option-result-label"},p={class:"result-percentage"},h=["onClick"],b=["disabled","value"],m=["disabled","value"],f={class:"option-vote"},O={class:"footer faint"},j=["disabled"],g={class:"total"};var v=n(21),y=n.n(v),w=n(164),k=n.n(w),_=n(59),S=n(25),C={name:"Poll",props:["basePoll","emoji"],components:{Timeago:_.a,RichContent:S.a},data:function(){return{loading:!1,choices:[]}},created:function(){this.$store.state.polls.pollsObject[this.pollId]||this.$store.dispatch("mergeOrAddPoll",this.basePoll),this.$store.dispatch("trackPoll",this.pollId)},unmounted:function(){this.$store.dispatch("untrackPoll",this.pollId)},computed:{pollId:function(){return this.basePoll.id},poll:function(){return this.$store.state.polls.pollsObject[this.pollId]||{}},options:function(){return this.poll&&this.poll.options||[]},expiresAt:function(){return this.poll&&this.poll.expires_at||0},expired:function(){return this.poll&&this.poll.expired||!1},loggedIn:function(){return this.$store.state.users.currentUser},showResults:function(){return this.poll.voted||this.expired||!this.loggedIn},totalVotesCount:function(){return this.poll.votes_count},containerClass:function(){return{loading:this.loading}},choiceIndices:function(){return this.choices.map((function(e,t){return e&&t})).filter((function(e){return"number"==typeof e}))},isDisabled:function(){var e=0===this.choiceIndices.length;return this.loading||e}},methods:{percentageForOption:function(e){return 0===this.totalVotesCount?0:Math.round(e/this.totalVotesCount*100)},resultTitle:function(e){return"".concat(e.votes_count,"/").concat(this.totalVotesCount," ").concat(this.$t("polls.votes"))},fetchPoll:function(){this.$store.dispatch("refreshPoll",{id:this.statusId,pollId:this.poll.id})},activateOption:function(e){var t=this.$el.querySelectorAll("input"),n=this.$el.querySelector('input[value="'.concat(e,'"]'));this.poll.multiple?n.checked=!n.checked:(k()(t,(function(e){e.checked=!1})),n.checked=!0),this.choices=y()(t,(function(e){return e.checked}))},optionId:function(e){return"poll".concat(this.poll.id,"-").concat(e)},vote:function(){var e=this;0!==this.choiceIndices.length&&(this.loading=!0,this.$store.dispatch("votePoll",{id:this.statusId,pollId:this.poll.id,choices:this.choiceIndices}).then((function(t){e.loading=!1})))}}},P=(n(517),n(4)),x=n.n(P);var D=x()(C,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("Timeago"),l=Object(r.J)("i18n-t");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["poll",e.containerClass])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:"poll-option"},[e.showResults?(Object(r.D)(),Object(r.j)("div",{key:0,title:e.resultTitle(t),class:"option-result"},[Object(r.k)("div",d,[Object(r.k)("span",p,Object(r.O)(e.percentageForOption(t.votes_count))+"% ",1),Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])]),Object(r.k)("div",{class:"result-fill",style:Object(r.x)({width:e.percentageForOption(t.votes_count)+"%"})},null,4)],8,u)):(Object(r.D)(),Object(r.j)("div",{key:1,onClick:t=>e.activateOption(n)},[e.poll.multiple?(Object(r.D)(),Object(r.j)("input",{key:0,type:"checkbox",disabled:e.loading,value:n},null,8,b)):(Object(r.D)(),Object(r.j)("input",{key:1,type:"radio",disabled:e.loading,value:n},null,8,m)),Object(r.k)("label",f,[Object(r.m)(a,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])])],8,h))]))),128)),Object(r.k)("div",O,[e.showResults?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"btn button-default poll-vote-button",type:"button",disabled:e.isDisabled,onClick:t[0]||(t[0]=(...t)=>e.vote&&e.vote(...t))},Object(r.O)(e.$t("polls.vote")),9,j)),Object(r.k)("div",g,["number"==typeof e.poll.voters_count?(Object(r.D)(),Object(r.j)(r.a,{key:0},[Object(r.l)(Object(r.O)(e.$tc("polls.people_voted_count",e.poll.voters_count,{count:e.poll.voters_count}))+" · ",1)],64)):(Object(r.D)(),Object(r.j)(r.a,{key:1},[Object(r.l)(Object(r.O)(e.$tc("polls.votes_count",e.poll.votes_count,{count:e.poll.votes_count}))+" · ",1)],64))]),Object(r.k)("span",null,[Object(r.m)(l,{scope:"global",keypath:e.expired?"polls.expired":"polls.expires_in"},{default:Object(r.V)(()=>[Object(r.m)(c,{time:e.expiresAt,"auto-update":60,"now-threshold":0},null,8,["time"])]),_:1},8,["keypath"])])])],2)}]]),T=n(78);const I={class:"body"},$={key:0};var z=n(33),M=n(12),U=n.n(M),F=n(329),E=n(79),L=n(40),R=n.n(L),A=n(23),N=n(8),B=n(31),V=n(22),H=n(6),q=n(3),J=["backgroundColor","backgroundPosition","backgroundImage"];function W(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?W(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):W(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.f);V.default,Y(Y({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(B.a)(this.user)},style:function(){if(this.highlight){var e=Object(B.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return R()(e,J)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}}));function G(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return K(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var X=["tada","jelly","twitch","shake","spin","jump","bounce","flip","x2","x3","x4","font","blur","rainbow","sparkle","rotate"],Z=Object(r.o)({props:{status:{type:Object,required:!0}},render:function(){var e=this;if(!this.status)return null;var t=F.parse(this.status.mfm_content,{fnNameList:X}),n=function(e){return null==e?null:e.match(/^[0-9.]+s$/)?e:null};return Object(r.q)("span",function t(i){return o=i.map((function(i){switch(i.type){case"text":var o,s=[],a=G(i.props.text.replace(/(\r\n|\n|\r)/g,"\n").split("\n"));try{for(a.s();!(o=a.n()).done;){var c=o.value;s.push(Object(r.q)("br")),s.push(c)}}catch(e){a.e(e)}finally{a.f()}return s.shift(),s;case"bold":return[Object(r.q)("b",t(i.children))];case"strike":return[Object(r.q)("del",t(i.children))];case"italic":return Object(r.q)("i",{style:"font-style: oblique;"},t(i.children));case"fn":var l;switch(i.props.name){case"tada":l="font-size: 150%;animation: tada 1s linear infinite both;";break;case"jelly":var u=n(i.props.args.speed)||"1s";l="animation: mfm-rubberBand ".concat(u," linear infinite both;");break;case"twitch":var d=n(i.props.args.speed)||"0.5s";l="animation: mfm-twitch ".concat(d," ease infinite;");break;case"shake":var p=n(i.props.args.speed)||"0.5s";l="animation: mfm-shake ".concat(p," ease infinite;");break;case"spin":var h=i.props.args.left?"reverse":i.props.args.alternate?"alternate":"normal",b=i.props.args.x?"mfm-spinX":i.props.args.y?"mfm-spinY":"mfm-spin",m=n(i.props.args.speed)||"1.5s";l="animation: ".concat(b," ").concat(m," linear infinite; animation-direction: ").concat(h,";");break;case"jump":l="animation: mfm-jump 0.75s linear infinite;";break;case"bounce":l="animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;";break;case"flip":var f=i.props.args.h&&i.props.args.v?"scale(-1, -1)":i.props.args.v?"scaleY(-1)":"scaleX(-1)";l="transform: ".concat(f,";");break;case"x2":l="font-size: 200%;";break;case"x3":l="font-size: 400%;";break;case"x4":l="font-size: 600%;";break;case"font":var O=i.props.args.serif?"serif":i.props.args.monospace?"monospace":i.props.args.cursive?"cursive":i.props.args.fantasy?"fantasy":i.props.args.emoji?"emoji":i.props.args.math?"math":null;O&&(l="font-family: ".concat(O,";"));break;case"blur":return Object(r.q)("span",{class:"_mfm_blur_"},t(i.children));case"rainbow":l="animation: mfm-rainbow 1s linear infinite;";break;case"sparkle":return Object(r.q)(MkSparkle,{},t(i.children));case"rotate":var j=parseInt(i.props.args.deg)||"90";l="transform: rotate(".concat(j,"deg); transform-origin: center center;")}return null==l?Object(r.q)("span",{},["$[",i.props.name," "].concat(U()(t(i.children)),["]"])):Object(r.q)("span",{style:"display: inline-block;"+l},t(i.children));case"small":return[Object(r.q)("small",{style:"opacity: 0.7;"},t(i.children))];case"center":return[Object(r.q)("div",{style:"text-align:center;"},t(i.children))];case"url":return[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},i.props.url)];case"link":return console.log(i.props),[Object(r.q)("a",{key:Math.random(),href:i.props.url,rel:"nofollow noopener"},t(i.children))];case"mention":var g=e.status.attentions.find((function(e){return"@".concat(e.screen_name)===i.props.acct||e.screen_name===i.props.username}));return g?[Object(r.q)(E.a,{url:g.statusnet_profile_url,content:i.props.acct,userScreenName:i.props.acct})]:null;case"hashtag":return[Object(r.q)("a",{rel:"noopener noreferrer",target:"_blank",key:i.props.hashtag,href:e.status.tags.find((function(e){return e.name===i.props.hashtag})).url},"#".concat(i.props.hashtag))];case"blockCode":return[Object(r.q)("pre",{key:Math.random(),lang:i.props.lang},i.props.code)];case"inlineCode":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];case"quote":return e.nowrap?[Object(r.q)("span",{class:"quote"},t(i.children))]:[Object(r.q)("div",{class:"quote"},t(i.children))];case"emojiCode":return[Object(r.q)("div",{class:"still-image emoji img"},[Object(r.q)("img",{key:Math.random(),title:i.props.name,alt:i.props.name,src:e.status.emojis.find((function(e){return e.shortcode===i.props.name})).static_url})])];case"unicodeEmoji":return i.props.emoji;case"math":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code})];case"mathInline":return[Object(r.q)("pre",{key:Math.random(),code:i.props.code,inline:!0})];default:return console.error("unrecognized ast type:",i.type),[]}})),(s=[]).concat.apply(s,U()(o));var o,s}(t))}});function Q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}H.c.add(q.D,q.Q,q.K,q.N,q.X);var ee={name:"StatusContent",props:["compact","status","focused","noHeading","fullContent","singleLine","showingTall","expandingSubject","showingLongSubject","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject"],data:function(){var e=this.$store.getters.mergedConfig.renderMisskeyMarkdown;return{postLength:this.status.text.length,parseReadyDone:!1,renderMisskeyMarkdown:e}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Q(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({localCollapseSubjectDefault:function(){return this.mergedConfig.collapseMessageWithSubject},tallStatus:function(){return!this.singleLine&&!this.compact&&this.status.raw_html.split(/<p|<br/).length+this.postLength/80>20},longSubject:function(){return this.status.summary.length>240},mightHideBecauseSubject:function(){return!!this.status.summary&&this.localCollapseSubjectDefault},mightHideBecauseTall:function(){return this.tallStatus&&!(this.status.summary&&this.localCollapseSubjectDefault)},hideSubjectStatus:function(){return this.mightHideBecauseSubject&&!this.expandingSubject},hideTallStatus:function(){return this.mightHideBecauseTall&&!this.showingTall},showingMore:function(){return this.mightHideBecauseTall&&this.showingTall||this.mightHideBecauseSubject&&this.expandingSubject},attachmentTypes:function(){return this.status.attachments.map((function(e){return z.a.fileType(e.mimetype)}))}},Object(N.c)(["mergedConfig"])),components:{RichContent:S.a,MFMContent:Z},mounted:function(){var e=this;this.status.attentions&&this.status.attentions.forEach((function(t){var n=t.id;e.$store.dispatch("fetchUserIfMissing",n)}))},methods:{onParseReady:function(e){var t=this;if(!this.parseReadyDone){this.parseReadyDone=!0,this.$emit("parseReady",e);var n=e.writtenMentions,r=e.invisibleMentions;n.filter((function(e){return!e.notifying})).forEach((function(e){var n=e.content,r=e.url,i=n.replace(/<[^>]+?>/gi,"");if(i.startsWith("@")){var o=i.slice(1),s=r.replace(/^https?:\/\//,"").replace(/\/.+?$/,"");t.$store.dispatch("fetchUserIfMissing","".concat(o,"@").concat(s))}})),this.postLength=r.reduce((function(e,t){return e-t.textContent.length-1}),this.postLength)}},toggleShowMore:function(){this.mightHideBecauseTall?this.toggleShowingTall():this.mightHideBecauseSubject&&this.toggleExpandingSubject()},generateTagLink:function(e){return"/tag/".concat(e)}}};n(521);var te=x()(ee,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("RichContent"),c=Object(r.J)("MFMContent"),l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusBody",{"-compact":e.compact}])},[Object(r.k)("div",I,[e.status.summary_raw_html?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["summary-wrapper",{"-tall":e.longSubject&&!e.showingLongSubject}])},[Object(r.m)(a,{class:"media-body summary",html:e.status.summary_raw_html,emoji:e.status.emojis},null,8,["html","emoji"]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.hide_full_subject")),513),[[r.T,e.longSubject&&e.showingLongSubject]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleShowingLongSubject&&e.toggleShowingLongSubject(...t),["prevent"]))},Object(r.O)(e.$t("status.show_full_subject")),513),[[r.T,e.longSubject&&!e.showingLongSubject]])],2)):Object(r.i)("",!0),Object(r.k)("div",{class:Object(r.w)([{"-tall-status":e.hideTallStatus},"text-wrapper"])},[Object(r.W)(Object(r.k)("button",{class:Object(r.w)(["button-unstyled -link tall-status-hider",{"-focused":e.focused}]),onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.$t("general.show_more")),3),[[r.T,e.hideTallStatus]]),e.hideSubjectStatus||e.singleLine&&e.status.summary_raw_html?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",$,[e.renderMisskeyMarkdown&&e.status.mfm_content?(Object(r.D)(),Object(r.h)(c,{key:0,class:"RichContent text media-body mfm-post-content",status:e.status},null,8,["status"])):(Object(r.D)(),Object(r.h)(a,{key:1,class:Object(r.w)([{"-single-line":e.singleLine},"text media-body"]),html:e.status.raw_html,emoji:e.status.emojis,"handle-links":!0,greentext:e.mergedConfig.greentext,attentions:e.status.attentions,onParseReady:e.onParseReady},null,8,["class","html","emoji","greentext","attentions","onParseReady"]))])),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link cw-status-hider",onClick:t[3]||(t[3]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},[Object(r.l)(Object(r.O)(e.$t("status.show_content"))+" ",1),e.attachmentTypes.includes("image")?(Object(r.D)(),Object(r.h)(l,{key:0,icon:"image"})):Object(r.i)("",!0),e.attachmentTypes.includes("video")?(Object(r.D)(),Object(r.h)(l,{key:1,icon:"video"})):Object(r.i)("",!0),e.attachmentTypes.includes("audio")?(Object(r.D)(),Object(r.h)(l,{key:2,icon:"music"})):Object(r.i)("",!0),e.attachmentTypes.includes("unknown")?(Object(r.D)(),Object(r.h)(l,{key:3,icon:"file"})):Object(r.i)("",!0),e.status.poll&&e.status.poll.options?(Object(r.D)(),Object(r.h)(l,{key:4,icon:"poll-h"})):Object(r.i)("",!0),e.status.card?(Object(r.D)(),Object(r.h)(l,{key:5,icon:"link"})):Object(r.i)("",!0)],512),[[r.T,e.hideSubjectStatus]]),Object(r.W)(Object(r.k)("button",{class:"button-unstyled -link status-unhider",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.toggleShowMore&&e.toggleShowMore(...t),["prevent"]))},Object(r.O)(e.tallStatus?e.$t("general.show_less"):e.$t("status.hide_content")),513),[[r.T,e.showingMore&&!e.fullContent]])],2)]),e.hideSubjectStatus?Object(r.i)("",!0):Object(r.I)(e.$slots,"default",{key:0})],2)}]]),ne=n(142);function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(q.r,q.D,q.Q,q.K,q.N,q.X);var oe,se=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},ae=function(e,t){var n=se(t),r="controlledToggle".concat(n),i="uncontrolled".concat(n);e[r]?e[r]():e[i]=!e[i]},ce={name:"StatusContent",props:["status","compact","focused","noHeading","fullContent","singleLine","controlledShowingTall","controlledExpandingSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject"],data:function(){return{uncontrolledShowingTall:this.fullContent||this.inConversation&&this.focused,uncontrolledShowingLongSubject:!1,uncontrolledExpandingSubject:!this.$store.getters.mergedConfig.collapseMessageWithSubject}},computed:ie(ie(ie({},(oe=["showingTall","expandingSubject","showingLongSubject"],oe.reduce((function(e,t){var n=se(t),r="controlledToggle".concat(n),i="controlled".concat(n),o="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[r]&&void 0===this.$props[r]||!this[r]?this[o]:this[i]},e}),{}))),{},{hideAttachments:function(){return this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation},nsfwClickthrough:function(){return!!this.status.nsfw&&(!this.status.summary||!this.localCollapseSubjectDefault)},attachmentSize:function(){return this.compact?"small":this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation||this.status.attachments.length>this.maxThumbnails?"hide":"normal"},maxThumbnails:function(){return this.mergedConfig.maxThumbnails}},Object(N.c)(["mergedConfig"])),Object(N.e)({currentUser:function(e){return e.users.currentUser}})),components:{Attachment:l.a,Poll:D,Gallery:T.a,LinkPreview:ne.a,StatusBody:te},methods:{toggleShowingTall:function(){ae(this,"showingTall")},toggleExpandingSubject:function(){ae(this,"expandingSubject")},toggleShowingLongSubject:function(){ae(this,"showingLongSubject")},setMedia:function(){var e=this,t="hide"===this.attachmentSize?this.status.attachments:this.galleryAttachments;return function(){return e.$store.dispatch("setMedia",t)}}}};n(523);const le=x()(ce,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Poll"),d=Object(r.J)("FAIcon"),p=Object(r.J)("gallery"),h=Object(r.J)("link-preview"),b=Object(r.J)("StatusBody");return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["StatusContent",{"-compact":e.compact}])},[Object(r.I)(e.$slots,"header"),Object(r.m)(b,{status:e.status,compact:e.compact,"single-line":e.singleLine,"showing-tall":e.showingTall,"expanding-subject":e.expandingSubject,"showing-long-subject":e.showingLongSubject,"toggle-showing-tall":e.toggleShowingTall,"toggle-expanding-subject":e.toggleExpandingSubject,"toggle-showing-long-subject":e.toggleShowingLongSubject,onParseReady:t[2]||(t[2]=t=>e.$emit("parseReady",t))},{default:Object(r.V)(()=>[e.status.poll&&e.status.poll.options&&!e.compact?(Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(u,{"base-poll":e.status.poll,emoji:e.status.emojis},null,8,["base-poll","emoji"])])):e.status.poll&&e.status.poll.options&&e.compact?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(d,{icon:"poll-h",size:"2x"})])):Object(r.i)("",!0),0!==e.status.attachments.length?(Object(r.D)(),Object(r.h)(p,{key:2,class:"attachments media-body",nsfw:e.nsfwClickthrough,attachments:e.status.attachments,limit:e.compact?1:0,size:e.attachmentSize,onPlay:t[0]||(t[0]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[1]||(t[1]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["nsfw","attachments","limit","size"])):Object(r.i)("",!0),!e.status.card||e.noHeading||e.compact?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",s,[Object(r.m)(h,{card:e.status.card,size:e.attachmentSize,nsfw:e.nsfwClickthrough},null,8,["card","size","nsfw"])]))]),_:1},8,["status","compact","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject"]),Object(r.I)(e.$slots,"footer")],2)}]]);t.a=le},,function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return l})),n.d(t,"e",(function(){return u}));var r=6e4,i=60*r,o=24*i,s=7*o,a=30*o,c=365.25*o,l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;"string"==typeof e&&(e=Date.parse(e));var n=Date.now()>e?Math.floor:Math.ceil,l=Math.abs(Date.now()-e),u={num:n(l/c),key:"time.years"};return l<1e3*t?(u.num=0,u.key="time.now"):l<r?(u.num=n(l/1e3),u.key="time.seconds"):l<i?(u.num=n(l/r),u.key="time.minutes"):l<o?(u.num=n(l/i),u.key="time.hours"):l<s?(u.num=n(l/o),u.key="time.days"):l<a?(u.num=n(l/s),u.key="time.weeks"):l<c&&(u.num=n(l/a),u.key="time.months"),1===u.num&&(u.key=u.key.slice(0,-1)),u},u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=l(e,t);return n.key+="_short",n}},,,function(e,t,n){"use strict";var r=n(0);const i={key:0,ref:"canvas"},o=["alt","title","src","referrerpolicy"];var s={props:["src","referrerpolicy","mimetype","imageLoadError","imageLoadHandler","alt","height","width"],data:function(){return{stopGifs:this.$store.getters.mergedConfig.stopGifs}},computed:{animated:function(){return this.stopGifs&&("image/gif"===this.mimetype||this.src.endsWith(".gif"))},style:function(){var e=function(e){return/\d$/.test(e)?e+"px":e};return{height:this.height?e(this.height):null,width:this.width?e(this.width):null}}},methods:{onLoad:function(){var e=this.$refs.src;if(e){this.imageLoadHandler&&this.imageLoadHandler(e);var t=this.$refs.canvas;if(t){var n=e.naturalWidth,r=e.naturalHeight;t.width=n,t.height=r,t.getContext("2d").drawImage(e,0,0,n,r)}}},onError:function(){this.imageLoadError&&this.imageLoadError()}}},a=(n(507),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",{class:Object(r.w)(["still-image",{animated:e.animated}]),style:Object(r.x)(e.style)},[e.animated?(Object(r.D)(),Object(r.j)("canvas",i,null,512)):Object(r.i)("",!0),(Object(r.D)(),Object(r.j)("img",{ref:"src",key:e.src,alt:e.alt,title:e.alt,src:e.src,referrerpolicy:e.referrerpolicy,onLoad:t[0]||(t[0]=(...t)=>e.onLoad&&e.onLoad(...t)),onError:t[1]||(t[1]=(...t)=>e.onError&&e.onError(...t))},null,40,o)),Object(r.I)(e.$slots,"default")],6)}]]);t.a=c},function(e,t,n){"use strict";var r=n(0);const i=["disabled","checked","indeterminate"],o=Object(r.k)("i",{class:"checkbox-indicator"},null,-1),s={key:0,class:"label"};var a={emits:["update:modelValue"],props:["modelValue","indeterminate","disabled"]},c=(n(502),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,a,c,l){return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["checkbox",{disabled:n.disabled,indeterminate:n.indeterminate}])},[Object(r.k)("input",{type:"checkbox",disabled:n.disabled,checked:n.modelValue,indeterminate:n.indeterminate,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.checked))},null,40,i),o,e.$slots.default?(Object(r.D)(),Object(r.j)("span",s,[Object(r.I)(e.$slots,"default")])):Object(r.i)("",!0)],2)}]]);t.a=l},function(e,t,n){"use strict";var r=n(0);const i=["disabled","value"],o=Object(r.l)(" "+Object(r.O)(" ")+" ");var s=n(6),a=n(3);s.c.add(a.n);var c={emits:["update:modelValue"],props:["modelValue","disabled","unstyled","kind"]},l=(n(505),n(4));const u=n.n(l)()(c,[["render",function(e,t,n,s,a,c){const l=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["Select input",{disabled:e.disabled,unstyled:e.unstyled}])},[Object(r.k)("select",{disabled:e.disabled,value:e.modelValue,onChange:t[0]||(t[0]=t=>e.$emit("update:modelValue",t.target.value))},[Object(r.I)(e.$slots,"default")],40,i),o,Object(r.m)(l,{class:"select-down-icon",icon:"chevron-down"})],2)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={class:"basic-user-card"},o={key:0,class:"basic-user-card-expanded-content"},s={key:1,class:"basic-user-card-collapsed-content"},a=["title"];var c=n(35),l=n(22),u=n(25),d=n(23),p={props:["user"],data:function(){return{userExpanded:!1}},components:{UserCard:c.a,UserAvatar:l.default,RichContent:u.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},userProfileLink:function(e){return Object(d.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},h=(n(577),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("UserAvatar"),p=Object(r.J)("router-link"),h=Object(r.J)("UserCard"),b=Object(r.J)("RichContent");return Object(r.D)(),Object(r.j)("div",i,[Object(r.m)(p,{to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.m)(d,{class:"avatar",user:e.user,onClick:Object(r.Y)(e.toggleUserExpanded,["prevent"])},null,8,["user","onClick"])]),_:1},8,["to"]),e.userExpanded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.m)(h,{"user-id":e.user.id,rounded:!0,bordered:!0},null,8,["user-id"])])):(Object(r.D)(),Object(r.j)("div",s,[Object(r.k)("div",{title:e.user.name,class:"basic-user-card-user-name"},[Object(r.m)(b,{class:"basic-user-card-user-name-value",html:e.user.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,a),Object(r.k)("div",null,[Object(r.m)(p,{class:"basic-user-card-screen-name",to:e.userProfileLink(e.user)},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.user.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.I)(e.$slots,"default")]))])}]]);t.a=b},function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"e",(function(){return j})),n.d(t,"f",(function(){return y})),n.d(t,"b",(function(){return _})),n.d(t,"c",(function(){return S})),n.d(t,"d",(function(){return C}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(28),c=n.n(a),l=n(12),u=n.n(l),d=n(20),p=n(18),h=n(36);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f=3,O=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.b,n=[e],r=t[e];r;)n.unshift(r),r=t[r];return n},j=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return O(e).map((function(o){return[o===e?r[t]:r[o],o===e?i[n]||1:i[o]]}))},g=function(e,t){var n=t[e];if("string"==typeof n&&n.startsWith("--"))return[n.substring(2)];if(null===n)return[];var r=n.depends,i=n.layer,o=n.variant,s=i?O(i).map((function(e){return e===i?o||i:e})):[];return Array.isArray(r)?[].concat(u()(r),u()(s)):u()(s)},v=function(e){return"object"===c()(e)?e:{depends:e.startsWith("--")?[e.substring(2)]:[],default:e.startsWith("#")?e:void 0}},y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(null!==r.opacity){if(r.opacity)return r.opacity;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.opacity||null===a?a.opacity:a.depends&&o.includes(s)?r(s,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:h.c,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g,r=v(t[e]);if(h.b[e])return e;if(null!==r.layer){if(r.layer)return r.layer;var i=function r(i){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],s=n(i,t)[0];if(void 0!==s){var a=t[s];if(void 0!==a)return a.layer||null===a?a.layer:a.depends?r(a,[].concat(u()(o),[s])):null}};return r.depends?i(e):void 0}},k=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h.c,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g,n=Object.keys(e),r=new Set(n),i=new Set,o=new Set,s=u()(n),a=[],c=function n(s){if(r.has(s))r.delete(s),i.add(s),t(s,e).forEach(n),i.delete(s),o.add(s),a.push(s);else if(i.has(s))console.debug("Cyclic depenency in topoSort, ignoring"),a.push(s);else if(!o.has(s))throw new Error("Unintended condition in topoSort!")};s.length>0;)c(s.pop());return a.map((function(e,t){return{data:e,index:t}})).sort((function(n,r){var i=n.data,o=n.index,s=r.data,a=r.index,c=t(i,e).length,l=t(s,e).length;return c===l||0!==l&&0!==c?o-a:0===c&&0!==l?-1:0===l&&0!==c?1:void 0})).map((function(e){return e.data}))}(Object.entries(h.c).sort((function(e,t){var n=s()(e,2),r=(n[0],n[1]),i=s()(t,2),o=(i[0],i[1]);return(r&&r.priority||0)-(o&&o.priority||0)})).reduce((function(e,t){var n=s()(t,2),r=n[0],o=n[1];return m(m({},e),{},i()({},r,o))}),{})),_=Object.entries(h.c).reduce((function(e,t){var n=s()(t,2),r=n[0],o=(n[1],y(r,h.c,g));return o?m(m({},e),{},i()({},o,{defaultValue:h.a[o]||1,affectedSlots:[].concat(u()(e[o]&&e[o].affectedSlots||[]),[r])})):e}),{}),S=function(e,t,n){if("string"!=typeof e||!e.startsWith("--"))return e;var r=null,i=e.split(/,/g).map((function(e){return e.trim()})),o=s()(i,2),a=o[0],c=o[1];return r=t(a.substring(2)),c&&(r=Object(d.brightness)(Number.parseFloat(c)*n,r).rgb),r},C=function(e,t){return k.reduce((function(n,r){var o=n.colors,s=n.opacity,a=e[r],c=v(h.c[r]),l=g(r,h.c),b=!!c.textColor,f=c.variant||c.layer,O=null;O=b?Object(p.b)(m({},o[l[0]]||Object(d.convert)(e[r]||"#FF00FF").rgb),j(w(r)||"bg",f||"bg",y(f),o,s)):f&&f!==r?o[f]||Object(d.convert)(e[f]).rgb:o.bg||Object(d.convert)(e.bg);var k=Object(p.h)(O)<.5?1:-1,C=null;if(a){var P=a;if("transparent"===P){var x=j(w(r),r,y(r)||r,o,s).slice(0,-1);P=m(m({},Object(p.b)(Object(d.convert)("#FF00FF").rgb,x)),{},{a:0})}else"string"==typeof a&&a.startsWith("--")?P=S(a,(function(t){return o[t]||e[t]}),k):"string"==typeof a&&a.startsWith("#")&&(P=Object(d.convert)(P).rgb);C=m({},P)}else if(c.default)C=Object(d.convert)(c.default).rgb;else{var D=c.color||function(e,t){return m({},t)};if(c.textColor)if("bw"===c.textColor)C=Object(d.contrastRatio)(O).rgb;else{var T=m({},o[l[0]]);c.color&&(T=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))),C=Object(p.e)(O,m({},T),"preserve"===c.textColor)}else C=D.apply(void 0,[k].concat(u()(l.map((function(e){return m({},o[e])})))))}if(!C)throw new Error("Couldn't generate color for "+r);var I=c.opacity||y(r),$=c.opacity;if(null===$)C.a=1;else if("transparent"===a)C.a=0;else{var z=$&&void 0!==t[I],M=l[0],U=M&&o[M];$||!U||c.textColor||null===$?U||I?U&&0===U.a?C.a=0:C.a=Number(z?t[I]:(_[I]||{}).defaultValue):delete C.a:C.a=U.a}return(Number.isNaN(C.a)||void 0===C.a)&&(C.a=1),I?{colors:m(m({},o),{},i()({},r,C)),opacity:m(m({},s),{},i()({},I,C.a))}:{colors:m(m({},o),{},i()({},r,C)),opacity:s}}),{colors:{},opacity:{}})}},,,function(e,t,n){"use strict";var r=n(0);const i={ref:"form",class:"post-status-form"},o={class:"form-group"},s={key:1,class:"visibility-notice notice-dismissible"},a={key:2,class:"visibility-notice notice-dismissible"},c={key:3,class:"visibility-notice notice-dismissible"},l={key:4,class:"visibility-notice"},u={key:0},d={key:1},p={key:5,class:"preview-heading faint"},h={class:"preview-spinner"},b={key:6,class:"preview-container"},m={key:0,class:"preview-status"},f={key:1,class:"preview-status preview-error"},O=["placeholder","disabled"],j=["placeholder","disabled"],g={key:8,class:"visibility-tray"},v={key:0,class:"text-format"},y=["value"],w={key:1,class:"text-format"},k={class:"only-format"},_={ref:"bottom",class:"form-bottom"},S={class:"form-bottom-left"},C=["title"],P=["title"],x={key:0,disabled:"",class:"btn button-default"},D={key:1,disabled:"",class:"btn button-default"},T=["disabled"],I={key:1,class:"alert error"},$={key:3,class:"upload_settings"};var z=n(13),M=n.n(z),U=n(5),F=n.n(U),E=n(12),L=n.n(E),R=n(56),A=n.n(R),N=n(136),B=n.n(N),V=n(21),H=n.n(V),q=n(224),J=n.n(q),W=n(10),Y=n.n(W),G=n(76);const K=["title"],X=["disabled"];var Z=n(96),Q=n(6),ee=n(3);function te(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ne(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Q.c.add(ee.tb,ee.r);var re={data:function(){return{uploadCount:0,uploadReady:!0}},computed:{uploading:function(){return this.uploadCount>0}},methods:{uploadFile:function(e){var t=this,n=this.$store;if(e.size>n.state.instance.uploadlimit){var r=Z.a.fileSizeFormat(e.size),i=Z.a.fileSizeFormat(n.state.instance.uploadlimit);t.$emit("upload-failed","file_too_big",{filesize:r.num,filesizeunit:r.unit,allowedsize:i.num,allowedsizeunit:i.unit})}else{var o=new FormData;o.append("file",e),t.$emit("uploading"),t.uploadCount++,G.a.uploadMedia({store:n,formData:o}).then((function(e){t.$emit("uploaded",e),t.decreaseUploadCount()}),(function(e){t.$emit("upload-failed","default"),t.decreaseUploadCount()}))}},decreaseUploadCount:function(){this.uploadCount--,0===this.uploadCount&&this.$emit("all-uploaded")},clearFile:function(){var e=this;this.uploadReady=!1,this.$nextTick((function(){e.uploadReady=!0}))},multiUpload:function(e){var t,n=te(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;this.uploadFile(r)}}catch(e){n.e(e)}finally{n.f()}},change:function(e){var t=e.target;this.multiUpload(t.files)}},props:["dropFiles","disabled"],watch:{dropFiles:function(e){this.uploading||this.multiUpload(e)}}},ie=(n(500),n(4)),oe=n.n(ie);var se=oe()(re,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("label",{class:Object(r.w)(["media-upload",{disabled:e.disabled}]),title:e.$t("tool_tip.media_upload")},[e.uploading?(Object(r.D)(),Object(r.h)(a,{key:0,class:"progress-icon",icon:"circle-notch",spin:""})):Object(r.i)("",!0),e.uploading?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(a,{key:1,class:"new-icon",icon:"upload"})),e.uploadReady?(Object(r.D)(),Object(r.j)("input",{key:2,class:"hidden-input-file",disabled:e.disabled,type:"file",multiple:"true",onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},null,40,X)):Object(r.i)("",!0)],10,K)}]]),ae=n(175),ce=n(310);const le={key:0,class:"poll-form"},ue={class:"input-container"},de=["id","onUpdate:modelValue","placeholder","maxlength","onKeydown"],pe=["onClick"],he={class:"poll-type-expiry"},be=["title"],me={value:"single"},fe={value:"multiple"},Oe=["title"],je=["min","max"],ge=Object(r.l)(" "+Object(r.O)(" ")+" "),ve=["value"];var ye=n(98),we=n.n(ye),ke=n(47),_e=n(52);Q.c.add(ee.rb,ee.V);var Se={components:{Select:_e.a},name:"PollForm",props:["visible"],data:function(){return{pollType:"single",options:["",""],expiryAmount:10,expiryUnit:"minutes"}},computed:{pollLimits:function(){return this.$store.state.instance.pollLimits},maxOptions:function(){return this.pollLimits.max_options},maxLength:function(){return this.pollLimits.max_option_chars},expiryUnits:function(){var e=this,t=this.convertExpiryFromUnit;return["minutes","hours","days"].filter((function(n){return e.pollLimits.max_expiration>=t(n,1)}))},minExpirationInCurrentUnit:function(){return Math.ceil(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.min_expiration))},maxExpirationInCurrentUnit:function(){return Math.floor(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.max_expiration))}},methods:{clear:function(){this.pollType="single",this.options=["",""],this.expiryAmount=10,this.expiryUnit="minutes"},nextOption:function(e){var t=this.$el.querySelector("#poll-".concat(e+1));t?t.focus():this.addOption()&&this.$nextTick((function(){this.nextOption(e)}))},addOption:function(){return this.options.length<this.maxOptions&&(this.options.push(""),!0)},deleteOption:function(e,t){this.options.length>2&&(this.options.splice(e,1),this.updatePollToParent())},convertExpiryToUnit:function(e,t){switch(e){case"minutes":return 1e3*t/ke.c;case"hours":return 1e3*t/ke.b;case"days":return 1e3*t/ke.a}},convertExpiryFromUnit:function(e,t){switch(e){case"minutes":return.001*t*ke.c;case"hours":return.001*t*ke.b;case"days":return.001*t*ke.a}},expiryAmountChange:function(){this.expiryAmount=Math.max(this.minExpirationInCurrentUnit,this.expiryAmount),this.expiryAmount=Math.min(this.maxExpirationInCurrentUnit,this.expiryAmount),this.updatePollToParent()},updatePollToParent:function(){var e=this.convertExpiryFromUnit(this.expiryUnit,this.expiryAmount),t=we()(this.options.filter((function(e){return""!==e})));t.length<2?this.$emit("update-poll",{error:this.$t("polls.not_enough_options")}):this.$emit("update-poll",{options:t,multiple:"multiple"===this.pollType,expiresIn:e})}}};n(506);var Ce=oe()(Se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Select");return e.visible?(Object(r.D)(),Object(r.j)("div",le,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.options,(n,i)=>(Object(r.D)(),Object(r.j)("div",{key:i,class:"poll-option"},[Object(r.k)("div",ue,[Object(r.W)(Object(r.k)("input",{id:"poll-"+i,"onUpdate:modelValue":t=>e.options[i]=t,size:"1",class:"poll-option-input",type:"text",placeholder:e.$t("polls.option"),maxlength:e.maxLength,onChange:t[0]||(t[0]=(...t)=>e.updatePollToParent&&e.updatePollToParent(...t)),onKeydown:Object(r.X)(Object(r.Y)(t=>e.nextOption(i),["stop","prevent"]),["enter"])},null,40,de),[[r.S,e.options[i]]])]),e.options.length>2?(Object(r.D)(),Object(r.j)("button",{key:0,class:"delete-option button-unstyled -hover-highlight",onClick:t=>e.deleteOption(i)},[Object(r.m)(a,{icon:"times"})],8,pe)):Object(r.i)("",!0)]))),128)),e.options.length<e.maxOptions?(Object(r.D)(),Object(r.j)("button",{key:0,class:"add-option faint button-unstyled -hover-highlight",onClick:t[1]||(t[1]=(...t)=>e.addOption&&e.addOption(...t))},[Object(r.m)(a,{icon:"plus",size:"sm"}),Object(r.l)(" "+Object(r.O)(e.$t("polls.add_option")),1)])):Object(r.i)("",!0),Object(r.k)("div",he,[Object(r.k)("div",{class:"poll-type",title:e.$t("polls.type")},[Object(r.m)(c,{modelValue:e.pollType,"onUpdate:modelValue":t[2]||(t[2]=t=>e.pollType=t),class:"poll-type-select",unstyled:"true",onChange:e.updatePollToParent},{default:Object(r.V)(()=>[Object(r.k)("option",me,Object(r.O)(e.$t("polls.single_choice")),1),Object(r.k)("option",fe,Object(r.O)(e.$t("polls.multiple_choices")),1)]),_:1},8,["modelValue","onChange"])],8,be),Object(r.k)("div",{class:"poll-expiry",title:e.$t("polls.expiry")},[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[3]||(t[3]=t=>e.expiryAmount=t),type:"number",class:"expiry-amount hide-number-spinner",min:e.minExpirationInCurrentUnit,max:e.maxExpirationInCurrentUnit,onChange:t[4]||(t[4]=(...t)=>e.expiryAmountChange&&e.expiryAmountChange(...t))},null,40,je),[[r.S,e.expiryAmount]]),ge,Object(r.m)(c,{modelValue:e.expiryUnit,"onUpdate:modelValue":t[5]||(t[5]=t=>e.expiryUnit=t),unstyled:"true",class:"expiry-unit",onChange:e.expiryAmountChange},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.expiryUnits,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`time.${t}_short`,[""])),9,ve))),128))]),_:1},8,["modelValue","onChange"])],8,Oe)])])):Object(r.i)("",!0)}]]),Pe=n(58),xe=n(78),De=n(45),Te=n(33),Ie=n(137),$e=n(167),ze=n(8),Me=n(51);function Ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ue(Object(n),!0).forEach((function(t){F()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ue(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Q.c.add(ee.ib,ee.X,ee.tb,ee.g,ee.rb,ee.r);var Ee=function(e){return Number(e.substring(0,e.length-2))},Le={props:["replyTo","repliedUser","attentions","copyMessageScope","subject","disableSubject","disableScopeSelector","disableNotice","disableLockWarning","disablePolls","disableSensitivityCheckbox","disableSubmit","disablePreview","placeholder","maxHeight","postHandler","preserveFocus","autoFocus","fileLimit","submitOnEnter","emojiPickerPlacement","optimisticPosting"],emits:["posted","resize","mediaplay","mediapause"],components:{MediaUpload:se,EmojiInput:ce.a,PollForm:Ce,ScopeSelector:ae.a,Checkbox:Me.a,Select:_e.a,Attachment:Pe.a,StatusContent:De.a,Gallery:xe.a},mounted:function(){if(this.updateIdempotencyKey(),this.resize(this.$refs.textarea),this.replyTo){var e=this.$refs.textarea.value.length;this.$refs.textarea.setSelectionRange(e,e)}(this.replyTo||this.autoFocus)&&this.$refs.textarea.focus()},data:function(){var e=this.$route.query.message||"",t=this.$store.getters.mergedConfig.scopeCopy;if(this.replyTo){var n=this.$store.state.users.currentUser;e=function(e,t){var n=e.user,r=e.attentions,i=void 0===r?[]:r,o=L()(i);o.unshift(n),o=B()(o,"id"),o=J()(o,{id:t.id});var s=H()(o,(function(e){return"@".concat(e.screen_name)}));return s.length>0?s.join(" ")+" ":""}({user:this.repliedUser,attentions:this.attentions},n)}var r=this.copyMessageScope&&t||"direct"===this.copyMessageScope?this.copyMessageScope:this.$store.state.users.currentUser.default_scope,i=this.$store.getters.mergedConfig,o=i.postContentType,s=i.sensitiveByDefault,a=i.sensitiveIfSubject;return{dropFiles:[],uploadingFiles:!1,error:null,posting:!1,highlighted:0,newStatus:{spoilerText:this.subject||"",status:e,sensitiveIfSubject:a,nsfw:!!s,files:[],poll:{},mediaDescriptions:{},visibility:r,contentType:o},caret:0,pollFormVisible:!1,showDropIcon:"hide",dropStopTimeout:null,preview:null,previewLoading:!1,emojiInputShown:!1,idempotencyKey:""}},computed:Fe(Fe({users:function(){return this.$store.state.users.users},userDefaultScope:function(){return this.$store.state.users.currentUser.default_scope},showAllScopes:function(){return!this.mergedConfig.minimalScopesMode},emojiUserSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return Object($e.a)({emoji:[].concat(L()(this.$store.state.instance.emoji),L()(this.$store.state.instance.customEmoji))})},emoji:function(){return this.$store.state.instance.emoji||[]},customEmoji:function(){return this.$store.state.instance.customEmoji||[]},statusLength:function(){return this.newStatus.status.length},spoilerTextLength:function(){return this.newStatus.spoilerText.length},statusLengthLimit:function(){return this.$store.state.instance.textlimit},hasStatusLengthLimit:function(){return this.statusLengthLimit>0},charactersLeft:function(){return this.statusLengthLimit-(this.statusLength+this.spoilerTextLength)},isOverLengthLimit:function(){return this.hasStatusLengthLimit&&this.charactersLeft<0},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},alwaysShowSubject:function(){return this.mergedConfig.alwaysShowSubjectInput},postFormats:function(){return this.$store.state.instance.postFormats||[]},safeDMEnabled:function(){return this.$store.state.instance.safeDM},pollsAvailable:function(){return this.$store.state.instance.pollsAvailable&&this.$store.state.instance.pollLimits.max_options>=2&&!0!==this.disablePolls},hideScopeNotice:function(){return this.disableNotice||this.$store.getters.mergedConfig.hideScopeNotice},pollContentError:function(){return this.pollFormVisible&&this.newStatus.poll&&this.newStatus.poll.error},showPreview:function(){return!this.disablePreview&&(!!this.preview||this.previewLoading)},emptyStatus:function(){return""===this.newStatus.status.trim()&&0===this.newStatus.files.length},uploadFileLimitReached:function(){return this.newStatus.files.length>=this.fileLimit}},Object(ze.c)(["mergedConfig"])),Object(ze.e)({mobileLayout:function(e){return e.interface.mobileLayout}})),watch:{newStatus:{deep:!0,handler:function(){this.statusChanged()}}},methods:{statusChanged:function(){this.autoPreview(),this.updateIdempotencyKey()},clearStatus:function(){var e=this,t=this.newStatus;this.newStatus={status:"",spoilerText:"",files:[],visibility:t.visibility,contentType:t.contentType,poll:{},mediaDescriptions:{}},this.pollFormVisible=!1,this.$refs.mediaUpload&&this.$refs.mediaUpload.clearFile(),this.clearPollForm(),this.preserveFocus&&this.$nextTick((function(){e.$refs.textarea.focus()}));var n=this.$el.querySelector("textarea");n.style.height="auto",n.style.height=void 0,this.error=null,this.preview&&this.previewStatus()},postStatus:function(e,t){var n=arguments,r=this;return M()(Y.a.mark((function i(){var o,s,a;return Y.a.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.length>2&&void 0!==n[2]?n[2]:{},o=r.$store.getters.mergedConfig.sensitiveIfSubject,!r.posting||r.optimisticPosting){i.next=4;break}return i.abrupt("return");case 4:if(!r.disableSubmit){i.next=6;break}return i.abrupt("return");case 6:if(!r.emojiInputShown){i.next=8;break}return i.abrupt("return");case 8:if(r.submitOnEnter&&(e.stopPropagation(),e.preventDefault()),!r.optimisticPosting||!r.emptyStatus&&!r.isOverLengthLimit){i.next=11;break}return i.abrupt("return");case 11:if(!r.emptyStatus){i.next=14;break}return r.error=r.$t("post_status.empty_status_error"),i.abrupt("return");case 14:if(s=r.pollFormVisible?r.newStatus.poll:{},!r.pollContentError){i.next=18;break}return r.error=r.pollContentError,i.abrupt("return");case 18:return r.posting=!0,i.prev=19,i.next=22,r.setAllMediaDescriptions();case 22:i.next=29;break;case 24:return i.prev=24,i.t0=i.catch(19),r.error=r.$t("post_status.media_description_error"),r.posting=!1,i.abrupt("return");case 29:a={status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw||o&&t.spoilerText,media:t.files,store:r.$store,inReplyToStatusId:r.replyTo,contentType:t.contentType,poll:s,idempotencyKey:r.idempotencyKey},(r.postHandler?r.postHandler:G.a.postStatus)(a).then((function(e){e.error?r.error=e.error:(r.clearStatus(),r.$emit("posted",e)),r.posting=!1}));case 32:case"end":return i.stop()}}),i,null,[[19,24]])})))()},previewStatus:function(){var e=this;if(this.emptyStatus&&""===this.newStatus.spoilerText.trim())return this.preview={error:this.$t("post_status.preview_empty")},void(this.previewLoading=!1);var t=this.newStatus;this.previewLoading=!0,G.a.postStatus({status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:[],store:this.$store,inReplyToStatusId:this.replyTo,contentType:t.contentType,poll:{},preview:!0}).then((function(t){e.previewLoading&&(t.error?e.preview={error:t.error}:e.preview=t)})).catch((function(t){e.preview={error:t}})).finally((function(){e.previewLoading=!1}))},debouncePreviewStatus:A()((function(){this.previewStatus()}),500),autoPreview:function(){this.preview&&(this.previewLoading=!0,this.debouncePreviewStatus())},closePreview:function(){this.preview=null,this.previewLoading=!1},togglePreview:function(){this.showPreview?this.closePreview():this.previewStatus()},addMediaFile:function(e){this.newStatus.files.push(e),this.$emit("resize",{delayed:!0})},removeMediaFile:function(e){var t=this.newStatus.files.indexOf(e);this.newStatus.files.splice(t,1),this.$emit("resize")},editAttachment:function(e,t){this.newStatus.mediaDescriptions[e.id]=t},shiftUpMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n-1,0,e)},shiftDnMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n+1,0,e)},uploadFailed:function(e,t){t=t||{},this.error=this.$t("upload.error.base")+" "+this.$t("upload.error."+e,t)},startedUploadingFiles:function(){this.uploadingFiles=!0},finishedUploadingFiles:function(){this.$emit("resize"),this.uploadingFiles=!1},type:function(e){return Te.a.fileType(e.mimetype)},paste:function(e){this.autoPreview(),this.resize(e),e.clipboardData.files.length>0&&(e.preventDefault(),this.dropFiles=[e.clipboardData.files[0]])},fileDrop:function(e){e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),this.dropFiles=e.dataTransfer.files,clearTimeout(this.dropStopTimeout),this.showDropIcon="hide")},fileDragStop:function(e){var t=this;clearTimeout(this.dropStopTimeout),this.showDropIcon="fade",this.dropStopTimeout=setTimeout((function(){return t.showDropIcon="hide"}),500)},fileDrag:function(e){e.dataTransfer.dropEffect=this.uploadFileLimitReached?"none":"copy",e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(clearTimeout(this.dropStopTimeout),this.showDropIcon="show")},onEmojiInputInput:function(e){var t=this;this.$nextTick((function(){t.resize(t.$refs.textarea)}))},resize:function(e){var t=e.target||e;if(t instanceof window.Element){if(""===t.value)return t.style.height=null,this.$emit("resize"),void this.$refs["emoji-input"].resize();var n=this.$refs.form,r=this.$refs.bottom,i=window.getComputedStyle(r)["padding-bottom"],o=Ee(i),s=this.$el.closest(".column.-scrollable")||this.$el.closest(".post-form-modal-view")||window,a=window.getComputedStyle(t)["padding-top"],c=window.getComputedStyle(t)["padding-bottom"],l=Ee(a)+Ee(c),u=Ee(t.style.height),d=s===window?s.scrollY:s.scrollTop,p=s===window?s.innerHeight:s.offsetHeight,h=d+p;t.style.height="auto";var b=Math.floor(t.scrollHeight-l),m=this.maxHeight?Math.min(b,this.maxHeight):b;Math.abs(m-u)<=1&&(m=u),t.style.height="".concat(m,"px"),this.$emit("resize",m);var f=r.offsetHeight+Object(Ie.a)(r,s).top+o,O=h<f,j=p<n.offsetHeight,g=f-h,v=O&&!(j&&this.$refs.textarea.selectionStart!==this.$refs.textarea.value.length)?g:0,y=Math.round(d+v);s===window?s.scroll(0,y):s.scrollTop=y,this.$refs["emoji-input"].resize()}},showEmojiPicker:function(){this.$refs.textarea.focus(),this.$refs["emoji-input"].triggerShowPicker()},clearError:function(){this.error=null},changeVis:function(e){this.newStatus.visibility=e},togglePollForm:function(){this.pollFormVisible=!this.pollFormVisible},setPoll:function(e){this.newStatus.poll=e},clearPollForm:function(){this.$refs.pollForm&&this.$refs.pollForm.clear()},dismissScopeNotice:function(){this.$store.dispatch("setOption",{name:"hideScopeNotice",value:!0})},setMediaDescription:function(e){var t=this.newStatus.mediaDescriptions[e];if(t&&""!==t.trim())return G.a.setMediaDescription({store:this.$store,id:e,description:t})},setAllMediaDescriptions:function(){var e=this,t=this.newStatus.files.map((function(e){return e.id}));return Promise.all(t.map((function(t){return e.setMediaDescription(t)})))},handleEmojiInputShow:function(e){this.emojiInputShown=e},updateIdempotencyKey:function(){this.idempotencyKey=Date.now().toString()},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")}}};n(524);const Re=oe()(Le,[["render",function(e,t,n,z,M,U){const F=Object(r.J)("i18n-t"),E=Object(r.J)("FAIcon"),L=Object(r.J)("StatusContent"),R=Object(r.J)("EmojiInput"),A=Object(r.J)("scope-selector"),N=Object(r.J)("Select"),B=Object(r.J)("poll-form"),V=Object(r.J)("media-upload"),H=Object(r.J)("gallery"),q=Object(r.J)("Checkbox");return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{autocomplete:"off",onSubmit:t[26]||(t[26]=Object(r.Y)(()=>{},["prevent"])),onDragover:t[27]||(t[27]=Object(r.Y)((...t)=>e.fileDrag&&e.fileDrag(...t),["prevent"]))},[Object(r.k)("div",o,[e.$store.state.users.currentUser.locked||"private"!=e.newStatus.visibility||e.disableLockWarning?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(F,{key:0,keypath:"post_status.account_not_locked_warning",tag:"p",class:"visibility-notice",scope:"global"},{default:Object(r.V)(()=>[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=(...t)=>e.openProfileTab&&e.openProfileTab(...t))},Object(r.O)(e.$t("post_status.account_not_locked_warning_link")),1)]),_:1})),e.hideScopeNotice||"public"!==e.newStatus.visibility?e.hideScopeNotice||"unlisted"!==e.newStatus.visibility?!e.hideScopeNotice&&"private"===e.newStatus.visibility&&e.$store.state.users.currentUser.locked?(Object(r.D)(),Object(r.j)("p",c,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.private")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[3]||(t[3]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):"direct"===e.newStatus.visibility?(Object(r.D)(),Object(r.j)("p",l,[e.safeDMEnabled?(Object(r.D)(),Object(r.j)("span",u,Object(r.O)(e.$t("post_status.direct_warning_to_first_only")),1)):(Object(r.D)(),Object(r.j)("span",d,Object(r.O)(e.$t("post_status.direct_warning_to_all")),1))])):Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("p",a,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.unlisted")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[2]||(t[2]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])):(Object(r.D)(),Object(r.j)("p",s,[Object(r.k)("span",null,Object(r.O)(e.$t("post_status.scope_notice.public")),1),Object(r.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.dismissScopeNotice(),["prevent"]))},[Object(r.m)(E,{icon:"times"})])])),e.disablePreview?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",p,[Object(r.k)("a",{class:"preview-toggle faint",onClick:t[4]||(t[4]=Object(r.Y)((...t)=>e.togglePreview&&e.togglePreview(...t),["stop","prevent"]))},[Object(r.l)(Object(r.O)(e.$t("post_status.preview"))+" ",1),Object(r.m)(E,{icon:e.showPreview?"chevron-left":"chevron-right"},null,8,["icon"])]),Object(r.W)(Object(r.k)("div",h,[Object(r.m)(E,{class:"fa-old-padding",spin:"",icon:"circle-notch"})],512),[[r.T,e.previewLoading]])])),e.showPreview?(Object(r.D)(),Object(r.j)("div",b,[e.preview?e.preview.error?(Object(r.D)(),Object(r.j)("div",f,Object(r.O)(e.preview.error),1)):(Object(r.D)(),Object(r.h)(L,{key:2,status:e.preview,class:"preview-status"},null,8,["status"])):(Object(r.D)(),Object(r.j)("div",m,Object(r.O)(e.$t("general.loading")),1))])):Object(r.i)("",!0),e.disableSubject||!e.newStatus.spoilerText&&!e.alwaysShowSubject?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(R,{key:7,modelValue:e.newStatus.spoilerText,"onUpdate:modelValue":t[6]||(t[6]=t=>e.newStatus.spoilerText=t),"enable-emoji-picker":"",suggest:e.emojiSuggestor,class:"form-control"},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[5]||(t[5]=t=>e.newStatus.spoilerText=t),type:"text",placeholder:e.$t("post_status.content_warning"),disabled:e.posting&&!e.optimisticPosting,size:"1",class:"form-post-subject"},null,8,O),[[r.S,e.newStatus.spoilerText]])]),_:1},8,["modelValue","suggest"])),Object(r.m)(R,{ref:"emoji-input",modelValue:e.newStatus.status,"onUpdate:modelValue":t[14]||(t[14]=t=>e.newStatus.status=t),suggest:e.emojiUserSuggestor,placement:e.emojiPickerPlacement,class:"form-control main-input","enable-emoji-picker":"","hide-emoji-button":"","newline-on-ctrl-enter":e.submitOnEnter,"enable-sticker-picker":"",onInput:e.onEmojiInputInput,onStickerUploaded:e.addMediaFile,onStickerUploadFailed:e.uploadFailed,onShown:e.handleEmojiInputShow},{default:Object(r.V)(()=>[Object(r.W)(Object(r.k)("textarea",{ref:"textarea","onUpdate:modelValue":t[7]||(t[7]=t=>e.newStatus.status=t),placeholder:e.placeholder||e.$t("post_status.default"),rows:"1",cols:"1",disabled:e.posting&&!e.optimisticPosting,class:Object(r.w)(["form-post-body",{"scrollable-form":!!e.maxHeight}]),onKeydown:[t[8]||(t[8]=Object(r.X)(Object(r.Y)(t=>e.submitOnEnter&&e.postStatus(t,e.newStatus),["exact"]),["enter"])),t[9]||(t[9]=Object(r.X)(Object(r.Y)(t=>e.postStatus(t,e.newStatus),["meta"]),["enter"])),t[10]||(t[10]=Object(r.X)(Object(r.Y)(t=>!e.submitOnEnter&&e.postStatus(t,e.newStatus),["ctrl"]),["enter"]))],onInput:t[11]||(t[11]=(...t)=>e.resize&&e.resize(...t)),onCompositionupdate:t[12]||(t[12]=(...t)=>e.resize&&e.resize(...t)),onPaste:t[13]||(t[13]=(...t)=>e.paste&&e.paste(...t))},null,42,j),[[r.S,e.newStatus.status]]),e.hasStatusLengthLimit?(Object(r.D)(),Object(r.j)("p",{key:0,class:Object(r.w)(["character-counter faint",{error:e.isOverLengthLimit}])},Object(r.O)(e.charactersLeft),3)):Object(r.i)("",!0)]),_:1},8,["modelValue","suggest","placement","newline-on-ctrl-enter","onInput","onStickerUploaded","onStickerUploadFailed","onShown"]),e.disableScopeSelector?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",g,[Object(r.m)(A,{"show-all":e.showAllScopes,"user-default":e.userDefaultScope,"original-scope":e.copyMessageScope,"initial-scope":e.newStatus.visibility,"on-scope-change":e.changeVis},null,8,["show-all","user-default","original-scope","initial-scope","on-scope-change"]),e.postFormats.length>1?(Object(r.D)(),Object(r.j)("div",v,[Object(r.m)(N,{id:"post-content-type",modelValue:e.newStatus.contentType,"onUpdate:modelValue":t[15]||(t[15]=t=>e.newStatus.contentType=t),class:"form-control"},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.postFormats,t=>(Object(r.D)(),Object(r.j)("option",{key:t,value:t},Object(r.O)(e.$t(`post_status.content_type["${t}"]`)),9,y))),128))]),_:1},8,["modelValue"])])):Object(r.i)("",!0),1===e.postFormats.length&&"text/plain"!==e.postFormats[0]?(Object(r.D)(),Object(r.j)("div",w,[Object(r.k)("span",k,Object(r.O)(e.$t(`post_status.content_type["${e.postFormats[0]}"]`)),1)])):Object(r.i)("",!0)]))]),e.pollsAvailable?(Object(r.D)(),Object(r.h)(B,{key:0,ref:"pollForm",visible:e.pollFormVisible,onUpdatePoll:e.setPoll},null,8,["visible","onUpdatePoll"])):Object(r.i)("",!0),Object(r.k)("div",_,[Object(r.k)("div",S,[Object(r.m)(V,{ref:"mediaUpload",class:"media-upload-icon","drop-files":e.dropFiles,disabled:e.uploadFileLimitReached,onUploading:e.startedUploadingFiles,onUploaded:e.addMediaFile,onUploadFailed:e.uploadFailed,onAllUploaded:e.finishedUploadingFiles},null,8,["drop-files","disabled","onUploading","onUploaded","onUploadFailed","onAllUploaded"]),Object(r.k)("button",{class:"emoji-icon button-unstyled",title:e.$t("emoji.add_emoji"),onClick:t[16]||(t[16]=(...t)=>e.showEmojiPicker&&e.showEmojiPicker(...t))},[Object(r.m)(E,{icon:"smile-beam"})],8,C),e.pollsAvailable?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["poll-icon button-unstyled",{selected:e.pollFormVisible}]),title:e.$t("polls.add_poll"),onClick:t[17]||(t[17]=(...t)=>e.togglePollForm&&e.togglePollForm(...t))},[Object(r.m)(E,{icon:"poll-h"})],10,P)):Object(r.i)("",!0)]),e.posting?(Object(r.D)(),Object(r.j)("button",x,Object(r.O)(e.$t("post_status.posting")),1)):e.isOverLengthLimit?(Object(r.D)(),Object(r.j)("button",D,Object(r.O)(e.$t("post_status.post")),1)):(Object(r.D)(),Object(r.j)("button",{key:2,disabled:e.uploadingFiles||e.disableSubmit,class:"btn button-default",onTouchstart:t[18]||(t[18]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"])),onClick:t[19]||(t[19]=Object(r.Y)(t=>e.postStatus(t,e.newStatus),["stop","prevent"]))},Object(r.O)(e.$t("post_status.post")),41,T))],512),Object(r.W)(Object(r.k)("div",{style:Object(r.x)({animation:"show"===e.showDropIcon?"fade-in 0.25s":"fade-out 0.5s"}),class:"drop-indicator",onDragleave:t[20]||(t[20]=(...t)=>e.fileDragStop&&e.fileDragStop(...t)),onDrop:t[21]||(t[21]=Object(r.Y)((...t)=>e.fileDrop&&e.fileDrop(...t),["stop"]))},[Object(r.m)(E,{icon:e.uploadFileLimitReached?"ban":"upload"},null,8,["icon"])],36),[[r.T,"hide"!==e.showDropIcon]]),e.error?(Object(r.D)(),Object(r.j)("div",I,[Object(r.l)(" Error: "+Object(r.O)(e.error)+" ",1),Object(r.k)("button",{class:"button-unstyled",onClick:t[22]||(t[22]=(...t)=>e.clearError&&e.clearError(...t))},[Object(r.m)(E,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])):Object(r.i)("",!0),e.newStatus.files&&e.newStatus.files.length>0?(Object(r.D)(),Object(r.h)(H,{key:2,class:"attachments",grid:!0,nsfw:!1,attachments:e.newStatus.files,descriptions:e.newStatus.mediaDescriptions,"set-media":()=>e.$store.dispatch("setMedia",e.newStatus.files),editable:!0,"edit-attachment":e.editAttachment,"remove-attachment":e.removeMediaFile,"shift-up-attachment":e.newStatus.files.length>1&&e.shiftUpMediaFile,"shift-dn-attachment":e.newStatus.files.length>1&&e.shiftDnMediaFile,onPlay:t[23]||(t[23]=t=>e.$emit("mediaplay",e.attachment.id)),onPause:t[24]||(t[24]=t=>e.$emit("mediapause",e.attachment.id))},null,8,["attachments","descriptions","set-media","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment"])):Object(r.i)("",!0),e.newStatus.files.length>0&&!e.disableSensitivityCheckbox?(Object(r.D)(),Object(r.j)("div",$,[Object(r.m)(q,{modelValue:e.newStatus.nsfw,"onUpdate:modelValue":t[25]||(t[25]=t=>e.newStatus.nsfw=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("post_status.attachments_sensitive")),1)]),_:1},8,["modelValue"])])):Object(r.i)("",!0)],32)],512)}]]);t.a=Re},function(e,t,n){"use strict";var r=n(0);const i=["href","alt","title"],o={key:1,class:"attachment-buttons"},s=["placeholder"],a={key:1},c={class:"attachment-wrapper"},l=["href","alt","title"],u=["src"],d={key:1,class:"attachment-buttons"},p=["title"],h=["title"],b=["title"],m=["title"],f=["title"],O=["title"],j=["title"],g=["href"],v=["href"],y=["href"],w=["src","alt","title"],k={key:0,class:"image"},_=["src"],S={class:"text"},C=["href"],P=["innerHTML"],x=["href"],D=["placeholder"],T={key:1};var I=n(5),$=n.n(I),z=n(50),M=n(139),U=n(141),F=n(327),E=n.n(F),L=n(33),R=n(8),A=n(6),N=n(3);function B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}A.c.add(N.D,N.Q,N.K,N.xb,N.U,N.rb,N.lb,N.db,N.sb,N.T,N.b);var V={props:["attachment","description","hideDescription","nsfw","size","setMedia","remove","shiftUp","shiftDn","edit"],data:function(){return{localDescription:this.description||this.attachment.description,nsfwImage:this.$store.state.instance.nsfwCensorImage||E.a,hideNsfwLocal:this.$store.getters.mergedConfig.hideNsfw,preloadImage:this.$store.getters.mergedConfig.preloadImage,loading:!1,img:"image"===L.a.fileType(this.attachment.mimetype)&&document.createElement("img"),modalOpen:!1,showHidden:!1,flashLoaded:!1,showDescription:!1}},components:{Flash:M.a,StillImage:z.a,VideoAttachment:U.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?B(Object(n),!0).forEach((function(t){$()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classNames:function(){return[{"-loading":this.loading,"-nsfw-placeholder":this.hidden,"-editable":void 0!==this.edit},"-type-"+this.type,this.size&&"-size-"+this.size,"-".concat(this.useContainFit?"contain":"cover","-fit")]},usePlaceholder:function(){return"hide"===this.size},useContainFit:function(){return this.$store.getters.mergedConfig.useContainFit},placeholderName:function(){return""!==this.attachment.description&&this.attachment.description?this.attachment.description:this.type.toUpperCase()},placeholderIconClass:function(){return"image"===this.type?"image":"video"===this.type?"video":"audio"===this.type?"music":"file"},referrerpolicy:function(){return this.$store.state.instance.mediaProxyAvailable?"":"no-referrer"},type:function(){return L.a.fileType(this.attachment.mimetype)},hidden:function(){return this.nsfw&&this.hideNsfwLocal&&!this.showHidden},isEmpty:function(){return"html"===this.type&&!this.attachment.oembed},useModal:function(){var e=[];switch(this.size){case"hide":case"small":e=["image","video","audio","flash"];break;default:e=this.mergedConfig.playVideosInModal?["image","video","flash"]:["image"]}return e.includes(this.type)},videoTag:function(){return this.useModal?"button":"span"}},Object(R.c)(["mergedConfig"])),watch:{localDescription:function(e){this.onEdit(e)}},methods:{linkClicked:function(e){var t=e.target;"A"===t.tagName&&window.open(t.href,"_blank")},openModal:function(e){this.useModal?(this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)):"unknown"===this.type&&window.open(this.attachment.url)},openModalForce:function(e){this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)},onEdit:function(e){this.edit&&this.edit(this.attachment,e)},onRemove:function(){this.remove&&this.remove(this.attachment)},onShiftUp:function(){this.shiftUp&&this.shiftUp(this.attachment)},onShiftDn:function(){this.shiftDn&&this.shiftDn(this.attachment)},stopFlash:function(){this.$refs.flash.closePlayer()},setFlashLoaded:function(e){this.flashLoaded=e},toggleDescription:function(){this.showDescription=!this.showDescription},toggleHidden:function(e){var t=this;!this.mergedConfig.useOneClickNsfw||this.showHidden||"video"===this.type&&!this.mergedConfig.playVideosInModal?this.img&&!this.preloadImage?this.img.onload?this.img.onload():(this.loading=!0,this.img.src=this.attachment.url,this.img.onload=function(){t.loading=!1,t.showHidden=!t.showHidden}):this.showHidden=!this.showHidden:this.openModal(e)},onImageLoad:function(e){var t=e.naturalWidth,n=e.naturalHeight;this.$emit("naturalSizeLoad",{id:this.attachment.id,width:t,height:n})}}},H=(n(509),n(4));const q=n.n(H)()(V,[["render",function(e,t,n,I,$,z){const M=Object(r.J)("FAIcon"),U=Object(r.J)("StillImage"),F=Object(r.J)("VideoAttachment"),E=Object(r.J)("Flash");return e.usePlaceholder?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["Attachment -placeholder button-unstyled",e.classNames]),onClick:t[4]||(t[4]=(...t)=>e.openModal&&e.openModal(...t))},["html"!==e.type?(Object(r.D)(),Object(r.j)("a",{key:0,class:"placeholder",target:"_blank",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[0]||(t[0]=Object(r.Y)(()=>{},["prevent"]))},[Object(r.m)(M,{icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("b",null,Object(r.O)(e.nsfw?"NSFW / ":""),1),Object(r.l)(Object(r.O)(e.edit?"":e.placeholderName),1)],8,i)):Object(r.i)("",!0),e.edit||e.remove?(Object(r.D)(),Object(r.j)("div",o,[e.remove?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",onClick:t[1]||(t[1]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})])):Object(r.i)("",!0)])):Object(r.i)("",!0),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription||e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:2,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[2]||(t[2]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[3]||(t[3]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,s)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",a,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2)):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Attachment",e.classNames])},[Object(r.W)(Object(r.k)("div",c,[e.hidden?(Object(r.D)(),Object(r.j)("a",{key:0,class:"image-container",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[5]||(t[5]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[(Object(r.D)(),Object(r.j)("img",{key:e.nsfwImage,class:"nsfw",src:e.nsfwImage},null,8,u)),"video"===e.type?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)],8,l)):Object(r.i)("",!0),e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",d,["flash"===e.type&&e.flashLoaded?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled attachment-button",title:e.$t("status.attachment_stop_flash"),onClick:t[6]||(t[6]=Object(r.Y)((...t)=>e.stopFlash&&e.stopFlash(...t),["prevent"]))},[Object(r.m)(M,{icon:"stop"})],8,p)):Object(r.i)("",!0),e.attachment.description&&"small"!==e.size&&!e.edit&&"unknown"!==e.type?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_description"),onClick:t[7]||(t[7]=Object(r.Y)((...t)=>e.toggleDescription&&e.toggleDescription(...t),["prevent"]))},[Object(r.m)(M,{icon:"align-right"})],8,h)):Object(r.i)("",!0),e.useModal||"unknown"===e.type?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_in_modal"),onClick:t[8]||(t[8]=Object(r.Y)((...t)=>e.openModalForce&&e.openModalForce(...t),["prevent"]))},[Object(r.m)(M,{icon:"search-plus"})],8,b)),e.nsfw&&e.hideNsfwLocal?(Object(r.D)(),Object(r.j)("button",{key:3,class:"button-unstyled attachment-button",title:e.$t("status.hide_attachment"),onClick:t[9]||(t[9]=Object(r.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent"]))},[Object(r.m)(M,{icon:"times"})],8,m)):Object(r.i)("",!0),e.shiftUp?(Object(r.D)(),Object(r.j)("button",{key:4,class:"button-unstyled attachment-button",title:e.$t("status.move_up"),onClick:t[10]||(t[10]=Object(r.Y)((...t)=>e.onShiftUp&&e.onShiftUp(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-left"})],8,f)):Object(r.i)("",!0),e.shiftDn?(Object(r.D)(),Object(r.j)("button",{key:5,class:"button-unstyled attachment-button",title:e.$t("status.move_down"),onClick:t[11]||(t[11]=Object(r.Y)((...t)=>e.onShiftDn&&e.onShiftDn(...t),["prevent"]))},[Object(r.m)(M,{icon:"chevron-right"})],8,O)):Object(r.i)("",!0),e.remove?(Object(r.D)(),Object(r.j)("button",{key:6,class:"button-unstyled attachment-button",title:e.$t("status.remove_attachment"),onClick:t[12]||(t[12]=Object(r.Y)((...t)=>e.onRemove&&e.onRemove(...t),["prevent"]))},[Object(r.m)(M,{icon:"trash-alt"})],8,j)):Object(r.i)("",!0)])),"image"!==e.type||e.hidden&&!e.preloadImage?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:2,class:Object(r.w)(["image-container",{"-hidden":e.hidden&&e.preloadImage}]),href:e.attachment.url,target:"_blank",onClick:t[13]||(t[13]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(U,{class:"image",referrerpolicy:e.referrerpolicy,mimetype:e.attachment.mimetype,src:e.attachment.large_thumb_url||e.attachment.url,"image-load-handler":e.onImageLoad,alt:e.attachment.description},null,8,["referrerpolicy","mimetype","src","image-load-handler","alt"])],10,g)),"unknown"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:3,class:"placeholder-container",href:e.attachment.url,target:"_blank"},[Object(r.m)(M,{size:"5x",icon:e.placeholderIconClass},null,8,["icon"]),Object(r.k)("p",null,Object(r.O)(e.localDescription),1)],8,v)),"video"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.h)(Object(r.L)(e.videoTag),{key:4,class:Object(r.w)(["video-container",{"button-unstyled":"isModal"}]),href:e.attachment.url,onClick:Object(r.Y)(e.openModal,["stop","prevent"])},{default:Object(r.V)(()=>[Object(r.m)(F,{class:"video",attachment:e.attachment,controls:!e.useModal,onPlay:t[14]||(t[14]=t=>e.$emit("play")),onPause:t[15]||(t[15]=t=>e.$emit("pause"))},null,8,["attachment","controls"]),e.useModal?(Object(r.D)(),Object(r.h)(M,{key:0,class:"play-icon",icon:"play-circle"})):Object(r.i)("",!0)]),_:1},8,["href","onClick"])),"audio"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:5,class:"audio-container",href:e.attachment.url,onClick:t[18]||(t[18]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},["audio"===e.type?(Object(r.D)(),Object(r.j)("audio",{key:0,src:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,controls:"",onPlay:t[16]||(t[16]=t=>e.$emit("play")),onPause:t[17]||(t[17]=t=>e.$emit("pause"))},null,40,w)):Object(r.i)("",!0)],8,y)),"html"===e.type&&e.attachment.oembed?(Object(r.D)(),Object(r.j)("div",{key:6,class:"oembed-container",onClick:t[19]||(t[19]=Object(r.Y)((...t)=>e.linkClicked&&e.linkClicked(...t),["prevent"]))},[e.attachment.thumb_url?(Object(r.D)(),Object(r.j)("div",k,[Object(r.k)("img",{src:e.attachment.thumb_url},null,8,_)])):Object(r.i)("",!0),Object(r.k)("div",S,[Object(r.k)("h1",null,[Object(r.k)("a",{href:e.attachment.url},Object(r.O)(e.attachment.oembed.title),9,C)]),Object(r.k)("div",{innerHTML:e.attachment.oembed.oembedHTML},null,8,P)])])):Object(r.i)("",!0),"flash"!==e.type||e.hidden?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",{key:7,class:"flash-container",href:e.attachment.url,onClick:t[22]||(t[22]=Object(r.Y)((...t)=>e.openModal&&e.openModal(...t),["stop","prevent"]))},[Object(r.m)(E,{ref:"flash",class:"flash",src:e.attachment.large_thumb_url||e.attachment.url,onPlayerOpened:t[20]||(t[20]=t=>e.setFlashLoaded(!0)),onPlayerClosed:t[21]||(t[21]=t=>e.setFlashLoaded(!1))},null,8,["src"])],8,x))],512),[[r.T,!e.isEmpty]]),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription&&e.showDescription)?(Object(r.D)(),Object(r.j)("div",{key:0,class:Object(r.w)(["description-container",{"-static":!e.edit}])},[e.edit?Object(r.W)((Object(r.D)(),Object(r.j)("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=t=>e.localDescription=t),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[24]||(t[24]=Object(r.X)(Object(r.Y)(()=>{},["prevent"]),["enter"]))},null,40,D)),[[r.S,e.localDescription]]):(Object(r.D)(),Object(r.j)("p",T,Object(r.O)(e.localDescription),1))],2)):Object(r.i)("",!0)],2))}]]);t.a=q},function(e,t,n){"use strict";var r=n(0);const i=["datetime","title"];var o=n(47),s=n(38),a={name:"Timeago",props:["time","autoUpdate","longFormat","nowThreshold"],data:function(){return{relativeTime:{key:"time.now",num:0},interval:null}},computed:{localeDateString:function(){var e=s.a.internalToBrowserLocale(this.$i18n.locale);return"string"==typeof this.time?new Date(Date.parse(this.time)).toLocaleString(e):this.time.toLocaleString(e)}},created:function(){this.refreshRelativeTimeObject()},unmounted:function(){clearTimeout(this.interval)},methods:{refreshRelativeTimeObject:function(){var e="number"==typeof this.nowThreshold?this.nowThreshold:1;this.relativeTime=this.longFormat?o.d(this.time,e):o.e(this.time,e),this.autoUpdate&&(this.interval=setTimeout(this.refreshRelativeTimeObject,1e3*this.autoUpdate))}}},c=n(4);const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("time",{datetime:n.time,title:a.localeDateString},Object(r.O)(e.$t(s.relativeTime.key,[s.relativeTime.num])),9,i)}]]);t.a=l},,,,,,,,,,function(e,t,n){"use strict";var r=n(0);const i={class:"list"},o={key:0,class:"list-empty-content faint"};var s={props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}}},a=(n(562),n(4));const c=n.n(a)()(s,[["render",function(e,t,n,s,a,c){return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(n.items,t=>(Object(r.D)(),Object(r.j)("div",{key:n.getKey(t),class:"list-item"},[Object(r.I)(e.$slots,"item",{item:t})]))),128)),0===n.items.length&&e.$slots.empty?(Object(r.D)(),Object(r.j)("div",o,[Object(r.I)(e.$slots,"empty")])):Object(r.i)("",!0)])}]]);t.a=c},function(e,t,n){"use strict";var r,i=n(13),o=n.n(i),s=n(12),a=n.n(s),c=n(10),l=n.n(c),u={ar:function(){return n.e(5).then(n.bind(null,595))},ca:function(){return n.e(6).then(n.bind(null,596))},cs:function(){return n.e(7).then(n.bind(null,597))},de:function(){return n.e(8).then(n.bind(null,598))},eo:function(){return n.e(9).then(n.bind(null,599))},es:function(){return n.e(10).then(n.bind(null,600))},et:function(){return n.e(11).then(n.bind(null,601))},eu:function(){return n.e(12).then(n.bind(null,602))},fi:function(){return n.e(13).then(n.bind(null,603))},fr:function(){return n.e(14).then(n.bind(null,604))},ga:function(){return n.e(15).then(n.bind(null,605))},he:function(){return n.e(16).then(n.bind(null,606))},hu:function(){return n.e(17).then(n.bind(null,607))},it:function(){return n.e(18).then(n.bind(null,608))},ja:function(){return n.e(20).then(n.bind(null,609))},ja_easy:function(){return n.e(19).then(n.bind(null,610))},ko:function(){return n.e(21).then(n.bind(null,611))},nb:function(){return n.e(22).then(n.bind(null,612))},nl:function(){return n.e(23).then(n.bind(null,613))},oc:function(){return n.e(24).then(n.bind(null,614))},pl:function(){return n.e(25).then(n.bind(null,615))},pt:function(){return n.e(26).then(n.bind(null,616))},ro:function(){return n.e(27).then(n.bind(null,617))},ru:function(){return n.e(28).then(n.bind(null,618))},te:function(){return n.e(29).then(n.bind(null,619))},uk:function(){return n.e(30).then(n.bind(null,620))},zh:function(){return n.e(31).then(n.bind(null,621))},zh_Hant:function(){return n.e(32).then(n.bind(null,622))}},d={languages:["en"].concat(a()(Object.keys(u))),default:{en:n(442).default},setLanguage:(r=o()(l.a.mark((function e(t,n){var r;return l.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u[n]){e.next=5;break}return e.next=3,u[n]();case 3:r=e.sent,t.setLocaleMessage(n,r.default);case 5:t.locale=n;case 6:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)})};t.a=d},function(e,t,n){"use strict";var r=n(5),i=n.n(r),o=n(0),s=n(8),a=n(68);n(574);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var l=function(e){return e.findIndex((function(e){return e.props}))};t.a={name:"TabSwitcher",props:{renderOnlyFocused:{required:!1,type:Boolean,default:!1},onSwitch:{required:!1,type:Function,default:void 0},activeTab:{required:!1,type:String,default:void 0},scrollableTabs:{required:!1,type:Boolean,default:!1},sideTabBar:{required:!1,type:Boolean,default:!1},bodyScrollLock:{required:!1,type:Boolean,default:!1}},data:function(){return{active:l(this.slots())}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({activeIndex:function(){var e=this;return this.activeTab?this.slots().findIndex((function(t){return t&&t.props&&e.activeTab===t.props.key})):this.active},isActive:function(){var e=this;return function(t){return e.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}))===e.activeIndex}},settingsModalVisible:function(){return"visible"===this.settingsModalState}},Object(s.e)({settingsModalState:function(e){return e.interface.settingsModalState}})),beforeUpdate:function(){this.slots()[this.active].props||(this.active=l(this.slots()))},methods:{clickTab:function(e){var t=this;return function(n){n.preventDefault(),t.setTab(e)}},slots:function(){return this.$slots.default()[0].type===o.a?this.$slots.default()[0].children:this.$slots.default()},setTab:function(e){"function"==typeof this.onSwitch&&this.onSwitch.call(null,this.slots()[e].key),this.active=e,this.scrollableTabs&&(this.$refs.contents.scrollTop=0)}},render:function(){var e=this,t=this.slots().map((function(t,n){var r=t.props;if(r){var i=["tab","button-default"],s=["tab-wrapper"];return e.activeIndex===n&&(i.push("active"),s.push("active")),r.image?Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[Object(o.m)("img",{src:r.image,title:r["image-tooltip"]},null),r.label?"":r.label])]):Object(o.m)("div",{class:s.join(" ")},[Object(o.m)("button",{disabled:r.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[r.icon?Object(o.m)(a.a,{class:"tab-icon",size:"2x","fixed-width":!0,icon:r.icon},null):"",Object(o.m)("span",{class:"text"},[r.label])])])}})),n=this.slots().map((function(t,n){var r=t.props;if(r){var i=e.activeIndex===n,s=[i?"active":"hidden"];r.fullHeight&&s.push("full-height");var a=!e.renderOnlyFocused||i?t:"";return Object(o.m)("div",{class:s},[e.sideTabBar?Object(o.m)("h1",{class:"mobile-label"},[r.label]):"",a])}}));return Object(o.m)("div",{class:"tab-switcher "+(this.sideTabBar?"side-tabs":"top-tabs")},[Object(o.m)("div",{class:"tabs"},[t]),Object(o.W)(Object(o.m)("div",{ref:"contents",class:"contents"+(this.scrollableTabs?" scrollable-tabs":"")},[n]),[[Object(o.K)("body-scroll-lock"),this.bodyScrollLock]])])}}},,,,,function(e,t,n){"use strict";var r=n(21),i=n.n(r),o=n(15),s={postStatus:function(e){var t=e.store,n=e.status,r=e.spoilerText,s=e.visibility,a=e.sensitive,c=e.poll,l=e.media,u=void 0===l?[]:l,d=e.inReplyToStatusId,p=void 0===d?void 0:d,h=e.contentType,b=void 0===h?"text/plain":h,m=e.preview,f=void 0!==m&&m,O=e.idempotencyKey,j=void 0===O?"":O,g=i()(u,"id");return o.c.postStatus({credentials:t.state.users.currentUser.credentials,status:n,spoilerText:r,visibility:s,sensitive:a,mediaIds:g,inReplyToStatusId:p,contentType:b,poll:c,preview:f,idempotencyKey:j}).then((function(e){return e.error||f||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return{error:e.message}}))},uploadMedia:function(e){var t=e.store,n=e.formData,r=t.state.users.currentUser.credentials;return o.c.uploadMedia({credentials:r,formData:n})},setMediaDescription:function(e){var t=e.store,n=e.id,r=e.description,i=t.state.users.currentUser.credentials;return o.c.setMediaDescription({credentials:i,id:n,description:r})}};t.a=s},function(e,t,n){"use strict";n.r(t);var r=n(0);const i={key:0,class:"notifications-heading panel-heading -sticky"},o={class:"title"},s={key:0,class:"badge badge-notification unseen-count"},a={class:"panel-body"},c=Object(r.k)("div",{class:"notification-overlay"},null,-1),l={class:"panel-footer"},u={key:0,class:"new-status-notification text-center faint"},d={class:"new-status-notification text-center"},p={key:2,class:"new-status-notification text-center"};var h=n(5),b=n.n(h),m=n(8);const f={key:1},O={key:0,class:"Notification container -muted"},j=["href"],g={class:"notification-right"},v={class:"notification-details"},y={class:"name-and-action"},w={key:0},k=["title"],_=Object(r.l)(" "+Object(r.O)(" ")+" "),S={key:2},C=Object(r.l)(" "+Object(r.O)(" ")+" "),P={key:3},x=Object(r.l)(" "+Object(r.O)(" ")+" "),D={key:4},T=Object(r.l)(" "+Object(r.O)(" ")+" "),I={key:5},$=Object(r.l)(" "+Object(r.O)(" ")+" "),z={key:6},M=Object(r.l)(" "+Object(r.O)(" ")+" "),U={key:7},F=["src","name"],E={key:1,class:"emoji-reaction-emoji"},L={key:8},R=Object(r.l)(" "+Object(r.O)(" ")+" "),A={key:0,class:"timeago"},N={key:1,class:"timeago"},B={class:"faint"},V={key:1,class:"follow-text"},H={key:0,style:{"white-space":"nowrap"}},q=["title"],J=["title"],W={key:2,class:"move-text"};var Y=n(45),G=n(34),K=n(22),X=n(35),Z=n(59),Q=n(25),ee=n(26),te=n(31),ne=n(23),re=n(6),ie=n(3);function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.m,ie.rb,ie.jb,ie.Z,ie.vb,ie.ub,ie.C,ie.nb);var se={data:function(){return{userExpanded:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,unmuted:!1}},props:["notification"],components:{StatusContent:Y.a,UserAvatar:K.default,UserCard:X.a,Timeago:Z.a,Status:G.default,RichContent:Q.a},methods:{toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e){return Object(ne.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},getUser:function(e){return this.$store.state.users.usersObject[e.from_profile.id]},toggleMute:function(){this.unmuted=!this.unmuted},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user),this.$store.dispatch("markSingleNotificationAsSeen",{id:this.notification.id}),this.$store.dispatch("updateNotification",{id:this.notification.id,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this;this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:e.notification.id}),e.$store.dispatch("removeFollowRequest",e.user)}))}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?oe(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({userClass:function(){return Object(te.a)(this.notification.from_profile)},userStyle:function(){var e=this.$store.getters.mergedConfig.highlight,t=this.notification.from_profile;return Object(te.b)(e[t.screen_name])},user:function(){return this.$store.getters.findUser(this.notification.from_profile.id)},userProfileLink:function(){return this.generateUserProfileLink(this.user)},targetUser:function(){return this.$store.getters.findUser(this.notification.target.id)},targetUserProfileLink:function(){return this.generateUserProfileLink(this.targetUser)},needMute:function(){return this.$store.getters.relationship(this.user.id).muting},isStatusNotification:function(){return Object(ee.b)(this.notification.type)}},Object(m.e)({currentUser:function(e){return e.users.currentUser}}))},ae=(n(556),n(4)),ce=n.n(ae);var le=ce()(se,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("Status"),c=Object(r.J)("router-link"),l=Object(r.J)("FAIcon"),u=Object(r.J)("UserAvatar"),d=Object(r.J)("UserCard"),p=Object(r.J)("RichContent"),h=Object(r.J)("i18n-t"),b=Object(r.J)("Timeago"),m=Object(r.J)("StatusContent");return"mention"===e.notification.type?(Object(r.D)(),Object(r.h)(a,{key:0,class:"Notification",compact:!0,statusoid:e.notification.status},null,8,["statusoid"])):(Object(r.D)(),Object(r.j)("div",f,[e.needMute&&!e.unmuted?(Object(r.D)(),Object(r.j)("div",O,[Object(r.k)("small",null,[Object(r.m)(c,{to:e.userProfileLink},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"])]),Object(r.k)("button",{class:"button-unstyled unmute",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])])):(Object(r.D)(),Object(r.j)("div",{key:1,class:Object(r.w)(["Notification non-mention",[e.userClass,{highlighted:e.userStyle},"-type--"+e.notification.type]]),style:Object(r.x)([e.userStyle])},[Object(r.k)("a",{class:"avatar-container",href:e.$router.resolve(e.userProfileLink).href,onClickCapture:t[1]||(t[1]=Object(r.Y)((...t)=>e.toggleUserExpanded&&e.toggleUserExpanded(...t),["stop","prevent"]))},[Object(r.m)(u,{compact:!0,"better-shadow":e.betterShadow,user:e.notification.from_profile},null,8,["better-shadow","user"])],40,j),Object(r.k)("div",g,[e.userExpanded?(Object(r.D)(),Object(r.h)(d,{key:0,"user-id":e.getUser(e.notification).id,rounded:!0,bordered:!0},null,8,["user-id"])):Object(r.i)("",!0),Object(r.k)("span",v,[Object(r.k)("div",y,[e.notification.from_profile.name_html?(Object(r.D)(),Object(r.j)("bdi",w,[Object(r.m)(p,{class:"username",title:"@"+e.notification.from_profile.screen_name_ui,html:e.notification.from_profile.name_html,emoji:e.notification.from_profile.emoji},null,8,["title","html","emoji"])])):(Object(r.D)(),Object(r.j)("span",{key:1,class:"username",title:"@"+e.notification.from_profile.screen_name_ui},Object(r.O)(e.notification.from_profile.name),9,k)),_,"like"===e.notification.type?(Object(r.D)(),Object(r.j)("span",S,[Object(r.m)(l,{class:"type-icon",icon:"star"}),C,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.favorited_you")),1)])):Object(r.i)("",!0),"repeat"===e.notification.type?(Object(r.D)(),Object(r.j)("span",P,[Object(r.m)(l,{class:"type-icon",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"]),x,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.repeated_you")),1)])):Object(r.i)("",!0),"follow"===e.notification.type?(Object(r.D)(),Object(r.j)("span",D,[Object(r.m)(l,{class:"type-icon",icon:"user-plus"}),T,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.followed_you")),1)])):Object(r.i)("",!0),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("span",I,[Object(r.m)(l,{class:"type-icon",icon:"user"}),$,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.follow_request")),1)])):Object(r.i)("",!0),"move"===e.notification.type?(Object(r.D)(),Object(r.j)("span",z,[Object(r.m)(l,{class:"type-icon",icon:"suitcase-rolling"}),M,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.migrated_to")),1)])):Object(r.i)("",!0),"pleroma:emoji_reaction"===e.notification.type?(Object(r.D)(),Object(r.j)("span",U,[Object(r.k)("small",null,[Object(r.m)(h,{scope:"global",keypath:"notifications.reacted_with"},{default:Object(r.V)(()=>[null!==e.notification.emoji_url?(Object(r.D)(),Object(r.j)("img",{key:0,class:"notification-reaction-emoji",src:e.notification.emoji_url,name:e.notification.emoji},null,8,F)):(Object(r.D)(),Object(r.j)("span",E,Object(r.O)(e.notification.emoji),1))]),_:1})])])):Object(r.i)("",!0),"poll"===e.notification.type?(Object(r.D)(),Object(r.j)("span",L,[Object(r.m)(l,{class:"type-icon",icon:"poll-h"}),R,Object(r.k)("small",null,Object(r.O)(e.$t("notifications.poll_ended")),1)])):Object(r.i)("",!0)]),e.isStatusNotification?(Object(r.D)(),Object(r.j)("div",A,[e.notification.status?(Object(r.D)(),Object(r.h)(c,{key:0,to:{name:"conversation",params:{id:e.notification.status.id}},class:"faint-link"},{default:Object(r.V)(()=>[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])]),_:1},8,["to"])):Object(r.i)("",!0)])):(Object(r.D)(),Object(r.j)("div",N,[Object(r.k)("span",B,[Object(r.m)(b,{time:e.notification.created_at,"auto-update":240},null,8,["time"])])])),e.needMute?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled",onClick:t[2]||(t[2]=Object(r.Y)((...t)=>e.toggleMute&&e.toggleMute(...t),["prevent"]))},[Object(r.m)(l,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])):Object(r.i)("",!0)]),"follow"===e.notification.type||"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",V,[Object(r.m)(c,{to:e.userProfileLink,class:"follow-name"},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.from_profile.screen_name_ui),1)]),_:1},8,["to"]),"follow_request"===e.notification.type?(Object(r.D)(),Object(r.j)("div",H,[Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.accept_follow_request"),onClick:t[3]||(t[3]=t=>e.approveUser())},[Object(r.m)(l,{icon:"check",class:"fa-scale-110 fa-old-padding follow-request-accept"})],8,q),Object(r.k)("button",{class:"button-unstyled",title:e.$t("tool_tip.reject_follow_request"),onClick:t[4]||(t[4]=t=>e.denyUser())},[Object(r.m)(l,{icon:"times",class:"fa-scale-110 fa-old-padding follow-request-reject"})],8,J)])):Object(r.i)("",!0)])):"move"===e.notification.type?(Object(r.D)(),Object(r.j)("div",W,[Object(r.m)(c,{to:e.targetUserProfileLink},{default:Object(r.V)(()=>[Object(r.l)(" @"+Object(r.O)(e.notification.target.screen_name_ui),1)]),_:1},8,["to"])])):(Object(r.D)(),Object(r.h)(m,{key:3,class:"faint",compact:!0,status:e.notification.action},null,8,["status"]))])],6))]))}]]);const ue={class:"dropdown-menu"},de={class:"filter-trigger-button button-unstyled"};var pe=n(24);function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function be(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}re.c.add(ie.G);var me={components:{Popover:pe.default},computed:{filters:function(){return this.$store.getters.mergedConfig.notificationVisibility}},methods:{toggleNotificationFilter:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:be(be({},this.filters),{},b()({},e,!this.filters[e]))})}}};n(557);var fe=ce()(me,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Popover");return Object(r.D)(),Object(r.h)(c,{trigger:"click",class:"NotificationFilters",placement:"bottom","bound-to":{x:"container"}},{content:Object(r.V)(()=>[Object(r.k)("div",ue,[Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=e=>s.toggleNotificationFilter("likes"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.likes}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_likes")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=e=>s.toggleNotificationFilter("repeats"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.repeats}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_repeats")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=e=>s.toggleNotificationFilter("follows"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.follows}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_follows")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=e=>s.toggleNotificationFilter("mentions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.mentions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_mentions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=e=>s.toggleNotificationFilter("emojiReactions"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.emojiReactions}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=e=>s.toggleNotificationFilter("moves"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.moves}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_moves")),1)]),Object(r.k)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=e=>s.toggleNotificationFilter("polls"))},[Object(r.k)("span",{class:Object(r.w)(["menu-checkbox",{"menu-checkbox-checked":s.filters.polls}])},null,2),Object(r.l)(Object(r.O)(e.$t("settings.notification_visibility_polls")),1)])])]),trigger:Object(r.V)(()=>[Object(r.k)("button",de,[Object(r.m)(a,{icon:"filter"})])]),_:1})}]]),Oe=n(99),je=n(101);function ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}re.c.add(ie.r);var ve={components:{Notification:le,NotificationFilters:fe},props:{minimalMode:Boolean,filterMode:Array,disableTeleport:Boolean},data:function(){return{bottomedOut:!1,seenToDisplayCount:30}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ge(Object(n),!0).forEach((function(t){b()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mainClass:function(){return this.minimalMode?"":"panel panel-default"},notifications:function(){return Object(ee.e)(this.$store)},error:function(){return this.$store.state.statuses.notifications.error},unseenNotifications:function(){return Object(ee.f)(this.$store)},filteredNotifications:function(){return Object(ee.a)(this.$store,this.filterMode)},unseenCount:function(){return this.unseenNotifications.length},unseenCountTitle:function(){return this.unseenCount+this.unreadChatCount},loading:function(){return this.$store.state.statuses.notifications.loading},noHeading:function(){var e=this.$store.state.interface.layoutType;return this.minimalMode||"mobile"===e},teleportTarget:function(){return{wide:"#notifs-column",mobile:"#mobile-notifications"}[this.$store.state.interface.layoutType]||"#notifs-sidebar"},notificationsToDisplay:function(){return this.filteredNotifications.slice(0,this.unseenCount+this.seenToDisplayCount)}},Object(m.c)(["unreadChatCount"])),watch:{unseenCountTitle:function(e){e>0?(je.a.drawFaviconBadge(),this.$store.dispatch("setPageTitle","(".concat(e,")"))):(je.a.clearFaviconBadge(),this.$store.dispatch("setPageTitle",""))}},methods:{markAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen"),this.seenToDisplayCount=30},fetchOlderNotifications:function(){var e=this;if(!this.loading){var t=this.filteredNotifications.length-this.unseenCount;if(this.seenToDisplayCount<t)this.seenToDisplayCount=Math.min(this.seenToDisplayCount+20,t);else{this.seenToDisplayCount>t&&(this.seenToDisplayCount=t);var n=this.$store,r=n.state.users.currentUser.credentials;n.commit("setNotificationsLoading",{value:!0}),Oe.a.fetchAndUpdate({store:n,credentials:r,older:!0}).then((function(t){n.commit("setNotificationsLoading",{value:!1}),0===t.length&&(e.bottomedOut=!0),e.seenToDisplayCount+=t.length}))}}}}};n(558);const ye=ce()(ve,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("NotificationFilters"),O=Object(r.J)("notification"),j=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.h)(r.c,{disabled:e.minimalMode||e.disableTeleport,to:e.teleportTarget},[Object(r.k)("div",{class:Object(r.w)([{minimal:e.minimalMode},"Notifications"])},[Object(r.k)("div",{class:Object(r.w)(e.mainClass)},[e.noHeading?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("div",o,[Object(r.l)(Object(r.O)(e.$t("notifications.notifications"))+" ",1),e.unseenCount?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.unseenCount),1)):Object(r.i)("",!0)]),e.unseenCount?(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-default read-button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.markAsSeen&&e.markAsSeen(...t),["prevent"]))},Object(r.O)(e.$t("notifications.read")),1)):Object(r.i)("",!0),Object(r.m)(f)])),Object(r.k)("div",a,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.notificationsToDisplay,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:Object(r.w)(["notification",{unseen:!e.minimalMode&&!t.seen}])},[c,Object(r.m)(O,{notification:t},null,8,["notification"])],2))),128))]),Object(r.k)("div",l,[e.bottomedOut?(Object(r.D)(),Object(r.j)("div",u,Object(r.O)(e.$t("notifications.no_more_notifications")),1)):e.loading?(Object(r.D)(),Object(r.j)("div",p,[Object(r.m)(j,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled -link -fullwidth",onClick:t[1]||(t[1]=Object(r.Y)(t=>e.fetchOlderNotifications(),["prevent"]))},[Object(r.k)("div",d,Object(r.O)(e.minimalMode?e.$t("interactions.load_older"):e.$t("notifications.load_older")),1)]))])],2)],2)],8,["disabled","to"])}]]);t.default=ye},function(e,t,n){"use strict";var r=n(0);const i={class:"gallery-rows"},o={key:0,class:"many-attachments"},s={class:"many-attachments-text"},a={class:"many-attachments-buttons"},c={key:0,class:"many-attachments-button"},l={key:1,class:"many-attachments-button"},u={key:2,class:"many-attachments-button"};var d=n(12),p=n.n(d),h=n(39),b=n.n(h),m=n(134),f=n.n(m),O={props:["attachments","limitRows","descriptions","limit","nsfw","setMedia","size","editable","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","grid"],data:function(){return{sizes:{},hidingLong:!0}},components:{Attachment:n(58).a},computed:{rows:function(){var e=this;if(!this.attachments)return[];var t=this.limit>0?this.attachments.slice(0,this.limit):this.attachments;if("hide"===this.size)return t.map((function(e){return{minimal:!0,items:[e]}}));var n=this.grid?[{grid:!0,items:t}]:t.reduce((function(t,n,r){if(n.mimetype.includes("audio"))return[].concat(p()(t),[{audio:!0,items:[n]},{items:[]}]);if(!(n.mimetype.includes("image")||n.mimetype.includes("video")||n.mimetype.includes("flash")))return[].concat(p()(t),[{minimal:!0,items:[n]},{items:[]}]);var i=e.attachments.length-r+1,o=t[t.length-1].items;return o.push(n),o.length>=3&&i>3?[].concat(p()(t),[{items:[]}]):t}),[{items:[]}]).filter((function(e){return e.items.length>0}));return n},attachmentsDimensionalScore:function(){return this.rows.reduce((function(e,t){var n=0;return t.minimal?n+=1/8:t.audio?n+=1/4:n+=1/(t.items.length+.6),e+n}),0)},tooManyAttachments:function(){return!this.editable&&"small"!==this.size&&("hide"===this.size?this.attachments.length>8:this.attachmentsDimensionalScore>1)}},methods:{onNaturalSizeLoad:function(e){var t=e.id,n=e.width,r=e.height;b()(this.sizes,t,{width:n,height:r})},rowStyle:function(e){return e.audio?{"padding-bottom":"25%"}:e.minimal||e.grid?void 0:{"padding-bottom":"".concat(100/(e.items.length+.6),"%")}},itemStyle:function(e,t){var n=this,r=f()(t,(function(e){return n.getAspectRatio(e.id)}));return{flex:"".concat(this.getAspectRatio(e)/r," 1 0%")}},getAspectRatio:function(e){var t=this.sizes[e];return t?t.width/t.height:1},toggleHidingLong:function(e){this.hidingLong=e},openGallery:function(){this.$store.dispatch("setMedia",this.attachments),this.$store.dispatch("setCurrentMedia",this.attachments[0])},onMedia:function(){this.$store.dispatch("setMedia",this.attachments)}}},j=(n(510),n(4));const g=n.n(j)()(O,[["render",function(e,t,n,d,p,h){const b=Object(r.J)("Attachment");return Object(r.D)(),Object(r.j)("div",{ref:"galleryContainer",class:Object(r.w)(["Gallery",{"-long":e.tooManyAttachments&&e.hidingLong}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.rows,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["gallery-row",{"-audio":t.audio,"-minimal":t.minimal,"-grid":e.grid}]),style:Object(r.x)(e.rowStyle(t))},[Object(r.k)("div",{class:Object(r.w)(["gallery-row-inner",{"-grid":e.grid}])},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.items,(i,o)=>(Object(r.D)(),Object(r.h)(b,{key:i.id,class:"gallery-item",nsfw:e.nsfw,attachment:i,size:e.size,editable:e.editable,remove:e.removeAttachment,"shift-up":!(0===o&&0===n)&&e.shiftUpAttachment,"shift-dn":!(o===t.items.length-1&&n===e.rows.length-1)&&e.shiftDnAttachment,edit:e.editAttachment,description:e.descriptions&&e.descriptions[i.id],"hide-description":"small"===e.size||e.tooManyAttachments&&e.hidingLong,style:Object(r.x)(e.itemStyle(i.id,t.items)),onSetMedia:e.onMedia,onNaturalSizeLoad:e.onNaturalSizeLoad},null,8,["nsfw","attachment","size","editable","remove","shift-up","shift-dn","edit","description","hide-description","style","onSetMedia","onNaturalSizeLoad"]))),128))],2)],6))),128))]),e.tooManyAttachments?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("div",s,Object(r.O)(e.$t("status.many_attachments",{number:e.attachments.length})),1),Object(r.k)("div",a,[e.hidingLong?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("span",c,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=t=>e.toggleHidingLong(!0))},Object(r.O)(e.$t("status.collapse_attachments")),1)])),e.hidingLong?(Object(r.D)(),Object(r.j)("span",l,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[1]||(t[1]=t=>e.toggleHidingLong(!1))},Object(r.O)(e.$t("status.show_all_attachments")),1)])):Object(r.i)("",!0),e.hidingLong?(Object(r.D)(),Object(r.j)("span",u,[Object(r.k)("button",{class:"button-unstyled -link",onClick:t[2]||(t[2]=(...t)=>e.openGallery&&e.openGallery(...t))},Object(r.O)(e.$t("status.open_gallery")),1)])):Object(r.i)("",!0)])])):Object(r.i)("",!0)],2)}]]);t.a=g},function(e,t,n){"use strict";var r=n(0);const i={class:"MentionLink"},o=["href","innerHTML"],s=["href"],a={class:"shortName"},c=Object(r.l)("@"),l=["innerHTML"],u=["innerHTML"],d={class:"userNameFull"},p=Object(r.l)(" @"),h=["innerHTML"],b=["innerHTML"];var m=n(40),f=n.n(m),O=n(5),j=n.n(O),g=n(23),v=n(8),y=n(31),w=n(22),k=n(6),_=n(3),S=["backgroundColor","backgroundPosition","backgroundImage"];function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C(Object(n),!0).forEach((function(t){j()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}k.c.add(_.f);var x={name:"MentionLink",components:{UserAvatar:w.default},props:{url:{required:!0,type:String},content:{required:!0,type:String},userId:{required:!1,type:String},userScreenName:{required:!1,type:String}},methods:{onClick:function(){var e=Object(g.a)(this.userId||this.user.id,this.userScreenName||this.user.screen_name);this.$router.push(e)}},computed:P(P({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return Object(y.a)(this.user)},style:function(){if(this.highlight){var e=Object(y.b)(this.highlight);e.backgroundColor,e.backgroundPosition,e.backgroundImage;return f()(e,S)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip&&"short"===this.mergedConfig.mentionLinkDisplay&&this.isRemote},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},Object(v.c)(["mergedConfig"])),Object(v.e)({currentUser:function(e){return e.users.currentUser}}))},D=(n(513),n(4));const T=n.n(D)()(x,[["render",function(e,t,n,m,f,O){return Object(r.D)(),Object(r.j)("span",i,[e.user?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("a",{key:0,href:e.url,class:"original",target:"_blank",innerHTML:e.content},null,8,o)),e.user?(Object(r.D)(),Object(r.j)("span",{key:1,class:Object(r.w)(["new",e.classnames]),style:Object(r.x)(e.style)},[Object(r.k)("a",{class:Object(r.w)(["short button-unstyled",{"-with-tooltip":e.shouldShowTooltip}]),href:e.url,onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.onClick&&e.onClick(...t),["prevent"]))},[Object(r.k)("span",a,[c,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,l),e.shouldShowFullUserName?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,u)):Object(r.i)("",!0)]),e.isYou&&e.shouldShowYous?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)({"-you":e.shouldBoldenYou})},Object(r.O)(" "+e.$t("status.you")),3)):Object(r.i)("",!0)],10,s),e.shouldShowTooltip?(Object(r.D)(),Object(r.j)("span",{key:0,class:Object(r.w)(["full popover-default",[e.highlightType]])},[Object(r.k)("span",d,[p,Object(r.k)("span",{class:"userName",innerHTML:e.userName},null,8,h),Object(r.k)("span",{class:Object(r.w)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,b)])],2)):Object(r.i)("",!0)],6)):Object(r.i)("",!0)])}]]);t.a=T},,function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var r=n(0);const i={class:"MentionsLine"},o={key:0,class:"extraMentions"},s={key:0,class:"fullExtraMentions"};var a=n(5),c=n.n(a),l=n(79),u=n(8);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=5,h={name:"MentionsLine",props:{mentions:{required:!0,type:Array}},data:function(){return{expanded:!1}},components:{MentionLink:l.a},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){c()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mentionsComputed:function(){return this.mentions.slice(0,p)},extraMentions:function(){return this.mentions.slice(p)},manyMentions:function(){return this.extraMentions.length>0}},Object(u.c)(["mergedConfig"])),methods:{toggleShowMore:function(){this.expanded=!this.expanded}}},b=(n(514),n(4));const m=n.n(b)()(h,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("MentionLink");return Object(r.D)(),Object(r.j)("span",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.mentionsComputed,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128)),e.manyMentions?(Object(r.D)(),Object(r.j)("span",o,[e.expanded?(Object(r.D)(),Object(r.j)("span",s,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.extraMentions,e=>(Object(r.D)(),Object(r.h)(u,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"]))),128))])):Object(r.i)("",!0),e.expanded?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled showMoreLess",onClick:t[0]||(t[0]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("status.plus_more",{number:e.extraMentions.length})),1)),e.expanded?(Object(r.D)(),Object(r.j)("button",{key:2,class:"button-unstyled showMoreLess",onClick:t[1]||(t[1]=(...t)=>e.toggleShowMore&&e.toggleShowMore(...t))},Object(r.O)(e.$t("general.show_less")),1)):Object(r.i)("",!0)])):Object(r.i)("",!0)])}]]);t.b=m},,,,,,,,,,,,,,,function(e,t,n){"use strict";var r={fileSizeFormat:function(e){var t,n=["B","KiB","MiB","GiB","TiB"];return e<1?e+" "+n[0]:(t=Math.min(Math.floor(Math.log(e)/Math.log(1024)),n.length-1),{num:e=1*(e/Math.pow(1024,t)).toFixed(2),unit:n[t]})}};t.a=r},,,function(e,t,n){"use strict";var r=n(12),i=n.n(r),o=n(15),s=n(44),a=function(e){var t=e.store,n=e.credentials,r=e.older,o=void 0!==r&&r,s=e.since,a={credentials:n},l=t.getters,u=(t.rootState||t.state).statuses.notifications,d=l.mergedConfig.hideMutedPosts;if(a.withMuted=!d,a.timeline="notifications",o)return u.minId!==Number.POSITIVE_INFINITY&&(a.until=u.minId),c({store:t,args:a,older:o});void 0===s&&u.maxId!==Number.POSITIVE_INFINITY?a.since=u.maxId:null!==s&&(a.since=s);var p=c({store:t,args:a,older:o}),h=u.data,b=h.filter((function(e){return e.seen})).map((function(e){return e.id}));return h.length-b.length>0&&b.length>0&&(a.since=Math.max.apply(Math,i()(b)),c({store:t,args:a,older:o})),p},c=function(e){var t=e.store,n=e.args,r=e.older;return o.c.fetchTimeline(n).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data;return function(e){var t=e.store,n=e.notifications,r=e.older;t.dispatch("addNewNotifications",{notifications:n,older:r})}({store:t,notifications:n,older:r}),n})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"notifications.error",messageArgs:[e.message],timeout:5e3})}))},l={fetchAndUpdate:a,startFetching:function(e){var t=e.credentials,n=e.store;setTimeout((function(){return n.dispatch("setNotificationsSilence",!1)}),1e4);var r=function(){return a({credentials:t,store:n})};return r(),Object(s.a)(r,2e4)}};t.a=l},,function(e,t,n){"use strict";var r,i,o,s=(r=[],i=function(e){return e.complete&&0!==e.naturalHeight},{initFaviconService:function(){document.querySelectorAll('link[rel="icon"]').forEach((function(e){if(e){var t=document.createElement("canvas");t.width=128,t.height=128;var n=new Image;n.crossOrigin="anonymous",n.src=e.href;var i=t.getContext("2d");r.push({favcanvas:t,favimg:n,favcontext:i,favicon:e})}}))},clearFaviconBadge:o=function(){0!==r.length&&r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;t&&r&&o&&(r.clearRect(0,0,128,128),i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),o.href=n.toDataURL("image/png"))}))},drawFaviconBadge:function(){0!==r.length&&(o(),r.forEach((function(e){var t=e.favimg,n=e.favcanvas,r=e.favcontext,o=e.favicon;if(t&&r&&r){var s=getComputedStyle(document.body),a="".concat(s.getPropertyValue("--badgeNotification")||"rgb(240, 100, 100)");i(t)&&r.drawImage(t,0,0,t.width,t.height,0,0,128,128),r.fillStyle=a,r.beginPath(),r.arc(96,32,32,0,2*Math.PI,!1),r.fill(),o.href=n.toDataURL("image/png")}})))}});t.a=s},,,function(e,t,n){"use strict";var r=n(0);const i=["disabled"];var o={props:{disabled:{type:Boolean},click:{type:Function,default:function(){return Promise.resolve()}}},data:function(){return{progress:!1}},methods:{onClick:function(){var e=this;this.progress=!0,this.click().then((function(){e.progress=!1}))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{disabled:s.progress||n.disabled,onClick:t[0]||(t[0]=(...e)=>a.onClick&&a.onClick(...e))},[s.progress&&e.$slots.progress?Object(r.I)(e.$slots,"progress",{key:0}):Object(r.I)(e.$slots,"default",{key:1})],8,i)}]]);t.a=a},,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return O}));var r=n(5),i=n.n(r),o=n(11),s=n.n(o),a=n(317),c=n.n(a),l=n(43),u=n(70),d=n(38);function p(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){i()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var f={expertLevel:0,colors:{},theme:void 0,customTheme:void 0,customThemeSource:void 0,hideISP:!1,hideInstanceWallpaper:!1,hideShoutbox:!1,hideMutedPosts:void 0,hideMutedThreads:void 0,hideWordFilteredPosts:void 0,muteBotStatuses:void 0,collapseMessageWithSubject:void 0,padEmoji:!0,hideAttachments:!1,hideAttachmentsInConv:!1,maxThumbnails:16,hideNsfw:!0,preloadImage:!0,loopVideo:!0,loopVideoSilentOnly:!0,streaming:!1,emojiReactionsOnTimeline:!0,alwaysShowNewPostButton:!1,autohideFloatingPostButton:!1,pauseOnUnfocused:!0,stopGifs:!0,replyVisibility:"all",thirdColumnMode:"notifications",notificationVisibility:{follows:!0,mentions:!0,likes:!0,repeats:!0,moves:!0,emojiReactions:!0,followRequest:!0,chatMention:!0,polls:!0},webPushNotifications:!1,muteWords:[],highlight:{},interfaceLanguage:(window.navigator.language||"en").split("-")[0],hideScopeNotice:!1,useStreamingApi:!0,sidebarRight:void 0,scopeCopy:void 0,subjectLineBehavior:void 0,alwaysShowSubjectInput:void 0,postContentType:void 0,minimalScopesMode:void 0,hideFilteredStatuses:void 0,playVideosInModal:!1,useOneClickNsfw:!1,useContainFit:!0,disableStickyHeaders:!1,showScrollbars:!1,greentext:void 0,useAtIcon:void 0,mentionLinkDisplay:void 0,mentionLinkShowTooltip:void 0,mentionLinkShowAvatar:void 0,mentionLinkFadeDomain:void 0,mentionLinkShowYous:void 0,mentionLinkBoldenYou:void 0,hidePostStats:void 0,hideBotIndication:void 0,hideUserStats:void 0,virtualScrolling:void 0,sensitiveByDefault:void 0,sensitiveIfSubject:void 0,renderMisskeyMarkdown:void 0,conversationDisplay:void 0,conversationTreeAdvanced:void 0,conversationOtherRepliesButton:void 0,conversationTreeFadeAncestors:void 0,maxDepthInThread:void 0},O=Object.entries(f).filter((function(e){var t=s()(e,2);t[0];return void 0===t[1]})).map((function(e){var t=s()(e,2),n=t[0];t[1];return n})),j={state:m({},f),getters:{defaultConfig:function(e,t,n,r){var i=n.instance;return m(m({},f),Object.fromEntries(O.map((function(e){return[e,i[e]]}))))},mergedConfig:function(e,t,n,r){return m(m({},r.defaultConfig),Object.fromEntries(Object.entries(e).filter((function(e){var t=s()(e,2);t[0];return void 0!==t[1]}))))}},mutations:{setOption:function(e,t){var n=t.name,r=t.value;e[n]=r},setHighlight:function(e,t){var n=t.user,r=t.color,i=t.type,o=this.state.config.highlight[n];r||i?e.highlight[n]={color:r||o.color,type:i||o.type}:delete e.highlight[n]}},actions:{loadSettings:function(e,t){var n,r=e.dispatch,i=new Set(Object.keys(f)),o=new Set(Object.keys(t)),s=new Set,a=p(o);try{for(a.s();!(n=a.n()).done;){var c=n.value;i.has(c)&&s.add(c)}}catch(e){a.e(e)}finally{a.f()}s.forEach((function(e){return r("setOption",{name:e,value:t[e]})}))},setHighlight:function(e,t){var n=e.commit;e.dispatch;n("setHighlight",{user:t.user,color:t.color,type:t.type})},setOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setOption",{name:i,value:o}),i){case"theme":Object(l.l)(o);break;case"customTheme":case"customThemeSource":Object(l.b)(o);break;case"interfaceLanguage":u.a.setLanguage(this.getters.i18n,o),c.a.set("userLanguage",d.a.internalToBackendLocale(o));break;case"thirdColumnMode":r("setLayoutWidth",void 0)}}}};t.a=j},,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(49),i=n.n(r),o=function(e,t){var n=e.text.toLowerCase(),r=e.summary.toLowerCase();return i()(t,(function(e){return n.includes(e.toLowerCase())||r.includes(e.toLowerCase())}))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(e,t){if("Notification"in window&&"granted"===window.Notification.permission&&!e.statuses.notifications.desktopNotificationSilence){var n=new window.Notification(t.title,t);setTimeout(n.close.bind(n),5e3)}}},,,,,,,,,,function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r.top,s=void 0===o?0:o,a=r.left,c=void 0===a?0:a,l=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u={top:s+t.offsetTop,left:c+t.offsetLeft};if(!l&&t!==window){var d=i(t),p=d.topPadding,h=d.leftPadding;u.top+=l?0:p,u.left+=l?0:h}if(t.offsetParent&&"sticky"!==window.getComputedStyle(t.offsetParent).position&&(n===window||n.contains(t.offsetParent)||n===t.offsetParent))return e(t.offsetParent,n,u,!1);if(n!==window){var b=i(n),m=b.topPadding,f=b.leftPadding;u.top+=m,u.left+=f}return u},i=function(e){var t=window.getComputedStyle(e)["padding-top"],n=Number(t.substring(0,t.length-2)),r=window.getComputedStyle(e)["padding-left"];return{topPadding:n,leftPadding:Number(r.substring(0,r.length-2))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var r=function(e){var t=e.filename,n=void 0===t?"data":t,r=e.getExportedObject;return{exportData:function(){var e=JSON.stringify(r(),null,2),t=document.createElement("a");t.setAttribute("download","".concat(n,".json")),t.setAttribute("href","data:application/json;base64,"+window.btoa(e)),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}}},i=function(e){var t=e.onImport,n=e.onImportFailure,r=e.validator,i=void 0===r?function(){return!0}:r;return{importData:function(){var e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".json"),e.addEventListener("change",(function(e){if(e.target.files[0]){var r=new FileReader;r.onload=function(e){var r=e.target;try{var o=JSON.parse(r.result),s=i(o);!0===s?t(o):n({validationResult:s})}catch(e){n({error:e})}},r.readAsText(e.target.files[0])}})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}},function(e,t,n){"use strict";var r=n(0);const i={class:"Flash"},o={key:0,class:"label"},s={key:1,class:"label"},a={key:2,class:"label"};var c,l=(c=null,{getRuffle:function(){return new Promise((function(e,t){if(c)e(c);else{window.RufflePlayer={},window.RufflePlayer.config={polyfills:!1,publicPath:"/static/ruffle"};var n=document.createElement("script");n.src="/static/ruffle/ruffle.js",n.type="text/javascript",n.onerror=function(e){t(e)},n.onabort=function(e){t(e)},n.oncancel=function(e){t(e)},n.onload=function(){c=window.RufflePlayer,e(c)},document.body.appendChild(n)}}))}}),u=n(6),d=n(3);u.c.add(d.lb,d.z);var p={props:["src"],data:function(){return{player:!1,loaded:!1,ruffleInstance:null}},methods:{openPlayer:function(){var e=this;this.player||(this.player="hidden",l.getRuffle().then((function(t){var n=t.newest().createPlayer();n.config={letterbox:"on"},e.$refs.container.appendChild(n),n.style.width="100%",n.style.height="100%",n.load(e.src).then((function(){e.player=!0})).catch((function(t){console.error("Error loading ruffle",t),e.player="error"})),e.ruffleInstance=n,e.$emit("playerOpened")})))},closePlayer:function(){this.ruffleInstance&&this.ruffleInstance.remove(),this.player=!1,this.$emit("playerClosed")}}},h=(n(508),n(4));const b=n.n(h)()(p,[["render",function(e,t,n,c,l,u){const d=Object(r.J)("FAIcon");return Object(r.D)(),Object(r.j)("div",i,[!0===e.player||"hidden"===e.player?(Object(r.D)(),Object(r.j)("div",{key:0,ref:"container",class:Object(r.w)(["player",{hidden:"hidden"===e.player}])},null,2)):Object(r.i)("",!0),!0!==e.player?(Object(r.D)(),Object(r.j)("button",{key:1,class:"button-unstyled placeholder",onClick:t[0]||(t[0]=(...t)=>e.openPlayer&&e.openPlayer(...t))},["hidden"===e.player?(Object(r.D)(),Object(r.j)("span",o,Object(r.O)(e.$t("general.loading")),1)):Object(r.i)("",!0),"error"===e.player?(Object(r.D)(),Object(r.j)("span",s,Object(r.O)(e.$t("general.flash_fail")),1)):(Object(r.D)(),Object(r.j)("span",a,[Object(r.k)("p",null,Object(r.O)(e.$t("general.flash_content")),1),Object(r.k)("p",null,[Object(r.m)(d,{icon:"exclamation-triangle"}),Object(r.l)(" "+Object(r.O)(e.$t("general.flash_security")),1)])]))])):Object(r.i)("",!0)])}]]);t.a=b},function(e,t,n){"use strict";var r=n(0);const i=["disabled","title"];var o=n(11),s=n.n(o),a=function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.followUser({id:e}).then((function(e){if(t.commit("updateUserRelationship",[e]),!(e.following||e.locked&&e.requested))return function e(t,n,r){return new Promise((function(e,i){setTimeout((function(){r.state.api.backendInteractor.fetchUserRelationship({id:n}).then((function(e){return r.commit("updateUserRelationship",[e]),e})).then((function(n){return e([n.following,n.requested,n.locked,t])})).catch((function(e){return i(e)}))}),500)})).then((function(t){var i=s()(t,4),o=i[0],a=i[1],c=i[2],l=i[3];o||c&&a||!(l<=3)||e(++l,n,r)}))}(1,e,t).then((function(){n()}));n()}))}))},c={props:["relationship","user","labelFollowing","buttonClass"],data:function(){return{inProgress:!1}},computed:{isPressed:function(){return this.inProgress||this.relationship.following},title:function(){return this.inProgress||this.relationship.following?this.$t("user_card.follow_unfollow"):this.relationship.requested?this.$t("user_card.follow_cancel"):this.$t("user_card.follow")},label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.relationship.following?this.labelFollowing||this.$t("user_card.following"):this.relationship.requested?this.$t("user_card.follow_sent"):this.$t("user_card.follow")},disabled:function(){return this.inProgress||this.user.deactivated}},methods:{onClick:function(){this.relationship.following||this.relationship.requested?this.unfollow():this.follow()},follow:function(){var e=this;this.inProgress=!0,a(this.relationship.id,this.$store).then((function(){e.inProgress=!1}))},unfollow:function(){var e=this,t=this.$store;this.inProgress=!0,function(e,t){return new Promise((function(n,r){t.state.api.backendInteractor.unfollowUser({id:e}).then((function(e){t.commit("updateUserRelationship",[e]),n({updated:e})}))}))}(this.relationship.id,t).then((function(){e.inProgress=!1,t.commit("removeStatus",{timeline:"friends",userId:e.relationship.id})}))}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("button",{class:Object(r.w)(["btn button-default follow-button",{toggled:e.isPressed}]),disabled:e.disabled,title:e.title,onClick:t[0]||(t[0]=(...t)=>e.onClick&&e.onClick(...t))},Object(r.O)(e.label),11,i)}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i=["src","loop","controls","alt","title"];var o={props:["attachment","controls"],data:function(){return{blocksSuspend:!1,hasAudio:!0}},computed:{loopVideo:function(){return this.$store.getters.mergedConfig.loopVideoSilentOnly?!this.hasAudio:this.$store.getters.mergedConfig.loopVideo}},methods:{onPlaying:function(e){this.setHasAudio(e),this.loopVideo?this.$emit("play",{looping:!0}):this.$emit("play")},onPaused:function(e){this.$emit("pause")},setHasAudio:function(e){var t=e.srcElement||e.target;this.hasAudio&&(void 0!==t.webkitAudioDecodedByteCount&&t.webkitAudioDecodedByteCount>0||void 0!==t.mozHasAudio&&t.mozHasAudio||void 0!==t.audioTracks&&t.audioTracks.length>0||(this.hasAudio=!1))}}},s=n(4);const a=n.n(s)()(o,[["render",function(e,t,n,o,s,a){return Object(r.D)(),Object(r.j)("video",{class:"video",preload:"metadata",src:e.attachment.url,loop:e.loopVideo,controls:e.controls,alt:e.attachment.description,title:e.attachment.description,playsinline:"",onPlaying:t[0]||(t[0]=(...t)=>e.onPlaying&&e.onPlaying(...t)),onPause:t[1]||(t[1]=(...t)=>e.onPaused&&e.onPaused(...t))},null,40,i)}]]);t.a=a},function(e,t,n){"use strict";var r=n(0);const i=["href"],o={key:0,class:"card-image"},s=["src"],a={class:"card-content"},c={class:"card-host faint"},l={key:0,class:"nsfw-alert alert warning"},u={class:"card-title"},d={key:0,class:"card-description"};var p=n(5),h=n.n(p),b=n(8);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var f={name:"LinkPreview",props:["card","size","nsfw"],data:function(){return{imageLoaded:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({useImage:function(){return this.card.image&&!this.censored&&"hide"!==this.size},censored:function(){return this.nsfw&&this.hideNsfwConfig},useDescription:function(){return this.card.description&&/\S/.test(this.card.description)},hideNsfwConfig:function(){return this.mergedConfig.hideNsfw}},Object(b.c)(["mergedConfig"])),created:function(){var e=this;if(this.useImage){var t=new Image;t.onload=function(){e.imageLoaded=!0},t.src=this.card.image}}},O=(n(522),n(4));const j=n.n(O)()(f,[["render",function(e,t,n,p,h,b){return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("a",{class:"link-preview-card",href:e.card.url,target:"_blank",rel:"noopener"},[e.useImage&&e.imageLoaded?(Object(r.D)(),Object(r.j)("div",o,[Object(r.k)("img",{src:e.card.image},null,8,s)])):Object(r.i)("",!0),Object(r.k)("div",a,[Object(r.k)("span",c,[e.censored?(Object(r.D)(),Object(r.j)("span",l,Object(r.O)(e.$t("status.nsfw")),1)):Object(r.i)("",!0),Object(r.l)(" "+Object(r.O)(e.card.provider_name),1)]),Object(r.k)("h4",u,Object(r.O)(e.card.title),1),e.useDescription?(Object(r.D)(),Object(r.j)("p",d,Object(r.O)(e.card.description),1)):Object(r.i)("",!0)])],8,i)])}]]);t.a=j},function(e,t,n){"use strict";var r=n(0);const i={class:"remote-follow"},o=["action"],s=["value"],a=Object(r.k)("input",{type:"hidden",name:"profile",value:""},null,-1),c={click:"submit",class:"button-default remote-button"};var l={props:["user"],computed:{subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")}}},u=(n(525),n(4));const d=n.n(u)()(l,[["render",function(e,t,n,l,u,d){return Object(r.D)(),Object(r.j)("div",i,[Object(r.k)("form",{method:"POST",action:e.subscribeUrl},[Object(r.k)("input",{type:"hidden",name:"nickname",value:e.user.screen_name},null,8,s),a,Object(r.k)("button",c,Object(r.O)(e.$t("user_card.remote_follow")),1)],8,o)])}]]);t.a=d},function(e,t,n){"use strict";var r=n(0);const i={class:"avatars"};var o=n(22),s=n(23),a={props:["users"],computed:{slicedUsers:function(){return this.users?this.users.slice(0,15):[]}},components:{UserAvatar:o.default},methods:{userProfileLink:function(e){return Object(s.a)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},c=(n(551),n(4));const l=n.n(c)()(a,[["render",function(e,t,n,o,s,a){const c=Object(r.J)("UserAvatar"),l=Object(r.J)("router-link");return Object(r.D)(),Object(r.j)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.slicedUsers,t=>(Object(r.D)(),Object(r.h)(l,{key:t.id,to:e.userProfileLink(t),class:"avatars-item"},{default:Object(r.V)(()=>[Object(r.m)(c,{user:t,class:"avatar-small"},null,8,["user"])]),_:2},1032,["to"]))),128))])}]]);t.a=l},,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var r=n(13),i=n.n(r),o=n(10),s=n.n(o);t.a=function(e){var t=a(e.emoji),n=e.store&&c(e.store);return function(r){var i=r[0];return":"===i&&e.emoji?t(r):"@"===i&&n?n(r):[]}};var a=function(e){return function(t){var n=t.toLowerCase().substr(1);return e.filter((function(e){return e.displayText.toLowerCase().match(n)})).sort((function(e,t){var r=0,i=0;return r+=e.displayText.toLowerCase()===n?200:0,i+=t.displayText.toLowerCase()===n?200:0,r+=e.imageUrl?100:0,i+=t.imageUrl?100:0,r+=e.displayText.toLowerCase().startsWith(n)?10:0,i+=t.displayText.toLowerCase().startsWith(n)?10:0,r-=e.displayText.length,(i-=t.displayText.length)-r+(e.displayText>t.displayText?.5:-.5)}))}},c=function(e){var t,n=e.dispatch,r=e.state,o=[],a="",c=null,l=null,u=function(e){return l&&l(),new Promise((function(t,r){c=setTimeout((function(){(function(e){return n("searchUsers",{query:e})})(e).then(t).catch(r)}),300),l=function(){clearTimeout(c),t([])}}))};return t=i()(s.a.mark((function e(t){var n,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.toLowerCase().substr(1),a!==n){e.next=3;break}return e.abrupt("return",o);case 3:if(o=[],a=n,n.includes("@")){e.next=8;break}return e.next=8,u(n);case 8:return i=r.users.users.filter((function(e){return e.screen_name.toLowerCase().startsWith(n)||e.name.toLowerCase().startsWith(n)})).slice(0,20).sort((function(e,t){var r=0,i=0;return r+=e.screen_name.toLowerCase().startsWith(n)?2:0,i+=t.screen_name.toLowerCase().startsWith(n)?2:0,r+=e.name.toLowerCase().startsWith(n)?1:0,10*((i+=t.name.toLowerCase().startsWith(n)?1:0)-r)+(e.name>t.name?1:-1)+(e.screen_name>t.screen_name?1:-1)})).map((function(e){var t=e.screen_name;return{displayText:e.screen_name_ui,detailText:e.name,imageUrl:e.profile_image_url_original,replacement:"@"+t+" "}})),o=i||[],e.abrupt("return",o);case 11:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)}}},,,,,,,function(e,t,n){"use strict";var r=n(0);const i={for:"interface-language-switcher"},o=Object(r.l)(" "+Object(r.O)(" ")+" "),s=["value"];var a=n(38),c={components:{Select:n(52).a},props:{promptText:{type:String,required:!0},language:{type:String,required:!0},setLanguage:{type:Function,required:!0}},computed:{languages:function(){return a.a.languages},controlledLanguage:{get:function(){return this.language},set:function(e){this.setLanguage(e)}}},methods:{getLanguageName:function(e){return a.a.getLanguageName(e)}}},l=n(4);const u=n.n(l)()(c,[["render",function(e,t,n,a,c,l){const u=Object(r.J)("Select");return Object(r.D)(),Object(r.j)("div",null,[Object(r.k)("label",i,Object(r.O)(n.promptText),1),o,Object(r.m)(u,{id:"interface-language-switcher",modelValue:l.controlledLanguage,"onUpdate:modelValue":t[0]||(t[0]=e=>l.controlledLanguage=e)},{default:Object(r.V)(()=>[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(l.languages,e=>(Object(r.D)(),Object(r.j)("option",{key:e.code,value:e.code},Object(r.O)(e.name),9,s))),128))]),_:1},8,["modelValue"])])}]]);t.a=u},function(e,t,n){"use strict";var r=n(0);const i={key:0,class:"ScopeSelector"},o=["title"],s=Object(r.l)(" "+Object(r.O)(" ")+" "),a=["title"],c=Object(r.l)(" "+Object(r.O)(" ")+" "),l=["title"],u=Object(r.l)(" "+Object(r.O)(" ")+" "),d=["title"],p=["title"];var h=n(6),b=n(3);h.c.add(b.y,b.I,b.O,b.P);var m={props:["showAll","userDefault","originalScope","initialScope","onScopeChange"],data:function(){return{currentScope:this.initialScope}},computed:{showNothing:function(){return!(this.showPublic||this.showUnlisted||this.showPrivate||this.showDirect)},showPublic:function(){return"direct"!==this.originalScope&&this.shouldShow("public")},showLocal:function(){return"direct"!==this.originalScope&&this.shouldShow("local")},showUnlisted:function(){return"direct"!==this.originalScope&&this.shouldShow("unlisted")},showPrivate:function(){return"direct"!==this.originalScope&&this.shouldShow("private")},showDirect:function(){return this.shouldShow("direct")},css:function(){return{public:{selected:"public"===this.currentScope},unlisted:{selected:"unlisted"===this.currentScope},private:{selected:"private"===this.currentScope},direct:{selected:"direct"===this.currentScope},local:{selected:"local"===this.currentScope}}}},methods:{shouldShow:function(e){return this.showAll||this.currentScope===e||this.originalScope===e||this.userDefault===e||"direct"===e},changeVis:function(e){this.currentScope=e,this.onScopeChange&&this.onScopeChange(e)}}},f=(n(501),n(4));const O=n.n(f)()(m,[["render",function(e,t,n,h,b,m){const f=Object(r.J)("FAIcon");return e.showNothing?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("div",i,[e.showDirect?(Object(r.D)(),Object(r.j)("button",{key:0,class:Object(r.w)(["button-unstyled scope",e.css.direct]),title:e.$t("post_status.scope.direct"),type:"button",onClick:t[0]||(t[0]=t=>e.changeVis("direct"))},[Object(r.m)(f,{icon:"envelope",class:"fa-scale-110 fa-old-padding"})],10,o)):Object(r.i)("",!0),s,e.showPrivate?(Object(r.D)(),Object(r.j)("button",{key:1,class:Object(r.w)(["button-unstyled scope",e.css.private]),title:e.$t("post_status.scope.private"),type:"button",onClick:t[1]||(t[1]=t=>e.changeVis("private"))},[Object(r.m)(f,{icon:"lock",class:"fa-scale-110 fa-old-padding"})],10,a)):Object(r.i)("",!0),c,e.showUnlisted?(Object(r.D)(),Object(r.j)("button",{key:2,class:Object(r.w)(["button-unstyled scope",e.css.unlisted]),title:e.$t("post_status.scope.unlisted"),type:"button",onClick:t[2]||(t[2]=t=>e.changeVis("unlisted"))},[Object(r.m)(f,{icon:"lock-open",class:"fa-scale-110 fa-old-padding"})],10,l)):Object(r.i)("",!0),u,e.showPublic?(Object(r.D)(),Object(r.j)("button",{key:3,class:Object(r.w)(["button-unstyled scope",e.css.public]),title:e.$t("post_status.scope.public"),type:"button",onClick:t[3]||(t[3]=t=>e.changeVis("public"))},[Object(r.m)(f,{icon:"globe",class:"fa-scale-110 fa-old-padding"})],10,d)):Object(r.i)("",!0),e.showLocal?(Object(r.D)(),Object(r.j)("button",{key:4,class:Object(r.w)(["button-unstyled scope",e.css.local]),title:e.$t("post_status.scope.local"),type:"button",onClick:t[4]||(t[4]=t=>e.changeVis("local"))},[Object(r.m)(f,{icon:"users",class:"fa-scale-110 fa-old-padding"})],10,p)):Object(r.i)("",!0)]))}]]);t.a=O},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.d(t,"b",(function(){return m}));var r=n(11),i=n.n(r),o=n(5),s=n.n(o),a=n(39),c=n.n(a),l=n(16),u=n.n(l);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var p=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s={};return c()(s,i,o),n.api.backendInteractor.updateProfile({params:s}).then((function(e){r("addNewUsers",[e]),r("setCurrentUser",e)}))},h=function(e,t){var n=e.rootState,r=e.commit,i=t.path,o=t.value,s=t.oldValue,a={};return c()(a,i,o),n.api.backendInteractor.updateNotificationSettings({settings:a}).then((function(e){"success"===e.status?r("confirmServerSideOption",{name:name,value:o}):r("confirmServerSideOption",{name:name,value:s})}))},b={defaultScope:"source.privacy",defaultNSFW:"source.sensitive",stripRichContent:{get:"source.pleroma.no_rich_text",set:"no_rich_text"},locked:"locked",acceptChatMessages:{get:"pleroma.accepts_chat_messages",set:"accepts_chat_messages"},allowFollowingMove:{get:"pleroma.allow_following_move",set:"allow_following_move"},discoverable:{get:"source.pleroma.discoverable",set:"discoverable"},hideFavorites:{get:"pleroma.hide_favorites",set:"hide_favorites"},hideFollowers:{get:"pleroma.hide_followers",set:"hide_followers"},hideFollows:{get:"pleroma.hide_follows",set:"hide_follows"},hideFollowersCount:{get:"pleroma.hide_followers_count",set:"hide_followers_count"},hideFollowsCount:{get:"pleroma.hide_follows_count",set:"hide_follows_count"},webPushHideContents:{get:"pleroma.notification_settings.hide_notification_contents",set:"hide_notification_contents",api:h},blockNotificationsFromStrangers:{get:"pleroma.notification_settings.block_from_strangers",set:"block_from_strangers",api:h}},m=Object.fromEntries(Object.keys(b).map((function(e){return[e,null]}))),f={state:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},m),mutations:{confirmServerSideOption:function(e,t){var n=t.name,r=t.value;c()(e,n,r)},wipeServerSideOption:function(e,t){var n=t.name;c()(e,n,null)},wipeAllServerSideOptions:function(e){Object.keys(b).forEach((function(t){c()(e,t,null)}))},setCurrentUser:function(e,t){Object.entries(b).forEach((function(n){var r=i()(n,2),o=r[0],s=r[1],a=s.get,l=void 0===a?s:a;c()(e,o,u()(t._original,l))}))}},actions:{setServerSideOption:function(e,t){var n=e.rootState,r=e.state,i=e.commit,o=(e.dispatch,t.name),s=t.value,a=u()(r,o),c=b[o];if(!c)throw new Error("Invalid server-side setting");var l=c.set,d=void 0===l?c:l,h=c.api,m=void 0===h?p:h;i("wipeServerSideOption",{name:o}),m({rootState:n,commit:i},{path:d,value:s,oldValue:a}).catch((function(e){console.warn("Error setting server-side option:",e),i("confirmServerSideOption",{name:o,value:a})}))},logout:function(e){(0,e.commit)("wipeAllServerSideOptions")}}};t.a=f},,,function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},,function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(95),i=n.n(r),o=function(e){return function(e){return i()(e)?e.options:e}(e).props}},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";var r=n(0);const i={ref:"panel-body",class:"autocomplete-panel-body"},o=["onClick"],s={class:"image"},a=["src"],c={key:1},l={class:"label"},u={class:"displayText"},d={class:"detailText"};var p=n(5),h=n.n(p),b=n(40),m=n.n(b),f=n(13),O=n.n(f),j=n(326),g=n.n(j),v=n(10),y=n.n(v),w=n(30),k=n.n(w),_=n(55),S=n.n(_),C=function(e){return S()(e,(function(e,t){var n={word:t,start:0,end:t.length};if(e.length>0){var r=e.pop();n.start+=r.end,n.end+=r.end,e.push(r)}return e.push(n),e}),[])},P=function(e){for(var t=[],n="",r=0;r<e.length;r++){var i=e[r];n?!!i.trim()==!!n.trim()?n+=i:(t.push(n),n=i):n=i}return n&&t.push(n),t},x={wordAtPosition:function(e,t){var n=P(e),r=C(n);return k()(r,(function(e){var n=e.start,r=e.end;return n<=t&&r>t}))},addPositionToWords:C,splitByWhitespaceBoundary:P,replaceWord:function(e,t,n){return e.slice(0,t.start)+n+e.slice(t.end)}};const D={class:"emoji-picker panel panel-default panel-body"},T={class:"heading"},I={class:"emoji-tabs"},$=["title","onClick"],z={key:0,class:"additional-tabs"},M=["title"],U={class:"content"},F={class:"emoji-search"},E=["placeholder"],L=["title","onClick"],R={key:0},A=["src"],N={class:"keep-open"},B={key:0,class:"stickers-content"};var V=n(51),H=n(6),q=n(3);function J(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return W(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}H.c.add(q.k,q.kb,q.ib);var Y=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e;var n,r=t.toLowerCase(),i=[],o=J(e);try{for(o.s();!(n=o.n()).done;){var s=n.value,a=s.displayText.toLowerCase().indexOf(r);a>-1&&(Array.isArray(i[a])||(i[a]=[]),i[a].push(s))}}catch(e){o.e(e)}finally{o.f()}return i.flat()},G={props:{enableStickerPicker:{required:!1,type:Boolean,default:!1}},data:function(){return{keyword:"",activeGroup:"custom",showingStickers:!1,groupsScrolledClass:"scrolled-top",keepOpen:!1,customEmojiBufferSlice:60,customEmojiTimeout:null,customEmojiLoadAllConfirmed:!1}},components:{StickerPicker:Object(r.n)((function(){return n.e(4).then(n.bind(null,709))})),Checkbox:V.a},methods:{onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-failed",e)},onEmoji:function(e){var t=e.imageUrl?":".concat(e.displayText,":"):e.replacement;this.$emit("emoji",{insertion:t,keepOpen:this.keepOpen})},onScroll:function(e){var t=e&&e.target||this.$refs["emoji-groups"];this.updateScrolledClass(t),this.scrolledGroup(t),this.triggerLoadMore(t)},highlight:function(e){var t=this,n=this.$refs["group-"+e].offsetTop;this.setShowStickers(!1),this.activeGroup=e,this.$nextTick((function(){t.$refs["emoji-groups"].scrollTop=n+1}))},updateScrolledClass:function(e){e.scrollTop<=5?this.groupsScrolledClass="scrolled-top":e.scrollTop>=e.scrollTopMax-5?this.groupsScrolledClass="scrolled-bottom":this.groupsScrolledClass="scrolled-middle"},triggerLoadMore:function(e){var t=this.$refs["group-end-custom"];if(t){var n=t.offsetTop+t.offsetHeight,r=e.scrollTop+e.clientHeight,i=e.scrollTop,o=e.scrollHeight;n<i||r===o||!(n-r<64)&&!(i<5)||this.loadEmoji()}},scrolledGroup:function(e){var t=this,n=e.scrollTop+5;this.$nextTick((function(){t.emojisView.forEach((function(e){t.$refs["group-"+e.id].offsetTop<=n&&(t.activeGroup=e.id)}))}))},loadEmoji:function(){this.customEmojiBuffer.length===this.filteredEmoji.length||(this.customEmojiBufferSlice+=60)},startEmojiLoad:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];t||(this.keyword=""),this.$nextTick((function(){e.$refs["emoji-groups"].scrollTop=0}));var n=this.customEmojiBuffer.length,r=n===this.filteredEmoji.length;r&&!t||(this.customEmojiBufferSlice=60)},toggleStickers:function(){this.showingStickers=!this.showingStickers},setShowStickers:function(e){this.showingStickers=e}},watch:{keyword:function(){this.customEmojiLoadAllConfirmed=!1,this.onScroll(),this.startEmojiLoad(!0)}},computed:{activeGroupView:function(){return this.showingStickers?"":this.activeGroup},stickersAvailable:function(){return this.$store.state.instance.stickers?this.$store.state.instance.stickers.length>0:0},filteredEmoji:function(){return Y(this.$store.state.instance.customEmoji||[],this.keyword)},customEmojiBuffer:function(){return this.filteredEmoji.slice(0,this.customEmojiBufferSlice)},emojis:function(){var e=this.$store.state.instance.emoji||[],t=this.customEmojiBuffer;return[{id:"custom",text:this.$t("emoji.custom"),icon:"smile-beam",emojis:t},{id:"standard",text:this.$t("emoji.unicode"),icon:"box-open",emojis:Y(e,this.keyword)}]},emojisView:function(){return this.emojis.filter((function(e){return e.emojis.length>0}))},stickerPickerEnabled:function(){return 0!==(this.$store.state.instance.stickers||[]).length}}},K=(n(503),n(4)),X=n.n(K);var Z=X()(G,[["render",function(e,t,n,i,o,s){const a=Object(r.J)("FAIcon"),c=Object(r.J)("Checkbox"),l=Object(r.J)("sticker-picker");return Object(r.D)(),Object(r.j)("div",D,[Object(r.k)("div",T,[Object(r.k)("span",I,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojis,t=>(Object(r.D)(),Object(r.j)("span",{key:t.id,class:Object(r.w)(["emoji-tabs-item",{active:e.activeGroupView===t.id,disabled:0===t.emojis.length}]),title:t.text,onClick:Object(r.Y)(n=>e.highlight(t.id),["prevent"])},[Object(r.m)(a,{icon:t.icon,"fixed-width":""},null,8,["icon"])],10,$))),128))]),e.stickerPickerEnabled?(Object(r.D)(),Object(r.j)("span",z,[Object(r.k)("span",{class:Object(r.w)(["stickers-tab-icon additional-tabs-item",{active:e.showingStickers}]),title:e.$t("emoji.stickers"),onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.toggleStickers&&e.toggleStickers(...t),["prevent"]))},[Object(r.m)(a,{icon:"sticky-note","fixed-width":""})],10,M)])):Object(r.i)("",!0)]),Object(r.k)("div",U,[Object(r.k)("div",{class:Object(r.w)(["emoji-content",{hidden:e.showingStickers}])},[Object(r.k)("div",F,[Object(r.W)(Object(r.k)("input",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.keyword=t),type:"text",class:"form-control",placeholder:e.$t("emoji.search_emoji")},null,8,E),[[r.S,e.keyword]])]),Object(r.k)("div",{ref:"emoji-groups",class:Object(r.w)(["emoji-groups",e.groupsScrolledClass]),onScroll:t[2]||(t[2]=(...t)=>e.onScroll&&e.onScroll(...t))},[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.emojisView,t=>(Object(r.D)(),Object(r.j)("div",{key:t.id,class:"emoji-group"},[Object(r.k)("h6",{ref_for:!0,ref:"group-"+t.id,class:"emoji-group-title"},Object(r.O)(t.text),513),(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(t.emojis,n=>(Object(r.D)(),Object(r.j)("span",{key:t.id+n.displayText,title:n.displayText,class:"emoji-item",onClick:Object(r.Y)(t=>e.onEmoji(n),["stop","prevent"])},[n.imageUrl?(Object(r.D)(),Object(r.j)("img",{key:1,src:n.imageUrl},null,8,A)):(Object(r.D)(),Object(r.j)("span",R,Object(r.O)(n.replacement),1))],8,L))),128)),Object(r.k)("span",{ref_for:!0,ref:"group-end-"+t.id},null,512)]))),128))],34),Object(r.k)("div",N,[Object(r.m)(c,{modelValue:e.keepOpen,"onUpdate:modelValue":t[3]||(t[3]=t=>e.keepOpen=t)},{default:Object(r.V)(()=>[Object(r.l)(Object(r.O)(e.$t("emoji.keep_open")),1)]),_:1},8,["modelValue"])])],2),e.showingStickers?(Object(r.D)(),Object(r.j)("div",B,[Object(r.m)(l,{onUploaded:e.onStickerUploaded,onUploadFailed:e.onStickerUploadFailed},null,8,["onUploaded","onUploadFailed"])])):Object(r.i)("",!0)])])}]]),Q=n(137),ee=n(41),te=["imageUrl"];function ne(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}H.c.add(ee.c);var ie,oe={emits:["update:modelValue","shown"],props:{suggest:{required:!0,type:Function},modelValue:{required:!0,type:String},enableEmojiPicker:{required:!1,type:Boolean,default:!1},hideEmojiButton:{required:!1,type:Boolean,default:!1},enableStickerPicker:{required:!1,type:Boolean,default:!1},placement:{required:!1,type:String,default:"auto"},newlineOnCtrlEnter:{required:!1,type:Boolean,default:!1}},data:function(){return{input:void 0,highlighted:0,caret:0,focused:!1,blurTimeout:null,showPicker:!1,temporarilyHideSuggestions:!1,keepOpen:!1,disableClickOutside:!1,suggestions:[]}},components:{EmojiPicker:Z},computed:{padEmoji:function(){return this.$store.getters.mergedConfig.padEmoji},showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length>0&&!this.showPicker&&!this.temporarilyHideSuggestions},textAtCaret:function(){return(this.wordAtCaret||{}).word||""},wordAtCaret:function(){if(this.modelValue&&this.caret)return x.wordAtPosition(this.modelValue,this.caret-1)||{}}},mounted:function(){var e=this.$refs.root,t=e.querySelector(".emoji-input > input")||e.querySelector(".emoji-input > textarea");t&&(this.input=t,this.resize(),t.addEventListener("blur",this.onBlur),t.addEventListener("focus",this.onFocus),t.addEventListener("paste",this.onPaste),t.addEventListener("keyup",this.onKeyUp),t.addEventListener("keydown",this.onKeyDown),t.addEventListener("click",this.onClickInput),t.addEventListener("transitionend",this.onTransition),t.addEventListener("input",this.onInput))},unmounted:function(){var e=this.input;e&&(e.removeEventListener("blur",this.onBlur),e.removeEventListener("focus",this.onFocus),e.removeEventListener("paste",this.onPaste),e.removeEventListener("keyup",this.onKeyUp),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("click",this.onClickInput),e.removeEventListener("transitionend",this.onTransition),e.removeEventListener("input",this.onInput))},watch:{showSuggestions:function(e){this.$emit("shown",e)},textAtCaret:(ie=O()(y.a.mark((function e(t){var n,r;return y.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.charAt(0),this.suggestions=[],t!==n){e.next=4;break}return e.abrupt("return");case 4:return e.next=6,this.suggest(t);case 6:if(r=e.sent,this.textAtCaret===t){e.next=9;break}return e.abrupt("return");case 9:if(!(r.length<=0)){e.next=11;break}return e.abrupt("return");case 11:this.suggestions=g()(r,5).map((function(e){var t=e.imageUrl;return re(re({},m()(e,te)),{},{img:t||""})}));case 12:case"end":return e.stop()}}),e,this)}))),function(e){return ie.apply(this,arguments)}),suggestions:{handler:function(e){this.$nextTick(this.resize)},deep:!0}},methods:{focusPickerInput:function(){var e=this.$refs.picker.$el;if(e){var t=e.querySelector("input");t&&t.focus()}},triggerShowPicker:function(){var e=this;this.showPicker=!0,this.$refs.picker.startEmojiLoad(),this.$nextTick((function(){e.scrollIntoView(),e.focusPickerInput()})),this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0)},togglePicker:function(){this.input.focus(),this.showPicker=!this.showPicker,this.showPicker&&(this.scrollIntoView(),this.$refs.picker.startEmojiLoad(),this.$nextTick(this.focusPickerInput))},replace:function(e){var t=x.replaceWord(this.modelValue,this.wordAtCaret,e);this.$emit("update:modelValue",t),this.caret=0},insert:function(e){var t=e.insertion,n=e.keepOpen,r=e.surroundingSpace,i=void 0===r||r,o=this.modelValue.substring(0,this.caret)||"",s=this.modelValue.substring(this.caret)||"",a=/\s/,c=i&&!a.exec(o.slice(-1))&&o.length&&this.padEmoji>0?" ":"",l=i&&!a.exec(s[0])&&this.padEmoji?" ":"",u=[o,c,t,l,s].join("");this.keepOpen=n,this.$emit("update:modelValue",u);var d=this.caret+(t+l+c).length;n||this.input.focus(),this.$nextTick((function(){this.input.setSelectionRange(d,d),this.caret=d}))},replaceText:function(e,t){var n=this.suggestions.length||0;if(1!==this.textAtCaret.length&&(n>0||t)){var r=(t||this.suggestions[this.highlighted]).replacement,i=x.replaceWord(this.modelValue,this.wordAtCaret,r);this.$emit("update:modelValue",i),this.highlighted=0;var o=this.wordAtCaret.start+r.length;this.$nextTick((function(){this.input.focus(),this.input.setSelectionRange(o,o),this.caret=o})),e.preventDefault()}},cycleBackward:function(e){(this.suggestions.length||0)>1?(this.highlighted-=1,this.highlighted<0&&(this.highlighted=this.suggestions.length-1),e.preventDefault()):this.highlighted=0},cycleForward:function(e){var t=this.suggestions.length||0;t>1?(this.highlighted+=1,this.highlighted>=t&&(this.highlighted=0),e.preventDefault()):this.highlighted=0},scrollIntoView:function(){var e=this,t=this.$refs.picker.$el,n=this.$el.closest(".sidebar-scroller")||this.$el.closest(".post-form-modal-view")||window,r=n===window?n.scrollY:n.scrollTop,i=r+(n===window?n.innerHeight:n.offsetHeight),o=t.offsetHeight+Object(Q.a)(t,n).top,s=r+Math.max(0,o-i);n===window?n.scroll(0,s):n.scrollTop=s,this.$nextTick((function(){var t=e.input.offsetHeight,n=e.$refs.picker;n.$el.getBoundingClientRect().bottom>window.innerHeight&&(n.$el.style.top="auto",n.$el.style.bottom=t+"px")}))},onTransition:function(e){this.resize()},onBlur:function(e){var t=this;this.blurTimeout=setTimeout((function(){t.focused=!1,t.setCaret(e),t.resize()}),200)},onClick:function(e,t){this.replaceText(e,t)},onFocus:function(e){this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.keepOpen||(this.showPicker=!1),this.focused=!0,this.setCaret(e),this.resize(),this.temporarilyHideSuggestions=!1},onKeyUp:function(e){var t=e.key;this.setCaret(e),this.resize(),this.temporarilyHideSuggestions="Escape"===t},onPaste:function(e){this.setCaret(e),this.resize()},onKeyDown:function(e){var t=this,n=e.ctrlKey,r=e.shiftKey,i=e.key;this.newlineOnCtrlEnter&&n&&"Enter"===i&&(this.insert({insertion:"\n",surroundingSpace:!1}),e.stopPropagation(),e.preventDefault(),this.$nextTick((function(){t.input.blur(),t.input.focus()}))),this.temporarilyHideSuggestions||("Tab"===i&&(r?this.cycleBackward(e):this.cycleForward(e)),"ArrowUp"===i?this.cycleBackward(e):"ArrowDown"===i&&this.cycleForward(e),"Enter"===i&&(n||this.replaceText(e))),"Escape"===i&&(this.temporarilyHideSuggestions||this.input.focus()),this.showPicker=!1,this.resize()},onInput:function(e){this.showPicker=!1,this.setCaret(e),this.resize(),this.$emit("update:modelValue",e.target.value)},onClickInput:function(e){this.showPicker=!1},onClickOutside:function(e){this.disableClickOutside||(this.showPicker=!1)},onStickerUploaded:function(e){this.showPicker=!1,this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.showPicker=!1,this.$emit("sticker-upload-Failed",e)},setCaret:function(e){var t=e.target.selectionStart;this.caret=t},resize:function(){var e=this.$refs.panel;if(e){var t=this.$refs.picker.$el,n=this.$refs["panel-body"],r=this.input,i=r.offsetHeight,o=r.offsetTop+i;this.setPlacement(n,e,o),this.setPlacement(t,t,o)}},setPlacement:function(e,t,n){e&&t&&(t.style.top=n+"px",t.style.bottom="auto",("top"===this.placement||"auto"===this.placement&&this.overflowsBottom(e))&&(t.style.top="auto",t.style.bottom=this.input.offsetHeight+"px"))},overflowsBottom:function(e){return e.getBoundingClientRect().bottom>window.innerHeight}}};n(504);const se=X()(oe,[["render",function(e,t,n,p,h,b){const m=Object(r.J)("FAIcon"),f=Object(r.J)("EmojiPicker"),O=Object(r.K)("click-outside");return Object(r.W)((Object(r.D)(),Object(r.j)("div",{ref:"root",class:Object(r.w)(["emoji-input",{"with-picker":!e.hideEmojiButton}])},[Object(r.I)(e.$slots,"default"),e.enableEmojiPicker?(Object(r.D)(),Object(r.j)(r.a,{key:0},[e.hideEmojiButton?Object(r.i)("",!0):(Object(r.D)(),Object(r.j)("button",{key:0,class:"button-unstyled emoji-picker-icon",type:"button",onClick:t[0]||(t[0]=Object(r.Y)((...t)=>e.togglePicker&&e.togglePicker(...t),["prevent"]))},[Object(r.m)(m,{icon:["far","smile-beam"]})])),e.enableEmojiPicker?(Object(r.D)(),Object(r.h)(f,{key:1,ref:"picker",class:Object(r.w)([{hide:!e.showPicker},"emoji-picker-panel"]),"enable-sticker-picker":e.enableStickerPicker,onEmoji:e.insert,onStickerUploaded:e.onStickerUploaded,onStickerUploadFailed:e.onStickerUploadFailed},null,8,["class","enable-sticker-picker","onEmoji","onStickerUploaded","onStickerUploadFailed"])):Object(r.i)("",!0)],64)):Object(r.i)("",!0),Object(r.k)("div",{ref:"panel",class:Object(r.w)(["autocomplete-panel",{hide:!e.showSuggestions}])},[Object(r.k)("div",i,[(Object(r.D)(!0),Object(r.j)(r.a,null,Object(r.H)(e.suggestions,(t,n)=>(Object(r.D)(),Object(r.j)("div",{key:n,class:Object(r.w)(["autocomplete-item",{highlighted:n===e.highlighted}]),onClick:Object(r.Y)(n=>e.onClick(n,t),["stop","prevent"])},[Object(r.k)("span",s,[t.img?(Object(r.D)(),Object(r.j)("img",{key:0,src:t.img},null,8,a)):(Object(r.D)(),Object(r.j)("span",c,Object(r.O)(t.replacement),1))]),Object(r.k)("div",l,[Object(r.k)("span",u,Object(r.O)(t.displayText),1),Object(r.k)("span",d,Object(r.O)(t.detailText),1)])],10,o))),128))],512)],2)],2)),[[O,e.onClickOutside]])}]]);t.a=se},,,,,,,,,,,,,,,,,function(e,t,n){e.exports=n.p+"static/img/nsfw.ca95de9.png"},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t),t.default={about:{mrf:{federation:e=>{const{normalize:t}=e;return t(["Federation"])},keyword:{keyword_policies:e=>{const{normalize:t}=e;return t(["Keyword policies"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "The Whole Known Network" Timeline'])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},replace:e=>{const{normalize:t}=e;return t(["Replace"])},is_replaced_by:e=>{const{normalize:t}=e;return t(["→"])}},mrf_policies:e=>{const{normalize:t}=e;return t(["Enabled MRF policies"])},mrf_policies_desc:e=>{const{normalize:t}=e;return t(["MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:"])},simple:{simple_policies:e=>{const{normalize:t}=e;return t(["Instance-specific policies"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},reason:e=>{const{normalize:t}=e;return t(["Reason"])},not_applicable:e=>{const{normalize:t}=e;return t(["N/A"])},accept:e=>{const{normalize:t}=e;return t(["Accept"])},accept_desc:e=>{const{normalize:t}=e;return t(["This instance only accepts messages from the following instances:"])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},reject_desc:e=>{const{normalize:t}=e;return t(["This instance will not accept messages from the following instances:"])},quarantine:e=>{const{normalize:t}=e;return t(["Quarantine"])},quarantine_desc:e=>{const{normalize:t}=e;return t(["This instance will send only public posts to the following instances:"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "Known Network" Timeline'])},ftl_removal_desc:e=>{const{normalize:t}=e;return t(['This instance removes these instances from "Known Network" timeline:'])},media_removal:e=>{const{normalize:t}=e;return t(["Media Removal"])},media_removal_desc:e=>{const{normalize:t}=e;return t(["This instance removes media from posts on the following instances:"])},media_nsfw:e=>{const{normalize:t}=e;return t(["Media force-set as sensitive"])},media_nsfw_desc:e=>{const{normalize:t}=e;return t(["This instance forces media to be set sensitive in posts on the following instances:"])}}},staff:e=>{const{normalize:t}=e;return t(["Staff"])}},shoutbox:{title:e=>{const{normalize:t}=e;return t(["Shoutbox"])}},domain_mute_card:{mute:e=>{const{normalize:t}=e;return t(["Mute"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])}},exporter:{export:e=>{const{normalize:t}=e;return t(["Export"])},processing:e=>{const{normalize:t}=e;return t(["Processing, you'll soon be asked to download your file"])}},features_panel:{shout:e=>{const{normalize:t}=e;return t(["Shoutbox"])},pleroma_chat_messages:e=>{const{normalize:t}=e;return t(["Pleroma Chat"])},gopher:e=>{const{normalize:t}=e;return t(["Gopher"])},media_proxy:e=>{const{normalize:t}=e;return t(["Media proxy"])},scope_options:e=>{const{normalize:t}=e;return t(["Scope options"])},text_limit:e=>{const{normalize:t}=e;return t(["Text limit"])},title:e=>{const{normalize:t}=e;return t(["Features"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},upload_limit:e=>{const{normalize:t}=e;return t(["Upload limit"])}},finder:{error_fetching_user:e=>{const{normalize:t}=e;return t(["Error fetching user"])},find_user:e=>{const{normalize:t}=e;return t(["Find user"])}},general:{apply:e=>{const{normalize:t}=e;return t(["Apply"])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},more:e=>{const{normalize:t}=e;return t(["More"])},loading:e=>{const{normalize:t}=e;return t(["Loading…"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occured"])},error_retry:e=>{const{normalize:t}=e;return t(["Please try again"])},retry:e=>{const{normalize:t}=e;return t(["Try again"])},optional:e=>{const{normalize:t}=e;return t(["optional"])},show_more:e=>{const{normalize:t}=e;return t(["Show more"])},show_less:e=>{const{normalize:t}=e;return t(["Show less"])},dismiss:e=>{const{normalize:t}=e;return t(["Dismiss"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])},disable:e=>{const{normalize:t}=e;return t(["Disable"])},enable:e=>{const{normalize:t}=e;return t(["Enable"])},confirm:e=>{const{normalize:t}=e;return t(["Confirm"])},verify:e=>{const{normalize:t}=e;return t(["Verify"])},close:e=>{const{normalize:t}=e;return t(["Close"])},peek:e=>{const{normalize:t}=e;return t(["Peek"])},role:{admin:e=>{const{normalize:t}=e;return t(["Admin"])},moderator:e=>{const{normalize:t}=e;return t(["Moderator"])}},flash_content:e=>{const{normalize:t}=e;return t(["Click to show Flash content using Ruffle (Experimental, may not work)."])},flash_security:e=>{const{normalize:t}=e;return t(["Note that this can be potentially dangerous since Flash content is still arbitrary code."])},flash_fail:e=>{const{normalize:t}=e;return t(["Failed to load flash content, see console for details."])},scope_in_timeline:{direct:e=>{const{normalize:t}=e;return t(["Direct"])},private:e=>{const{normalize:t}=e;return t(["Followers-only"])},public:e=>{const{normalize:t}=e;return t(["Public"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted"])}}},image_cropper:{crop_picture:e=>{const{normalize:t}=e;return t(["Crop picture"])},save:e=>{const{normalize:t}=e;return t(["Save"])},save_without_cropping:e=>{const{normalize:t}=e;return t(["Save without cropping"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},importer:{submit:e=>{const{normalize:t}=e;return t(["Submit"])},success:e=>{const{normalize:t}=e;return t(["Imported successfully."])},error:e=>{const{normalize:t}=e;return t(["An error occured while importing this file."])}},login:{login:e=>{const{normalize:t}=e;return t(["Log in"])},description:e=>{const{normalize:t}=e;return t(["Log in with OAuth"])},logout:e=>{const{normalize:t}=e;return t(["Log out"])},password:e=>{const{normalize:t}=e;return t(["Password"])},placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},register:e=>{const{normalize:t}=e;return t(["Register"])},username:e=>{const{normalize:t}=e;return t(["Username"])},hint:e=>{const{normalize:t}=e;return t(["Log in to join the discussion"])},authentication_code:e=>{const{normalize:t}=e;return t(["Authentication code"])},enter_recovery_code:e=>{const{normalize:t}=e;return t(["Enter a recovery code"])},enter_two_factor_code:e=>{const{normalize:t}=e;return t(["Enter a two-factor code"])},recovery_code:e=>{const{normalize:t}=e;return t(["Recovery code"])},heading:{totp:e=>{const{normalize:t}=e;return t(["Two-factor authentication"])},recovery:e=>{const{normalize:t}=e;return t(["Two-factor recovery"])}}},media_modal:{previous:e=>{const{normalize:t}=e;return t(["Previous"])},next:e=>{const{normalize:t}=e;return t(["Next"])},counter:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("current"))," / ",n(r("total"))])},hide:e=>{const{normalize:t}=e;return t(["Close media viewer"])}},nav:{about:e=>{const{normalize:t}=e;return t(["About"])},administration:e=>{const{normalize:t}=e;return t(["Administration"])},back:e=>{const{normalize:t}=e;return t(["Back"])},friend_requests:e=>{const{normalize:t}=e;return t(["Follow requests"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},interactions:e=>{const{normalize:t}=e;return t(["Interactions"])},dms:e=>{const{normalize:t}=e;return t(["Direct messages"])},public_tl:e=>{const{normalize:t}=e;return t(["Public timeline"])},timeline:e=>{const{normalize:t}=e;return t(["Timeline"])},home_timeline:e=>{const{normalize:t}=e;return t(["Home timeline"])},twkn:e=>{const{normalize:t}=e;return t(["Known Network"])},bookmarks:e=>{const{normalize:t}=e;return t(["Bookmarks"])},user_search:e=>{const{normalize:t}=e;return t(["User Search"])},search:e=>{const{normalize:t}=e;return t(["Search"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},preferences:e=>{const{normalize:t}=e;return t(["Preferences"])},timelines:e=>{const{normalize:t}=e;return t(["Timelines"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])}},notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching notifications: ",n(r(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["reacted with ",n(r(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}},polls:{add_poll:e=>{const{normalize:t}=e;return t(["Add poll"])},add_option:e=>{const{normalize:t}=e;return t(["Add option"])},option:e=>{const{normalize:t}=e;return t(["Option"])},votes:e=>{const{normalize:t}=e;return t(["votes"])},people_voted_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," person voted"]),t([n(r("count"))," people voted"])])},votes_count:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t([n(r("count"))," vote"]),t([n(r("count"))," votes"])])},vote:e=>{const{normalize:t}=e;return t(["Vote"])},type:e=>{const{normalize:t}=e;return t(["Poll type"])},single_choice:e=>{const{normalize:t}=e;return t(["Single choice"])},multiple_choices:e=>{const{normalize:t}=e;return t(["Multiple choices"])},expiry:e=>{const{normalize:t}=e;return t(["Poll age"])},expires_in:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ends in ",n(r(0))])},expired:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Poll ended ",n(r(0))," ago"])},not_enough_options:e=>{const{normalize:t}=e;return t(["Too few unique options in poll"])}},emoji:{stickers:e=>{const{normalize:t}=e;return t(["Stickers"])},emoji:e=>{const{normalize:t}=e;return t(["Emoji"])},keep_open:e=>{const{normalize:t}=e;return t(["Keep picker open"])},search_emoji:e=>{const{normalize:t}=e;return t(["Search for an emoji"])},add_emoji:e=>{const{normalize:t}=e;return t(["Insert emoji"])},custom:e=>{const{normalize:t}=e;return t(["Custom emoji"])},unicode:e=>{const{normalize:t}=e;return t(["Unicode emoji"])},load_all_hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loaded first ",n(r("saneAmount"))," emoji, loading all emoji may cause performance issues."])},load_all:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Loading all ",n(r("emojiAmount"))," emoji"])}},errors:{storage_unavailable:e=>{const{normalize:t}=e;return t(["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."])}},interactions:{favs_repeats:e=>{const{normalize:t}=e;return t(["Repeats and favorites"])},follows:e=>{const{normalize:t}=e;return t(["New follows"])},moves:e=>{const{normalize:t}=e;return t(["User migrates"])},load_older:e=>{const{normalize:t}=e;return t(["Load older interactions"])}},post_status:{new_status:e=>{const{normalize:t}=e;return t(["Post new status"])},account_not_locked_warning:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your account is not ",n(r(0)),". Anyone can follow you to view your follower-only posts."])},account_not_locked_warning_link:e=>{const{normalize:t}=e;return t(["locked"])},attachments_sensitive:e=>{const{normalize:t}=e;return t(["Mark attachments as sensitive"])},media_description:e=>{const{normalize:t}=e;return t(["Media description"])},content_type:{"text/plain":e=>{const{normalize:t}=e;return t(["Plain text"])},"text/html":e=>{const{normalize:t}=e;return t(["HTML"])},"text/markdown":e=>{const{normalize:t}=e;return t(["Markdown"])},"text/bbcode":e=>{const{normalize:t}=e;return t(["BBCode"])},"text/x.misskeymarkdown":e=>{const{normalize:t}=e;return t(["MFM"])}},content_warning:e=>{const{normalize:t}=e;return t(["Subject (optional)"])},default:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},direct_warning_to_all:e=>{const{normalize:t}=e;return t(["This post will be visible to all the mentioned users."])},direct_warning_to_first_only:e=>{const{normalize:t}=e;return t(["This post will only be visible to the mentioned users at the beginning of the message."])},posting:e=>{const{normalize:t}=e;return t(["Posting"])},post:e=>{const{normalize:t}=e;return t(["Post"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},preview_empty:e=>{const{normalize:t}=e;return t(["Empty"])},empty_status_error:e=>{const{normalize:t}=e;return t(["Can't post an empty status with no files"])},media_description_error:e=>{const{normalize:t}=e;return t(["Failed to update media, try again"])},scope_notice:{public:e=>{const{normalize:t}=e;return t(["This post will be visible to everyone"])},private:e=>{const{normalize:t}=e;return t(["This post will be visible to your followers only"])},unlisted:e=>{const{normalize:t}=e;return t(["This post will not be visible in Public Timeline and The Whole Known Network"])},local:e=>{const{normalize:t}=e;return t(["This post will not be visible on other instances"])}},scope:{direct:e=>{const{normalize:t}=e;return t(["Direct - post to mentioned users only"])},private:e=>{const{normalize:t}=e;return t(["Followers-only - post to followers only"])},public:e=>{const{normalize:t}=e;return t(["Public - post to public timelines"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted - do not post to public timelines"])},local:e=>{const{normalize:t}=e;return t(["Local - do not federate this post"])}}},registration:{bio:e=>{const{normalize:t}=e;return t(["Bio"])},email:e=>{const{normalize:t}=e;return t(["Email"])},fullname:e=>{const{normalize:t}=e;return t(["Display name"])},password_confirm:e=>{const{normalize:t}=e;return t(["Password confirmation"])},registration:e=>{const{normalize:t}=e;return t(["Registration"])},token:e=>{const{normalize:t}=e;return t(["Invite token"])},captcha:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},new_captcha:e=>{const{normalize:t}=e;return t(["Click the image to get a new captcha"])},username_placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},fullname_placeholder:e=>{const{normalize:t}=e;return t(["e.g. Lain Iwakura"])},bio_placeholder:e=>{const{normalize:t}=e;return t(["e.g.\nHi, I'm Lain.\nI’m an anime girl living in suburban Japan. You may know me from the Wired."])},reason:e=>{const{normalize:t}=e;return t(["Reason to register"])},reason_placeholder:e=>{const{normalize:t}=e;return t(["This instance approves registrations manually.\nLet the administration know why you want to register."])},register:e=>{const{normalize:t}=e;return t(["Register"])},validations:{username_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},fullname_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},email_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_match:e=>{const{normalize:t}=e;return t(["should be the same as password"])}},email_language:e=>{const{normalize:t}=e;return t(["In which language do you want to receive emails from the server?"])}},remote_user_resolver:{remote_user_resolver:e=>{const{normalize:t}=e;return t(["Remote user resolver"])},searching_for:e=>{const{normalize:t}=e;return t(["Searching for"])},error:e=>{const{normalize:t}=e;return t(["Not found."])}},selectable_list:{select_all:e=>{const{normalize:t}=e;return t(["Select all"])}},settings:{app_name:e=>{const{normalize:t}=e;return t(["App name"])},expert_mode:e=>{const{normalize:t}=e;return t(["Show advanced"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},security:e=>{const{normalize:t}=e;return t(["Security"])},setting_changed:e=>{const{normalize:t}=e;return t(["Setting is different from default"])},setting_server_side:e=>{const{normalize:t}=e;return t(["This setting is tied to your profile and affects all sessions and clients"])},enter_current_password_to_confirm:e=>{const{normalize:t}=e;return t(["Enter your current password to confirm your identity"])},post_look_feel:e=>{const{normalize:t}=e;return t(["Posts Look & Feel"])},mention_links:e=>{const{normalize:t}=e;return t(["Mention links"])},mfa:{otp:e=>{const{normalize:t}=e;return t(["OTP"])},setup_otp:e=>{const{normalize:t}=e;return t(["Setup OTP"])},wait_pre_setup_otp:e=>{const{normalize:t}=e;return t(["presetting OTP"])},confirm_and_enable:e=>{const{normalize:t}=e;return t(["Confirm & enable OTP"])},title:e=>{const{normalize:t}=e;return t(["Two-factor Authentication"])},generate_new_recovery_codes:e=>{const{normalize:t}=e;return t(["Generate new recovery codes"])},warning_of_generate_new_codes:e=>{const{normalize:t}=e;return t(["When you generate new recovery codes, your old codes won’t work anymore."])},recovery_codes:e=>{const{normalize:t}=e;return t(["Recovery codes."])},waiting_a_recovery_codes:e=>{const{normalize:t}=e;return t(["Receiving backup codes…"])},recovery_codes_warning:e=>{const{normalize:t}=e;return t(["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."])},authentication_methods:e=>{const{normalize:t}=e;return t(["Authentication methods"])},scan:{title:e=>{const{normalize:t}=e;return t(["Scan"])},desc:e=>{const{normalize:t}=e;return t(["Using your two-factor app, scan this QR code or enter text key:"])},secret_code:e=>{const{normalize:t}=e;return t(["Key"])}},verify:{desc:e=>{const{normalize:t}=e;return t(["To enable two-factor authentication, enter the code from your two-factor app:"])}}},allow_following_move:e=>{const{normalize:t}=e;return t(["Allow auto-follow when following account moves"])},attachmentRadius:e=>{const{normalize:t}=e;return t(["Attachments"])},attachments:e=>{const{normalize:t}=e;return t(["Attachments"])},avatar:e=>{const{normalize:t}=e;return t(["Avatar"])},avatarAltRadius:e=>{const{normalize:t}=e;return t(["Avatars (notifications)"])},avatarRadius:e=>{const{normalize:t}=e;return t(["Avatars"])},background:e=>{const{normalize:t}=e;return t(["Background"])},bio:e=>{const{normalize:t}=e;return t(["Bio"])},email_language:e=>{const{normalize:t}=e;return t(["Language for receiving emails from the server"])},block_export:e=>{const{normalize:t}=e;return t(["Block export"])},block_export_button:e=>{const{normalize:t}=e;return t(["Export your blocks to a csv file"])},block_import:e=>{const{normalize:t}=e;return t(["Block import"])},block_import_error:e=>{const{normalize:t}=e;return t(["Error importing blocks"])},blocks_imported:e=>{const{normalize:t}=e;return t(["Blocks imported! Processing them will take a while."])},mute_export:e=>{const{normalize:t}=e;return t(["Mute export"])},mute_export_button:e=>{const{normalize:t}=e;return t(["Export your mutes to a csv file"])},mute_import:e=>{const{normalize:t}=e;return t(["Mute import"])},mute_import_error:e=>{const{normalize:t}=e;return t(["Error importing mutes"])},mutes_imported:e=>{const{normalize:t}=e;return t(["Mutes imported! Processing them will take a while."])},import_mutes_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import mutes from a csv file"])},blocks_tab:e=>{const{normalize:t}=e;return t(["Blocks"])},bot:e=>{const{normalize:t}=e;return t(["This is a bot account"])},btnRadius:e=>{const{normalize:t}=e;return t(["Buttons"])},cBlue:e=>{const{normalize:t}=e;return t(["Blue (Reply, follow)"])},cGreen:e=>{const{normalize:t}=e;return t(["Green (Retweet)"])},cOrange:e=>{const{normalize:t}=e;return t(["Orange (Favorite)"])},cRed:e=>{const{normalize:t}=e;return t(["Red (Cancel)"])},change_email:e=>{const{normalize:t}=e;return t(["Change email"])},change_email_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your email."])},changed_email:e=>{const{normalize:t}=e;return t(["Email changed successfully!"])},change_password:e=>{const{normalize:t}=e;return t(["Change password"])},change_password_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your password."])},changed_password:e=>{const{normalize:t}=e;return t(["Password changed successfully!"])},chatMessageRadius:e=>{const{normalize:t}=e;return t(["Chat message"])},collapse_subject:e=>{const{normalize:t}=e;return t(["Collapse posts with subjects"])},composing:e=>{const{normalize:t}=e;return t(["Composing"])},confirm_new_password:e=>{const{normalize:t}=e;return t(["Confirm new password"])},current_avatar:e=>{const{normalize:t}=e;return t(["Your current avatar"])},current_mascot:e=>{const{normalize:t}=e;return t(["Your current mascot"])},current_password:e=>{const{normalize:t}=e;return t(["Current password"])},mutes_and_blocks:e=>{const{normalize:t}=e;return t(["Mutes and Blocks"])},data_import_export_tab:e=>{const{normalize:t}=e;return t(["Data import / export"])},default_vis:e=>{const{normalize:t}=e;return t(["Default visibility scope"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},delete_account_description:e=>{const{normalize:t}=e;return t(["Permanently delete your data and deactivate your account."])},delete_account_error:e=>{const{normalize:t}=e;return t(["There was an issue deleting your account. If this persists please contact your instance administrator."])},delete_account_instructions:e=>{const{normalize:t}=e;return t(["Type your password in the input below to confirm account deletion."])},discoverable:e=>{const{normalize:t}=e;return t(["Allow discovery of this account in search results and other services"])},domain_mutes:e=>{const{normalize:t}=e;return t(["Domains"])},avatar_size_instruction:e=>{const{normalize:t}=e;return t(["The recommended minimum size for avatar images is 150x150 pixels."])},pad_emoji:e=>{const{normalize:t}=e;return t(["Pad emoji with spaces when adding from picker"])},emoji_reactions_on_timeline:e=>{const{normalize:t}=e;return t(["Show emoji reactions on timeline"])},export_theme:e=>{const{normalize:t}=e;return t(["Save preset"])},filtering:e=>{const{normalize:t}=e;return t(["Filtering"])},wordfilter:e=>{const{normalize:t}=e;return t(["Wordfilter"])},filtering_explanation:e=>{const{normalize:t}=e;return t(["All statuses containing these words will be muted, one per line"])},word_filter:e=>{const{normalize:t}=e;return t(["Word filter"])},follow_export:e=>{const{normalize:t}=e;return t(["Follow export"])},follow_export_button:e=>{const{normalize:t}=e;return t(["Export your follows to a csv file"])},follow_import:e=>{const{normalize:t}=e;return t(["Follow import"])},follow_import_error:e=>{const{normalize:t}=e;return t(["Error importing followers"])},follows_imported:e=>{const{normalize:t}=e;return t(["Follows imported! Processing them will take a while."])},accent:e=>{const{normalize:t}=e;return t(["Accent"])},foreground:e=>{const{normalize:t}=e;return t(["Foreground"])},general:e=>{const{normalize:t}=e;return t(["General"])},hide_attachments_in_convo:e=>{const{normalize:t}=e;return t(["Hide attachments in conversations"])},hide_attachments_in_tl:e=>{const{normalize:t}=e;return t(["Hide attachments in timeline"])},hide_media_previews:e=>{const{normalize:t}=e;return t(["Hide media previews"])},hide_muted_posts:e=>{const{normalize:t}=e;return t(["Hide posts of muted users"])},mute_bot_posts:e=>{const{normalize:t}=e;return t(["Mute bot posts"])},hide_bot_indication:e=>{const{normalize:t}=e;return t(["Hide bot indication in posts"])},hide_all_muted_posts:e=>{const{normalize:t}=e;return t(["Hide muted posts"])},max_thumbnails:e=>{const{normalize:t}=e;return t(["Maximum amount of thumbnails per post (empty = no limit)"])},hide_isp:e=>{const{normalize:t}=e;return t(["Hide instance-specific panel"])},hide_shoutbox:e=>{const{normalize:t}=e;return t(["Hide instance shoutbox"])},right_sidebar:e=>{const{normalize:t}=e;return t(["Reverse order of columns"])},always_show_post_button:e=>{const{normalize:t}=e;return t(["Always show floating New Post button"])},hide_wallpaper:e=>{const{normalize:t}=e;return t(["Hide instance wallpaper"])},preload_images:e=>{const{normalize:t}=e;return t(["Preload images"])},use_one_click_nsfw:e=>{const{normalize:t}=e;return t(["Open NSFW attachments with just one click"])},hide_post_stats:e=>{const{normalize:t}=e;return t(["Hide post statistics (e.g. the number of favorites)"])},hide_user_stats:e=>{const{normalize:t}=e;return t(["Hide user statistics (e.g. the number of followers)"])},hide_filtered_statuses:e=>{const{normalize:t}=e;return t(["Hide all filtered posts"])},hide_wordfiltered_statuses:e=>{const{normalize:t}=e;return t(["Hide word-filtered statuses"])},hide_muted_threads:e=>{const{normalize:t}=e;return t(["Hide muted threads"])},import_blocks_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import blocks from a csv file"])},import_followers_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import follows from a csv file"])},import_theme:e=>{const{normalize:t}=e;return t(["Load preset"])},inputRadius:e=>{const{normalize:t}=e;return t(["Input fields"])},checkboxRadius:e=>{const{normalize:t}=e;return t(["Checkboxes"])},instance_default:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["(default: ",n(r("value")),")"])},instance_default_simple:e=>{const{normalize:t}=e;return t(["(default)"])},interface:e=>{const{normalize:t}=e;return t(["Interface"])},interfaceLanguage:e=>{const{normalize:t}=e;return t(["Interface language"])},invalid_theme_imported:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma theme. No changes to your theme were made."])},limited_availability:e=>{const{normalize:t}=e;return t(["Unavailable in your browser"])},links:e=>{const{normalize:t}=e;return t(["Links"])},lock_account_description:e=>{const{normalize:t}=e;return t(["Restrict your account to approved followers only"])},loop_video:e=>{const{normalize:t}=e;return t(["Loop videos"])},loop_video_silent_only:e=>{const{normalize:t}=e;return t(['Loop only videos without sound (i.e. Mastodon\'s "gifs")'])},mutes_tab:e=>{const{normalize:t}=e;return t(["Mutes"])},play_videos_in_modal:e=>{const{normalize:t}=e;return t(["Play videos in a popup frame"])},file_export_import:{backup_restore:e=>{const{normalize:t}=e;return t(["Settings backup"])},backup_settings:e=>{const{normalize:t}=e;return t(["Backup settings to file"])},backup_settings_theme:e=>{const{normalize:t}=e;return t(["Backup settings and theme to file"])},restore_settings:e=>{const{normalize:t}=e;return t(["Restore settings from file"])},errors:{invalid_file:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma settings backup. No changes were made."])},file_too_new:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", this PleromaFE (settings ver ",n(r("feMajor")),") is too old to handle it"])},file_too_old:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Incompatile major version: ",n(r("fileMajor")),", file version is too old and not supported (min. set. ver. ",n(r("feMajor")),")"])},file_slightly_new:e=>{const{normalize:t}=e;return t(["File minor version is different, some settings might not load"])}}},profile_fields:{label:e=>{const{normalize:t}=e;return t(["Profile metadata"])},add_field:e=>{const{normalize:t}=e;return t(["Add field"])},name:e=>{const{normalize:t}=e;return t(["Label"])},value:e=>{const{normalize:t}=e;return t(["Content"])}},account_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},use_contain_fit:e=>{const{normalize:t}=e;return t(["Don't crop the attachment in thumbnails"])},name:e=>{const{normalize:t}=e;return t(["Name"])},name_bio:e=>{const{normalize:t}=e;return t(["Name & bio"])},new_email:e=>{const{normalize:t}=e;return t(["New email"])},new_password:e=>{const{normalize:t}=e;return t(["New password"])},posts:e=>{const{normalize:t}=e;return t(["Posts"])},user_profiles:e=>{const{normalize:t}=e;return t(["User Profiles"])},notification_visibility:e=>{const{normalize:t}=e;return t(["Types of notifications to show"])},notification_visibility_follows:e=>{const{normalize:t}=e;return t(["Follows"])},notification_visibility_likes:e=>{const{normalize:t}=e;return t(["Favorites"])},notification_visibility_mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},notification_visibility_repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},notification_visibility_moves:e=>{const{normalize:t}=e;return t(["User Migrates"])},notification_visibility_emoji_reactions:e=>{const{normalize:t}=e;return t(["Reactions"])},notification_visibility_polls:e=>{const{normalize:t}=e;return t(["Ends of polls you voted in"])},no_rich_text_description:e=>{const{normalize:t}=e;return t(["Strip rich text formatting from all posts"])},no_blocks:e=>{const{normalize:t}=e;return t(["No blocks"])},no_mutes:e=>{const{normalize:t}=e;return t(["No mutes"])},hide_favorites_description:e=>{const{normalize:t}=e;return t(["Don't show list of my favorites (people still get notified)"])},hide_follows_description:e=>{const{normalize:t}=e;return t(["Don't show who I'm following"])},hide_followers_description:e=>{const{normalize:t}=e;return t(["Don't show who's following me"])},hide_follows_count_description:e=>{const{normalize:t}=e;return t(["Don't show follow count"])},hide_followers_count_description:e=>{const{normalize:t}=e;return t(["Don't show follower count"])},show_admin_badge:e=>{const{normalize:t}=e;return t(['Show "Admin" badge in my profile'])},show_moderator_badge:e=>{const{normalize:t}=e;return t(['Show "Moderator" badge in my profile'])},nsfw_clickthrough:e=>{const{normalize:t}=e;return t(["Hide sensitive/NSFW media"])},oauth_tokens:e=>{const{normalize:t}=e;return t(["OAuth tokens"])},token:e=>{const{normalize:t}=e;return t(["Token"])},refresh_token:e=>{const{normalize:t}=e;return t(["Refresh token"])},valid_until:e=>{const{normalize:t}=e;return t(["Valid until"])},revoke_token:e=>{const{normalize:t}=e;return t(["Revoke"])},panelRadius:e=>{const{normalize:t}=e;return t(["Panels"])},pause_on_unfocused:e=>{const{normalize:t}=e;return t(["Pause when tab is not focused"])},presets:e=>{const{normalize:t}=e;return t(["Presets"])},profile_background:e=>{const{normalize:t}=e;return t(["Profile background"])},profile_banner:e=>{const{normalize:t}=e;return t(["Profile banner"])},profile_tab:e=>{const{normalize:t}=e;return t(["Profile"])},radii_help:e=>{const{normalize:t}=e;return t(["Set up interface edge rounding (in pixels)"])},replies_in_timeline:e=>{const{normalize:t}=e;return t(["Replies in timeline"])},reply_visibility_all:e=>{const{normalize:t}=e;return t(["Show all replies"])},reply_visibility_following:e=>{const{normalize:t}=e;return t(["Only show replies directed at me or users I'm following"])},reply_visibility_self:e=>{const{normalize:t}=e;return t(["Only show replies directed at me"])},reply_visibility_following_short:e=>{const{normalize:t}=e;return t(["Show replies to my follows"])},reply_visibility_self_short:e=>{const{normalize:t}=e;return t(["Show replies to self only"])},autohide_floating_post_button:e=>{const{normalize:t}=e;return t(["Automatically hide New Post button (mobile)"])},saving_err:e=>{const{normalize:t}=e;return t(["Error saving settings"])},saving_ok:e=>{const{normalize:t}=e;return t(["Settings saved"])},search_user_to_block:e=>{const{normalize:t}=e;return t(["Search whom you want to block"])},search_user_to_mute:e=>{const{normalize:t}=e;return t(["Search whom you want to mute"])},security_tab:e=>{const{normalize:t}=e;return t(["Security"])},scope_copy:e=>{const{normalize:t}=e;return t(["Copy scope when replying (DMs are always copied)"])},mascot:e=>{const{normalize:t}=e;return t(["Mastodon FE Mascot"])},minimal_scopes_mode:e=>{const{normalize:t}=e;return t(["Minimize post scope selection options"])},set_new_avatar:e=>{const{normalize:t}=e;return t(["Set new avatar"])},set_new_mascot:e=>{const{normalize:t}=e;return t(["Set new mascot"])},set_new_profile_background:e=>{const{normalize:t}=e;return t(["Set new profile background"])},set_new_profile_banner:e=>{const{normalize:t}=e;return t(["Set new profile banner"])},reset_avatar:e=>{const{normalize:t}=e;return t(["Reset avatar"])},reset_profile_background:e=>{const{normalize:t}=e;return t(["Reset profile background"])},reset_profile_banner:e=>{const{normalize:t}=e;return t(["Reset profile banner"])},reset_avatar_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the avatar?"])},reset_banner_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the banner?"])},reset_background_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the background?"])},settings:e=>{const{normalize:t}=e;return t(["Settings"])},subject_input_always_show:e=>{const{normalize:t}=e;return t(["Always show subject field"])},subject_line_behavior:e=>{const{normalize:t}=e;return t(["Copy subject when replying"])},subject_line_email:e=>{const{normalize:t}=e;return t(['Like email: "re: subject"'])},subject_line_mastodon:e=>{const{normalize:t}=e;return t(["Like mastodon: copy as is"])},subject_line_noop:e=>{const{normalize:t}=e;return t(["Do not copy"])},conversation_display:e=>{const{normalize:t}=e;return t(["Conversation display style"])},conversation_display_tree:e=>{const{normalize:t}=e;return t(["Tree-style"])},disable_sticky_headers:e=>{const{normalize:t}=e;return t(["Don't stick column headers to top of the screen"])},show_scrollbars:e=>{const{normalize:t}=e;return t(["Show side column's scrollbars"])},third_column_mode:e=>{const{normalize:t}=e;return t(["When there's enough space, show third column containing"])},third_column_mode_none:e=>{const{normalize:t}=e;return t(["Don't show third column at all"])},third_column_mode_notifications:e=>{const{normalize:t}=e;return t(["Notifications column"])},third_column_mode_postform:e=>{const{normalize:t}=e;return t(["Main post form and navigation"])},tree_advanced:e=>{const{normalize:t}=e;return t(["Allow more flexible navigation in tree view"])},tree_fade_ancestors:e=>{const{normalize:t}=e;return t(["Display ancestors of the current status in faint text"])},conversation_display_linear:e=>{const{normalize:t}=e;return t(["Linear-style"])},conversation_other_replies_button:e=>{const{normalize:t}=e;return t(['Show the "other replies" button'])},conversation_other_replies_button_below:e=>{const{normalize:t}=e;return t(["Below statuses"])},conversation_other_replies_button_inside:e=>{const{normalize:t}=e;return t(["Inside statuses"])},max_depth_in_thread:e=>{const{normalize:t}=e;return t(["Maximum number of levels in thread to display by default"])},post_status_content_type:e=>{const{normalize:t}=e;return t(["Post status content type"])},sensitive_by_default:e=>{const{normalize:t}=e;return t(["Mark posts as sensitive by default"])},sensitive_if_subject:e=>{const{normalize:t}=e;return t(["Automatically mark images as sensitive if a subject line is specified"])},render_mfm:e=>{const{normalize:t}=e;return t(["Render Misskey Markdown"])},useStreamingApiWarning:e=>{const{normalize:t}=e;return t(["It's cool use it. If it breaks refresh I guess?"])},stop_gifs:e=>{const{normalize:t}=e;return t(["Pause animated images until you hover on them"])},streaming:e=>{const{normalize:t}=e;return t(["Automatically show new posts when scrolled to the top"])},user_mutes:e=>{const{normalize:t}=e;return t(["Users"])},useStreamingApi:e=>{const{normalize:t}=e;return t(["Receive posts and notifications real-time"])},text:e=>{const{normalize:t}=e;return t(["Text"])},theme:e=>{const{normalize:t}=e;return t(["Theme"])},theme_help:e=>{const{normalize:t}=e;return t(["Use hex color codes (#rrggbb) to customize your color theme."])},theme_help_v2_1:e=>{const{normalize:t}=e;return t(['You can also override certain component\'s colors and opacity by toggling the checkbox, use "Clear all" button to clear all overrides.'])},theme_help_v2_2:e=>{const{normalize:t}=e;return t(["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."])},tooltipRadius:e=>{const{normalize:t}=e;return t(["Tooltips/alerts"])},type_domains_to_mute:e=>{const{normalize:t}=e;return t(["Search domains to mute"])},upload_a_photo:e=>{const{normalize:t}=e;return t(["Upload a photo"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},values:{false:e=>{const{normalize:t}=e;return t(["no"])},true:e=>{const{normalize:t}=e;return t(["yes"])}},virtual_scrolling:e=>{const{normalize:t}=e;return t(["Optimize timeline rendering"])},use_at_icon:e=>{const{normalize:t}=e;return t(["Display ","@"," symbol as an icon instead of text"])},mention_link_display:e=>{const{normalize:t}=e;return t(["Display mention links"])},mention_link_display_short:e=>{const{normalize:t}=e;return t(["always as short names (e.g. ","@","foo)"])},mention_link_display_full_for_remote:e=>{const{normalize:t}=e;return t(["as full names only for remote users (e.g. ","@","foo","@","example.org)"])},mention_link_display_full:e=>{const{normalize:t}=e;return t(["always as full names (e.g. ","@","foo","@","example.org)"])},mention_link_show_tooltip:e=>{const{normalize:t}=e;return t(["Show full user names as tooltip for remote users"])},mention_link_show_avatar:e=>{const{normalize:t}=e;return t(["Show user avatar beside the link"])},mention_link_fade_domain:e=>{const{normalize:t}=e;return t(["Fade domains (e.g. ","@","example.org in ","@","foo","@","example.org)"])},mention_link_bolden_you:e=>{const{normalize:t}=e;return t(["Highlight mention of you when you are mentioned"])},fun:e=>{const{normalize:t}=e;return t(["Fun"])},greentext:e=>{const{normalize:t}=e;return t(["Meme arrows"])},show_yous:e=>{const{normalize:t}=e;return t(["Show (You)s"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},notification_setting_filters:e=>{const{normalize:t}=e;return t(["Filters"])},notification_setting_block_from_strangers:e=>{const{normalize:t}=e;return t(["Block notifications from users who you do not follow"])},notification_setting_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},notification_setting_hide_notification_contents:e=>{const{normalize:t}=e;return t(["Hide the sender and contents of push notifications"])},notification_mutes:e=>{const{normalize:t}=e;return t(["To stop receiving notifications from a specific user, use a mute."])},notification_blocks:e=>{const{normalize:t}=e;return t(["Blocking a user stops all notifications as well as unsubscribes them."])},enable_web_push_notifications:e=>{const{normalize:t}=e;return t(["Enable web push notifications"])},more_settings:e=>{const{normalize:t}=e;return t(["More settings"])},style:{switcher:{keep_color:e=>{const{normalize:t}=e;return t(["Keep colors"])},keep_shadows:e=>{const{normalize:t}=e;return t(["Keep shadows"])},keep_opacity:e=>{const{normalize:t}=e;return t(["Keep opacity"])},keep_roundness:e=>{const{normalize:t}=e;return t(["Keep roundness"])},keep_fonts:e=>{const{normalize:t}=e;return t(["Keep fonts"])},save_load_hint:e=>{const{normalize:t}=e;return t(['"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.'])},reset:e=>{const{normalize:t}=e;return t(["Reset"])},clear_all:e=>{const{normalize:t}=e;return t(["Clear all"])},clear_opacity:e=>{const{normalize:t}=e;return t(["Clear opacity"])},load_theme:e=>{const{normalize:t}=e;return t(["Load theme"])},keep_as_is:e=>{const{normalize:t}=e;return t(["Keep as is"])},use_snapshot:e=>{const{normalize:t}=e;return t(["Old version"])},use_source:e=>{const{normalize:t}=e;return t(["New version"])},help:{upgraded_from_v2:e=>{const{normalize:t}=e;return t(["PleromaFE has been upgraded, theme could look a little bit different than you remember."])},v2_imported:e=>{const{normalize:t}=e;return t(["File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies."])},future_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in newer version of FE."])},older_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in older version of FE."])},snapshot_present:e=>{const{normalize:t}=e;return t(["Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead."])},snapshot_missing:e=>{const{normalize:t}=e;return t(["No theme snapshot was in the file so it could look different than originally envisioned."])},fe_upgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's theme engine upgraded after version update."])},fe_downgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's version rolled back."])},migration_snapshot_ok:e=>{const{normalize:t}=e;return t(["Just to be safe, theme snapshot loaded. You can try loading theme data."])},migration_napshot_gone:e=>{const{normalize:t}=e;return t(["For whatever reason snapshot was missing, some stuff could look different than you remember."])},snapshot_source_mismatch:e=>{const{normalize:t}=e;return t(["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."])}}},common:{color:e=>{const{normalize:t}=e;return t(["Color"])},opacity:e=>{const{normalize:t}=e;return t(["Opacity"])},contrast:{hint:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Contrast ratio is ",n(r("ratio")),", it ",n(r("level"))," ",n(r("context"))])},level:{aa:e=>{const{normalize:t}=e;return t(["meets Level AA guideline (minimal)"])},aaa:e=>{const{normalize:t}=e;return t(["meets Level AAA guideline (recommended)"])},bad:e=>{const{normalize:t}=e;return t(["doesn't meet any accessibility guidelines"])}},context:{"18pt":e=>{const{normalize:t}=e;return t(["for large (18pt+) text"])},text:e=>{const{normalize:t}=e;return t(["for text"])}}}},common_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Common"])},main:e=>{const{normalize:t}=e;return t(["Common colors"])},foreground_hint:e=>{const{normalize:t}=e;return t(['See "Advanced" tab for more detailed control'])},rgbo:e=>{const{normalize:t}=e;return t(["Icons, accents, badges"])}},advanced_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Advanced"])},alert:e=>{const{normalize:t}=e;return t(["Alert background"])},alert_error:e=>{const{normalize:t}=e;return t(["Error"])},alert_warning:e=>{const{normalize:t}=e;return t(["Warning"])},alert_neutral:e=>{const{normalize:t}=e;return t(["Neutral"])},post:e=>{const{normalize:t}=e;return t(["Posts/User bios"])},badge:e=>{const{normalize:t}=e;return t(["Badge background"])},popover:e=>{const{normalize:t}=e;return t(["Tooltips, menus, popovers"])},badge_notification:e=>{const{normalize:t}=e;return t(["Notification"])},panel_header:e=>{const{normalize:t}=e;return t(["Panel header"])},top_bar:e=>{const{normalize:t}=e;return t(["Top bar"])},borders:e=>{const{normalize:t}=e;return t(["Borders"])},buttons:e=>{const{normalize:t}=e;return t(["Buttons"])},inputs:e=>{const{normalize:t}=e;return t(["Input fields"])},faint_text:e=>{const{normalize:t}=e;return t(["Faded text"])},underlay:e=>{const{normalize:t}=e;return t(["Underlay"])},wallpaper:e=>{const{normalize:t}=e;return t(["Wallpaper"])},poll:e=>{const{normalize:t}=e;return t(["Poll graph"])},icons:e=>{const{normalize:t}=e;return t(["Icons"])},highlight:e=>{const{normalize:t}=e;return t(["Highlighted elements"])},pressed:e=>{const{normalize:t}=e;return t(["Pressed"])},selectedPost:e=>{const{normalize:t}=e;return t(["Selected post"])},selectedMenu:e=>{const{normalize:t}=e;return t(["Selected menu item"])},disabled:e=>{const{normalize:t}=e;return t(["Disabled"])},toggled:e=>{const{normalize:t}=e;return t(["Toggled"])},tabs:e=>{const{normalize:t}=e;return t(["Tabs"])},chat:{incoming:e=>{const{normalize:t}=e;return t(["Incoming"])},outgoing:e=>{const{normalize:t}=e;return t(["Outgoing"])},border:e=>{const{normalize:t}=e;return t(["Border"])}}},radii:{_tab_label:e=>{const{normalize:t}=e;return t(["Roundness"])}},shadows:{_tab_label:e=>{const{normalize:t}=e;return t(["Shadow and lighting"])},component:e=>{const{normalize:t}=e;return t(["Component"])},override:e=>{const{normalize:t}=e;return t(["Override"])},shadow_id:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Shadow #",n(r("value"))])},blur:e=>{const{normalize:t}=e;return t(["Blur"])},spread:e=>{const{normalize:t}=e;return t(["Spread"])},inset:e=>{const{normalize:t}=e;return t(["Inset"])},hintV3:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["For shadows you can also use the ",n(r(0))," notation to use other color slot."])},filter_hint:{always_drop_shadow:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Warning, this shadow always uses ",n(r(0))," when browser supports it."])},drop_shadow_syntax:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," does not support ",n(r(1))," parameter and ",n(r(2))," keyword."])},avatar_inset:e=>{const{normalize:t}=e;return t(["Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars."])},spread_zero:e=>{const{normalize:t}=e;return t(["Shadows with spread > 0 will appear as if it was set to zero"])},inset_classic:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Inset shadows will be using ",n(r(0))])}},components:{panel:e=>{const{normalize:t}=e;return t(["Panel"])},panelHeader:e=>{const{normalize:t}=e;return t(["Panel header"])},topBar:e=>{const{normalize:t}=e;return t(["Top bar"])},avatar:e=>{const{normalize:t}=e;return t(["User avatar (in profile view)"])},avatarStatus:e=>{const{normalize:t}=e;return t(["User avatar (in post display)"])},popup:e=>{const{normalize:t}=e;return t(["Popups and tooltips"])},button:e=>{const{normalize:t}=e;return t(["Button"])},buttonHover:e=>{const{normalize:t}=e;return t(["Button (hover)"])},buttonPressed:e=>{const{normalize:t}=e;return t(["Button (pressed)"])},buttonPressedHover:e=>{const{normalize:t}=e;return t(["Button (pressed+hover)"])},input:e=>{const{normalize:t}=e;return t(["Input field"])}}},fonts:{_tab_label:e=>{const{normalize:t}=e;return t(["Fonts"])},help:e=>{const{normalize:t}=e;return t(['Select font to use for elements of UI. For "custom" you have to enter exact font name as it appears in system.'])},components:{interface:e=>{const{normalize:t}=e;return t(["Interface"])},input:e=>{const{normalize:t}=e;return t(["Input fields"])},post:e=>{const{normalize:t}=e;return t(["Post text"])},postCode:e=>{const{normalize:t}=e;return t(["Monospaced text in a post (rich text)"])}},family:e=>{const{normalize:t}=e;return t(["Font name"])},size:e=>{const{normalize:t}=e;return t(["Size (in px)"])},weight:e=>{const{normalize:t}=e;return t(["Weight (boldness)"])},custom:e=>{const{normalize:t}=e;return t(["Custom"])}},preview:{header:e=>{const{normalize:t}=e;return t(["Preview"])},content:e=>{const{normalize:t}=e;return t(["Content"])},error:e=>{const{normalize:t}=e;return t(["Example error"])},button:e=>{const{normalize:t}=e;return t(["Button"])},text:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["A bunch of more ",n(r(0))," and ",n(r(1))])},mono:e=>{const{normalize:t}=e;return t(["content"])},input:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},faint_link:e=>{const{normalize:t}=e;return t(["helpful manual"])},fine_print:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Read our ",n(r(0))," to learn nothing useful!"])},header_faint:e=>{const{normalize:t}=e;return t(["This is fine"])},checkbox:e=>{const{normalize:t}=e;return t(["I have skimmed over terms and conditions"])},link:e=>{const{normalize:t}=e;return t(["a nice lil' link"])}}},version:{title:e=>{const{normalize:t}=e;return t(["Version"])},backend_version:e=>{const{normalize:t}=e;return t(["Backend version"])},frontend_version:e=>{const{normalize:t}=e;return t(["Frontend version"])}}},time:{day:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," day"])},days:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," days"])},day_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},days_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"d"])},hour:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hour"])},hours:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," hours"])},hour_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},hours_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"h"])},in_future:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["in ",n(r(0))])},in_past:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," ago"])},minute:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minute"])},minutes:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," minutes"])},minute_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},minutes_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"min"])},month:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," month"])},months:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," months"])},month_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},months_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"mo"])},now:e=>{const{normalize:t}=e;return t(["just now"])},now_short:e=>{const{normalize:t}=e;return t(["now"])},second:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," second"])},seconds:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," seconds"])},second_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},seconds_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"s"])},week:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," week"])},weeks:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," weeks"])},week_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},weeks_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"w"])},year:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," year"])},years:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0))," years"])},year_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])},years_short:e=>{const{normalize:t,interpolate:n,list:r}=e;return t([n(r(0)),"y"])}},timeline:{collapse:e=>{const{normalize:t}=e;return t(["Collapse"])},conversation:e=>{const{normalize:t}=e;return t(["Conversation"])},error:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Error fetching timeline: ",n(r(0))])},load_older:e=>{const{normalize:t}=e;return t(["Load older statuses"])},no_retweet_hint:e=>{const{normalize:t}=e;return t(["Post is marked as followers-only or direct and cannot be repeated"])},repeated:e=>{const{normalize:t}=e;return t(["repeated"])},show_new:e=>{const{normalize:t}=e;return t(["Show new"])},reload:e=>{const{normalize:t}=e;return t(["Reload"])},up_to_date:e=>{const{normalize:t}=e;return t(["Up-to-date"])},no_more_statuses:e=>{const{normalize:t}=e;return t(["No more statuses"])},no_statuses:e=>{const{normalize:t}=e;return t(["No statuses"])},socket_reconnected:e=>{const{normalize:t}=e;return t(["Realtime connection established"])},socket_broke:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Realtime connection lost: CloseEvent code ",n(r(0))])}},status:{favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},delete:e=>{const{normalize:t}=e;return t(["Delete status"])},pin:e=>{const{normalize:t}=e;return t(["Pin on profile"])},unpin:e=>{const{normalize:t}=e;return t(["Unpin from profile"])},pinned:e=>{const{normalize:t}=e;return t(["Pinned"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},unbookmark:e=>{const{normalize:t}=e;return t(["Unbookmark"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this status?"])},reply_to:e=>{const{normalize:t}=e;return t(["Reply to"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},replies_list:e=>{const{normalize:t}=e;return t(["Replies:"])},replies_list_with_others:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Replies (+",n(r("numReplies"))," other):"]),t(["Replies (+",n(r("numReplies"))," others):"])])},mute_conversation:e=>{const{normalize:t}=e;return t(["Mute conversation"])},unmute_conversation:e=>{const{normalize:t}=e;return t(["Unmute conversation"])},status_unavailable:e=>{const{normalize:t}=e;return t(["Status unavailable"])},copy_link:e=>{const{normalize:t}=e;return t(["Copy link to status"])},external_source:e=>{const{normalize:t}=e;return t(["External source"])},thread_muted:e=>{const{normalize:t}=e;return t(["Thread muted"])},thread_muted_and_words:e=>{const{normalize:t}=e;return t([", has words:"])},show_full_subject:e=>{const{normalize:t}=e;return t(["Show full subject"])},hide_full_subject:e=>{const{normalize:t}=e;return t(["Hide full subject"])},show_content:e=>{const{normalize:t}=e;return t(["Show content"])},hide_content:e=>{const{normalize:t}=e;return t(["Hide content"])},status_deleted:e=>{const{normalize:t}=e;return t(["This post was deleted"])},nsfw:e=>{const{normalize:t}=e;return t(["NSFW"])},expand:e=>{const{normalize:t}=e;return t(["Expand"])},you:e=>{const{normalize:t}=e;return t(["(You)"])},plus_more:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["+",n(r("number"))," more"])},many_attachments:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Post has ",n(r("number"))," attachment(s)"])},collapse_attachments:e=>{const{normalize:t}=e;return t(["Collapse attachments"])},show_all_attachments:e=>{const{normalize:t}=e;return t(["Show all attachments"])},show_attachment_in_modal:e=>{const{normalize:t}=e;return t(["Show in media modal"])},show_attachment_description:e=>{const{normalize:t}=e;return t(["Preview description (open attachment for full description)"])},hide_attachment:e=>{const{normalize:t}=e;return t(["Hide attachment"])},remove_attachment:e=>{const{normalize:t}=e;return t(["Remove attachment"])},attachment_stop_flash:e=>{const{normalize:t}=e;return t(["Stop Flash player"])},move_up:e=>{const{normalize:t}=e;return t(["Shift attachment left"])},move_down:e=>{const{normalize:t}=e;return t(["Shift attachment right"])},open_gallery:e=>{const{normalize:t}=e;return t(["Open gallery"])},thread_hide:e=>{const{normalize:t}=e;return t(["Hide this thread"])},thread_show:e=>{const{normalize:t}=e;return t(["Show this thread"])},thread_show_full:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show everything under this thread (",n(r("numStatus"))," status in total, max depth ",n(r("depth")),")"]),t(["Show everything under this thread (",n(r("numStatus"))," statuses in total, max depth ",n(r("depth")),")"])])},thread_show_full_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},thread_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See the remaining part of this thread (",n(r("numStatus"))," status in total)"]),t(["See the remaining part of this thread (",n(r("numStatus"))," statuses in total)"])])},thread_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},ancestor_follow:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["See ",n(r("numReplies"))," other reply under this status"]),t(["See ",n(r("numReplies"))," other replies under this status"])])},ancestor_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation_with_icon:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("icon"))," ",n(r("text"))])},show_all_conversation:e=>{const{normalize:t,interpolate:n,named:r,plural:i}=e;return i([t(["Show full conversation (",n(r("numStatus"))," other status)"]),t(["Show full conversation (",n(r("numStatus"))," other statuses)"])])},show_only_conversation_under_this:e=>{const{normalize:t}=e;return t(["Only show replies to this status"])}},user_card:{approve:e=>{const{normalize:t}=e;return t(["Approve"])},block:e=>{const{normalize:t}=e;return t(["Block"])},blocked:e=>{const{normalize:t}=e;return t(["Blocked!"])},deactivated:e=>{const{normalize:t}=e;return t(["Deactivated"])},deny:e=>{const{normalize:t}=e;return t(["Deny"])},edit_profile:e=>{const{normalize:t}=e;return t(["Edit profile"])},favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},follow:e=>{const{normalize:t}=e;return t(["Follow"])},follow_cancel:e=>{const{normalize:t}=e;return t(["Cancel request"])},follow_sent:e=>{const{normalize:t}=e;return t(["Request sent!"])},follow_progress:e=>{const{normalize:t}=e;return t(["Requesting…"])},follow_unfollow:e=>{const{normalize:t}=e;return t(["Unfollow"])},followees:e=>{const{normalize:t}=e;return t(["Following"])},followers:e=>{const{normalize:t}=e;return t(["Followers"])},following:e=>{const{normalize:t}=e;return t(["Following!"])},follows_you:e=>{const{normalize:t}=e;return t(["Follows you!"])},hidden:e=>{const{normalize:t}=e;return t(["Hidden"])},its_you:e=>{const{normalize:t}=e;return t(["It's you!"])},media:e=>{const{normalize:t}=e;return t(["Media"])},mention:e=>{const{normalize:t}=e;return t(["Mention"])},message:e=>{const{normalize:t}=e;return t(["Message"])},mute:e=>{const{normalize:t}=e;return t(["Mute"])},muted:e=>{const{normalize:t}=e;return t(["Muted"])},per_day:e=>{const{normalize:t}=e;return t(["per day"])},remote_follow:e=>{const{normalize:t}=e;return t(["Remote follow"])},report:e=>{const{normalize:t}=e;return t(["Report"])},statuses:e=>{const{normalize:t}=e;return t(["Statuses"])},subscribe:e=>{const{normalize:t}=e;return t(["Subscribe"])},unsubscribe:e=>{const{normalize:t}=e;return t(["Unsubscribe"])},unblock:e=>{const{normalize:t}=e;return t(["Unblock"])},unblock_progress:e=>{const{normalize:t}=e;return t(["Unblocking…"])},block_progress:e=>{const{normalize:t}=e;return t(["Blocking…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},hide_repeats:e=>{const{normalize:t}=e;return t(["Hide repeats"])},show_repeats:e=>{const{normalize:t}=e;return t(["Show repeats"])},domain_muted:e=>{const{normalize:t}=e;return t(["Unblock domain"])},mute_domain:e=>{const{normalize:t}=e;return t(["Block domain"])},bot:e=>{const{normalize:t}=e;return t(["Bot"])},admin_menu:{moderation:e=>{const{normalize:t}=e;return t(["Moderation"])},grant_admin:e=>{const{normalize:t}=e;return t(["Grant Admin"])},revoke_admin:e=>{const{normalize:t}=e;return t(["Revoke Admin"])},grant_moderator:e=>{const{normalize:t}=e;return t(["Grant Moderator"])},revoke_moderator:e=>{const{normalize:t}=e;return t(["Revoke Moderator"])},activate_account:e=>{const{normalize:t}=e;return t(["Activate account"])},deactivate_account:e=>{const{normalize:t}=e;return t(["Deactivate account"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},force_nsfw:e=>{const{normalize:t}=e;return t(["Mark all posts as NSFW"])},strip_media:e=>{const{normalize:t}=e;return t(["Remove media from posts"])},force_unlisted:e=>{const{normalize:t}=e;return t(["Force posts to be unlisted"])},sandbox:e=>{const{normalize:t}=e;return t(["Force posts to be followers-only"])},disable_remote_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user from remote instances"])},disable_any_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user at all"])},quarantine:e=>{const{normalize:t}=e;return t(["Disallow user posts from federating"])},delete_user:e=>{const{normalize:t}=e;return t(["Delete user"])},delete_user_confirmation:e=>{const{normalize:t}=e;return t(["Are you absolutely sure? This action cannot be undone."])}},highlight:{disabled:e=>{const{normalize:t}=e;return t(["No highlight"])},solid:e=>{const{normalize:t}=e;return t(["Solid bg"])},striped:e=>{const{normalize:t}=e;return t(["Striped bg"])},side:e=>{const{normalize:t}=e;return t(["Side stripe"])}}},user_profile:{timeline_title:e=>{const{normalize:t}=e;return t(["User timeline"])},profile_does_not_exist:e=>{const{normalize:t}=e;return t(["Sorry, this profile does not exist."])},profile_loading_error:e=>{const{normalize:t}=e;return t(["Sorry, there was an error loading this profile."])}},user_reporting:{title:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Reporting ",n(r(0))])},add_comment_description:e=>{const{normalize:t}=e;return t(["The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:"])},additional_comments:e=>{const{normalize:t}=e;return t(["Additional comments"])},forward_description:e=>{const{normalize:t}=e;return t(["The account is from another server. Send a copy of the report there as well?"])},forward_to:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Forward to ",n(r(0))])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occurred while processing your request."])}},who_to_follow:{more:e=>{const{normalize:t}=e;return t(["More"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])}},tool_tip:{media_upload:e=>{const{normalize:t}=e;return t(["Upload media"])},repeat:e=>{const{normalize:t}=e;return t(["Repeat"])},reply:e=>{const{normalize:t}=e;return t(["Reply"])},favorite:e=>{const{normalize:t}=e;return t(["Favorite"])},add_reaction:e=>{const{normalize:t}=e;return t(["Add Reaction"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},accept_follow_request:e=>{const{normalize:t}=e;return t(["Accept follow request"])},reject_follow_request:e=>{const{normalize:t}=e;return t(["Reject follow request"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])}},upload:{error:{base:e=>{const{normalize:t}=e;return t(["Upload failed."])},message:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Upload failed: ",n(r(0))])},file_too_big:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["File too big [",n(r("filesize")),n(r("filesizeunit"))," / ",n(r("allowedsize")),n(r("allowedsizeunit")),"]"])},default:e=>{const{normalize:t}=e;return t(["Try again later"])}},file_size_units:{B:e=>{const{normalize:t}=e;return t(["B"])},KiB:e=>{const{normalize:t}=e;return t(["KiB"])},MiB:e=>{const{normalize:t}=e;return t(["MiB"])},GiB:e=>{const{normalize:t}=e;return t(["GiB"])},TiB:e=>{const{normalize:t}=e;return t(["TiB"])}}},search:{people:e=>{const{normalize:t}=e;return t(["People"])},hashtags:e=>{const{normalize:t}=e;return t(["Hashtags"])},person_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," person talking"])},people_talking:e=>{const{normalize:t,interpolate:n,named:r}=e;return t([n(r("count"))," people talking"])},no_results:e=>{const{normalize:t}=e;return t(["No results"])}},password_reset:{forgot_password:e=>{const{normalize:t}=e;return t(["Forgot password?"])},password_reset:e=>{const{normalize:t}=e;return t(["Password reset"])},instruction:e=>{const{normalize:t}=e;return t(["Enter your email address or username. We will send you a link to reset your password."])},placeholder:e=>{const{normalize:t}=e;return t(["Your email or username"])},check_email:e=>{const{normalize:t}=e;return t(["Check your email for a link to reset your password."])},return_home:e=>{const{normalize:t}=e;return t(["Return to the home page"])},too_many_requests:e=>{const{normalize:t}=e;return t(["You have reached the limit of attempts, try again later."])},password_reset_disabled:e=>{const{normalize:t}=e;return t(["Password reset is disabled. Please contact your instance administrator."])},password_reset_required:e=>{const{normalize:t}=e;return t(["You must reset your password to log in."])},password_reset_required_but_mailer_is_disabled:e=>{const{normalize:t}=e;return t(["You must reset your password, but password reset is disabled. Please contact your instance administrator."])}},chats:{you:e=>{const{normalize:t}=e;return t(["You:"])},message_user:e=>{const{normalize:t,interpolate:n,named:r}=e;return t(["Message ",n(r("nickname"))])},delete:e=>{const{normalize:t}=e;return t(["Delete"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},new:e=>{const{normalize:t}=e;return t(["New Chat"])},empty_message_error:e=>{const{normalize:t}=e;return t(["Cannot post empty message"])},more:e=>{const{normalize:t}=e;return t(["More"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this message?"])},error_loading_chat:e=>{const{normalize:t}=e;return t(["Something went wrong when loading the chat."])},error_sending_message:e=>{const{normalize:t}=e;return t(["Something went wrong when sending the message."])},empty_chat_list_placeholder:e=>{const{normalize:t}=e;return t(["You don't have any chats yet. Start a new chat!"])}},file_type:{audio:e=>{const{normalize:t}=e;return t(["Audio"])},video:e=>{const{normalize:t}=e;return t(["Video"])},image:e=>{const{normalize:t}=e;return t(["Image"])},file:e=>{const{normalize:t}=e;return t(["File"])}},display_date:{today:e=>{const{normalize:t}=e;return t(["Today"])}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n(223)},,function(e,t,n){"use strict";n(225)},function(e,t,n){"use strict";n(226)},function(e,t,n){"use strict";n(227)},function(e,t,n){"use strict";n(228)},function(e,t,n){"use strict";n(229)},function(e,t,n){"use strict";n(230)},function(e,t,n){"use strict";n(231)},function(e,t,n){"use strict";n(232)},function(e,t,n){"use strict";n(233)},function(e,t,n){"use strict";n(234)},function(e,t,n){"use strict";n(235)},,function(e,t,n){"use strict";n(236)},function(e,t,n){"use strict";n(237)},function(e,t,n){"use strict";n(238)},function(e,t,n){"use strict";n(239)},function(e,t,n){},function(e,t,n){"use strict";n(240)},,,,function(e,t,n){"use strict";n(242)},function(e,t,n){"use strict";n(243)},function(e,t,n){"use strict";n(244)},function(e,t,n){"use strict";n(245)},function(e,t,n){"use strict";n(246)},function(e,t,n){"use strict";n(247)},function(e,t,n){"use strict";n(248)},function(e,t,n){"use strict";n(249)},function(e,t,n){"use strict";n(250)},function(e,t,n){"use strict";n(251)},function(e,t,n){"use strict";n(252)},function(e,t,n){"use strict";n(253)},function(e,t,n){"use strict";n(254)},,,,function(e,t,n){"use strict";n(256)},function(e,t,n){"use strict";n(257)},function(e,t,n){"use strict";n(258)},function(e,t,n){"use strict";n(259)},function(e,t,n){"use strict";n(260)},function(e,t,n){"use strict";n(261)},function(e,t,n){"use strict";n(262)},function(e,t,n){"use strict";n(263)},function(e,t,n){"use strict";n(264)},function(e,t,n){"use strict";n(265)},function(e,t,n){"use strict";n(266)},function(e,t,n){"use strict";n(267)},function(e,t,n){"use strict";n(268)},function(e,t,n){"use strict";n(269)},function(e,t,n){"use strict";n(270)},function(e,t,n){"use strict";n(271)},function(e,t,n){"use strict";n(272)},function(e,t,n){"use strict";n(273)},function(e,t,n){"use strict";n(274)},function(e,t,n){"use strict";n(275)},function(e,t,n){"use strict";n(276)},function(e,t,n){"use strict";n(277)},function(e,t,n){"use strict";n(278)},function(e,t,n){"use strict";n(279)},function(e,t,n){"use strict";n(280)},function(e,t,n){"use strict";n(281)},function(e,t,n){"use strict";n(282)},function(e,t,n){"use strict";n(283)},function(e,t,n){"use strict";n(284)},function(e,t,n){"use strict";n(285)},,,function(e,t,n){"use strict";n(287)},function(e,t,n){"use strict";n(288)},function(e,t,n){"use strict";n(289)},function(e,t,n){"use strict";n(290)},function(e,t,n){"use strict";n(291)},function(e,t,n){},function(e,t,n){"use strict";n(292)},function(e,t,n){"use strict";n(293)},function(e,t,n){"use strict";n(294)},function(e,t,n){"use strict";n(295)},function(e,t,n){"use strict";n(296)},function(e,t,n){"use strict";n(297)},function(e,t,n){"use strict";n(298)},function(e,t,n){"use strict";n(299)},function(e,t,n){},function(e,t,n){"use strict";n(302)},function(e,t,n){"use strict";n(303)},,function(e,t,n){"use strict";n(304)},function(e,t,n){"use strict";n(305)},function(e,t,n){"use strict";n(306)},function(e,t,n){"use strict";n(307)},function(e,t,n){"use strict";n(308)},function(e,t,n){"use strict";n(309)},function(e,t,n){"use strict";n.r(t);var r=n(13),i=n.n(r),o=n(10),s=n.n(o),a=n(8),c=(n(348),n(311));try{new EventTarget}catch(e){window.EventTarget=c.a}var l={state:{settingsModalState:"hidden",settingsModalLoaded:!1,settingsModalTargetTab:null,settings:{currentSaveStateNotice:null,noticeClearTimeout:null,notificationPermission:null},browserSupport:{cssFilter:window.CSS&&window.CSS.supports&&(window.CSS.supports("filter","drop-shadow(0 0)")||window.CSS.supports("-webkit-filter","drop-shadow(0 0)"))},layoutType:"normal",globalNotices:[],layoutHeight:0,lastTimeline:null},mutations:{settingsSaved:function(e,t){var n=t.success,r=t.error;n?(e.noticeClearTimeout&&clearTimeout(e.noticeClearTimeout),e.settings.currentSaveStateNotice={error:!1,data:n},e.settings.noticeClearTimeout=setTimeout((function(){return delete e.settings.currentSaveStateNotice}),2e3)):e.settings.currentSaveStateNotice={error:!0,errorData:r}},setNotificationPermission:function(e,t){e.notificationPermission=t},setLayoutType:function(e,t){e.layoutType=t},closeSettingsModal:function(e){e.settingsModalState="hidden"},togglePeekSettingsModal:function(e){switch(e.settingsModalState){case"minimized":return void(e.settingsModalState="visible");case"visible":return void(e.settingsModalState="minimized");default:throw new Error("Illegal minimization state of settings modal")}},openSettingsModal:function(e){e.settingsModalState="visible",e.settingsModalLoaded||(e.settingsModalLoaded=!0)},setSettingsModalTargetTab:function(e,t){e.settingsModalTargetTab=t},pushGlobalNotice:function(e,t){e.globalNotices.push(t)},removeGlobalNotice:function(e,t){e.globalNotices=e.globalNotices.filter((function(e){return e!==t}))},setLayoutHeight:function(e,t){e.layoutHeight=t},setLayoutWidth:function(e,t){e.layoutWidth=t},setLastTimeline:function(e,t){e.lastTimeline=t}},actions:{setPageTitle:function(e){var t=e.rootState,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";document.title="".concat(n," ").concat(t.instance.name)},settingsSaved:function(e,t){var n=e.commit;e.dispatch;n("settingsSaved",{success:t.success,error:t.error})},setNotificationPermission:function(e,t){(0,e.commit)("setNotificationPermission",t)},closeSettingsModal:function(e){(0,e.commit)("closeSettingsModal")},openSettingsModal:function(e){(0,e.commit)("openSettingsModal")},togglePeekSettingsModal:function(e){(0,e.commit)("togglePeekSettingsModal")},clearSettingsModalTargetTab:function(e){(0,e.commit)("setSettingsModalTargetTab",null)},openSettingsModalTab:function(e,t){var n=e.commit;n("setSettingsModalTargetTab",t),n("openSettingsModal")},pushGlobalNotice:function(e,t){var n=e.commit,r=e.dispatch,i=e.state,o=t.messageKey,s=t.messageArgs,a=void 0===s?{}:s,c=t.level,l=void 0===c?"error":c,u=t.timeout,d=void 0===u?0:u;n("pushGlobalNotice",{messageKey:o,messageArgs:a,level:l});var p=i.globalNotices[i.globalNotices.length-1];return d&&setTimeout((function(){return r("removeGlobalNotice",p)}),d),p},removeGlobalNotice:function(e,t){(0,e.commit)("removeGlobalNotice",t)},setLayoutHeight:function(e,t){(0,e.commit)("setLayoutHeight",t)},setLayoutWidth:function(e,t){var n=e.commit,r=e.state,i=e.rootGetters,o=e.rootState,s=t;void 0!==t?n("setLayoutWidth",t):s=r.layoutWidth;var a=s<=800?"mobile":"normal";"none"!==i.mergedConfig.thirdColumnMode&&o.users.currentUser?n("setLayoutType",s>=1300?"wide":a):n("setLayoutType",a)},setLastTimeline:function(e,t){(0,e.commit)("setLastTimeline",t)}}},u=n(12),d=n.n(u),p=n(5),h=n.n(p),b=n(11),m=n.n(b),f=n(43),O=n(54),j=n(15),g=n(121);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var w={state:{name:"Pleroma FE",registrationOpen:!0,server:"http://localhost:4040/",textlimit:5e3,themeData:void 0,vapidPublicKey:void 0,alwaysShowSubjectInput:!0,defaultAvatar:"/images/avi.png",defaultBanner:"/images/banner.png",background:"/static/aurora_borealis.jpg",collapseMessageWithSubject:!1,greentext:!1,useAtIcon:!1,mentionLinkDisplay:"short",mentionLinkShowTooltip:!0,mentionLinkShowAvatar:!1,mentionLinkFadeDomain:!0,mentionLinkShowYous:!1,mentionLinkBoldenYou:!0,hideFilteredStatuses:!1,hideMutedPosts:!1,hideMutedThreads:!0,hideWordFilteredPosts:!1,hidePostStats:!1,hideBotIndication:!1,hideSitename:!1,hideUserStats:!1,muteBotStatuses:!1,loginMethod:"password",logo:"/static/logo.svg",logoMargin:".2em",logoMask:!0,logoLeft:!1,minimalScopesMode:!1,nsfwCensorImage:void 0,postContentType:"text/plain",redirectRootLogin:"/main/friends",redirectRootNoLogin:"/main/all",scopeCopy:!0,showFeaturesPanel:!0,showInstanceSpecificPanel:!1,sidebarRight:!1,subjectLineBehavior:"email",theme:"pleroma-dark",virtualScrolling:!0,sensitiveByDefault:!1,sensitiveIfSubject:!1,renderMisskeyMarkdown:!1,conversationDisplay:"linear",conversationTreeAdvanced:!1,conversationOtherRepliesButton:"below",conversationTreeFadeAncestors:!1,maxDepthInThread:6,customEmoji:[],customEmojiFetched:!1,emoji:[],emojiFetched:!1,pleromaBackend:!0,postFormats:[],restrictedNicknames:[],safeDM:!0,knownDomains:[],shoutAvailable:!1,pleromaChatMessagesAvailable:!1,gopherAvailable:!1,mediaProxyAvailable:!1,suggestionsEnabled:!1,suggestionsWeb:"",instanceSpecificPanelContent:"",tos:"",backendVersion:"",frontendVersion:"",pollsAvailable:!1,pollLimits:{max_options:4,max_option_chars:255,min_expiration:60,max_expiration:86400}},mutations:{setInstanceOption:function(e,t){var n=t.name,r=t.value;void 0!==r&&(e[n]=r)},setKnownDomains:function(e,t){e.knownDomains=t}},getters:{instanceDefaultConfig:function(e){return g.c.map((function(t){return[t,e[t]]})).reduce((function(e,t){var n=m()(t,2),r=n[0],i=n[1];return y(y({},e),{},h()({},r,i))}),{})},instanceDomain:function(e){return new URL(e.server).hostname}},actions:{setInstanceOption:function(e,t){var n=e.commit,r=e.dispatch,i=t.name,o=t.value;switch(n("setInstanceOption",{name:i,value:o}),i){case"name":r("setPageTitle");break;case"shoutAvailable":o&&r("initializeSocket");break;case"theme":r("setTheme",o)}},getStaticEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,t.prev=1,t.next=4,window.fetch("/static/emoji.json");case 4:if(!(r=t.sent).ok){t.next=13;break}return t.next=8,r.json();case 8:i=t.sent,o=Object.keys(i).map((function(e){return{displayText:e,imageUrl:!1,replacement:i[e]}})).sort((function(e,t){return e.name>t.name?1:-1})),n("setInstanceOption",{name:"emoji",value:o}),t.next=14;break;case 13:throw r;case 14:t.next=20;break;case 16:t.prev=16,t.t0=t.catch(1),console.warn("Can't load static emoji"),console.warn(t.t0);case 20:case"end":return t.stop()}}),t,null,[[1,16]])})))()},getCustomEmoji:function(e){return i()(s.a.mark((function t(){var n,r,i,o,a,c;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.state,t.prev=1,t.next=4,window.fetch("/api/pleroma/emoji.json");case 4:if(!(i=t.sent).ok){t.next=14;break}return t.next=8,i.json();case 8:o=t.sent,a=Array.isArray(o)?Object.assign.apply(Object,[{}].concat(d()(o))):o,c=Object.entries(a).map((function(e){var t=m()(e,2),n=t[0],i=t[1],o=i.image_url;return{displayText:n,imageUrl:o?r.server+o:i,tags:o?i.tags.sort((function(e,t){return e>t?1:0})):["utf"],replacement:":".concat(n,": ")}})).sort((function(e,t){return e.displayText.toLowerCase()>t.displayText.toLowerCase()?1:-1})),n("setInstanceOption",{name:"customEmoji",value:c}),t.next=15;break;case 14:throw i;case 15:t.next=21;break;case 17:t.prev=17,t.t0=t.catch(1),console.warn("Can't load custom emojis"),console.warn(t.t0);case 21:case"end":return t.stop()}}),t,null,[[1,17]])})))()},setTheme:function(e,t){var n=e.commit,r=e.rootState;n("setInstanceOption",{name:"theme",value:t}),Object(f.j)(t).then((function(e){if(n("setInstanceOption",{name:"themeData",value:e}),!r.config.customTheme){var t=e.source;!e.theme||t&&t.themeEngineVersion===O.a?Object(f.b)(t):Object(f.b)(e.theme)}}))},fetchEmoji:function(e){var t=e.dispatch,n=e.state;n.customEmojiFetched||(n.customEmojiFetched=!0,t("getCustomEmoji")),n.emojiFetched||(n.emojiFetched=!0,t("getStaticEmoji"))},getKnownDomains:function(e){return i()(s.a.mark((function t(){var n,r,i;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,r=e.rootState,t.prev=1,t.next=4,j.c.fetchKnownDomains({credentials:r.users.currentUser.credentials});case 4:i=t.sent,n("setKnownDomains",i),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(1),console.warn("Can't load known domains"),console.warn(t.t0);case 12:case"end":return t.stop()}}),t,null,[[1,8]])})))()}}},k=n(131),_=n.n(k),S=n(19),C=n.n(S),P=n(46),x=n.n(P),D=n(318),T=n.n(D),I=n(122),$=n.n(I),z=n(132),M=n.n(z),U=n(133),F=n.n(U),E=n(30),L=n.n(E),R=n(60),A=n.n(R),N=n(29),B=n.n(N),V=n(319),H=n.n(V),q=n(61),J=n.n(q),W=n(26);function Y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function G(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var K=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return{statuses:[],statusesObject:{},faves:[],visibleStatuses:[],visibleStatusesObject:{},newStatusCount:0,maxId:0,minId:0,minVisibleId:0,loading:!1,followers:[],friends:[],userId:e,flushMarker:0}},X=function(){return{desktopNotificationSilence:!0,maxId:0,minId:Number.POSITIVE_INFINITY,data:[],idStore:{},loading:!1}},Z=function(){return{allStatuses:[],allStatusesObject:{},conversationsObject:{},maxId:0,notifications:X(),favorites:new Set,timelines:{mentions:K(),public:K(),user:K(),favorites:K(),media:K(),publicAndExternal:K(),friends:K(),tag:K(),dms:K(),bookmarks:K()}}},Q=function(e,t,n){var r=t[n.id];return r?($()(r,_()(n,(function(e,t){return null===e||"user"===t}))),r.attachments.splice(r.attachments.length),{item:r,new:!1}):(function(e){e.deleted=!1,e.attachments=e.attachments||[]}(n),e.push(n),t[n.id]=n,{item:n,new:!0})},ee=function(e,t){var n=Number(e.id),r=Number(t.id),i=!Number.isNaN(n),o=!Number.isNaN(r);return i&&o?n>r?-1:1:i&&!o?1:!i&&o||e.id>t.id?-1:1},te=function(e){return e.visibleStatuses=e.visibleStatuses.sort(ee),e.statuses=e.statuses.sort(ee),e.minVisibleId=(x()(e.visibleStatuses)||{}).id,e},ne=function(e,t){var n=Q(e.allStatuses,e.allStatusesObject,t);if(n.new){var r=n.item,i=e.conversationsObject,o=r.statusnet_conversation_id;i[o]?i[o].push(r):i[o]=[r]}return n},re=function(e,t){e.notifications.maxId=t.id>e.notifications.maxId?t.id:e.notifications.maxId,e.notifications.minId=t.id<e.notifications.minId?t.id:e.notifications.minId},ie={addNewStatuses:function(e,t){var n=t.statuses,r=t.showImmediately,i=void 0!==r&&r,o=t.timeline,s=t.user,a=void 0===s?{}:s,c=t.noIdUpdate,l=void 0!==c&&c,u=t.userId,d=t.pagination,p=void 0===d?{}:d;if(!C()(n))return!1;var h=e.allStatuses,b=e.timelines[o],m=p.maxId||(n.length>0?M()(n,"id").id:0),f=p.minId||(n.length>0?F()(n,"id").id:0),O=o&&(f>b.maxId||0===b.maxId)&&n.length>0,j=o&&(m<b.minId||0===b.minId)&&n.length>0;if(!l&&O&&(b.maxId=f),!l&&j&&(b.minId=m),"user"!==o&&"media"!==o||b.userId===u){var g=function(t,n){var r,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=ne(e,t),c=s.item;if(s.new){if("status"===c.type&&L()(c.attentions,{id:a.id})){var l=e.timelines.mentions;b!==l&&(Q(l.statuses,l.statusesObject,c),l.newStatusCount+=1,te(l))}if("direct"===c.visibility){var u=e.timelines.dms;Q(u.statuses,u.statusesObject,c),u.newStatusCount+=1,te(u)}}return o&&i&&(r=Q(b.statuses,b.statusesObject,c)),o&&n?Q(b.visibleStatuses,b.visibleStatusesObject,c):o&&i&&r.new&&(b.newStatusCount+=1),c},v={status:function(e){g(e,i)},retweet:function(e){var t,n=g(e.retweeted_status,!1,!1);t=o&&L()(b.statuses,(function(e){return e.retweeted_status?e.id===n.id||e.retweeted_status.id===n.id:e.id===n.id}))?g(e,!1,!1):g(e,i),t.retweeted_status=n},favorite:function(t){e.favorites.has(t.id)||(e.favorites.add(t.id),function(e,t){var n=L()(h,{id:e.in_reply_to_status_id});n&&(e.user.id===a.id?n.favorited=!0:n.fave_num+=1)}(t))},deletion:function(t){var n=t.uri,r=L()(h,{uri:n});r&&(!function(e,t){J()(e.allStatuses,{id:t.id}),J()(e.notifications.data,(function(e){return e.action.id===t.id}));var n=t.statusnet_conversation_id;e.conversationsObject[n]&&J()(e.conversationsObject[n],{id:t.id})}(e,r),o&&(J()(b.statuses,{uri:n}),J()(b.visibleStatuses,{uri:n})))},follow:function(e){},default:function(e){console.log("unknown status type"),console.log(e)}};B()(n,(function(e){var t=e.type;(v[t]||v.default)(e)})),o&&"bookmarks"!==o&&te(b)}},addNewNotifications:function(e,t){var n=t.dispatch,r=t.notifications,i=(t.older,t.visibleNotificationTypes,t.rootGetters,t.newNotificationSideEffects);B()(r,(function(t){if(!Object(W.c)(t))return console.error("Invalid notification:",t),void re(e,t);Object(W.b)(t.type)&&(t.action=ne(e,t.action).item,t.status=t.status&&ne(e,t.status).item),"pleroma:emoji_reaction"===t.type&&n("fetchEmojiReactionsBy",t.status.id),e.notifications.idStore.hasOwnProperty(t.id)?t.seen&&(e.notifications.idStore[t.id].seen=!0):(re(e,t),e.notifications.data.push(t),e.notifications.idStore[t.id]=t,i(t))}))},removeStatus:function(e,t){var n=t.timeline,r=t.userId,i=e.timelines[n];r&&(J()(i.statuses,{user:{id:r}}),J()(i.visibleStatuses,{user:{id:r}}),i.minVisibleId=i.visibleStatuses.length>0?x()(i.visibleStatuses).id:0,i.maxId=i.statuses.length>0?T()(i.statuses).id:0)},showNewStatuses:function(e,t){var n=t.timeline,r=e.timelines[n];r.newStatusCount=0,r.visibleStatuses=H()(r.statuses,0,50),r.minVisibleId=x()(r.visibleStatuses).id,r.minId=r.minVisibleId,r.visibleStatusesObject={},B()(r.visibleStatuses,(function(e){r.visibleStatusesObject[e.id]=e}))},resetStatuses:function(e){var t=Z();Object.entries(t).forEach((function(t){var n=m()(t,2),r=n[0],i=n[1];e[r]=i}))},clearTimeline:function(e,t){var n=t.timeline,r=t.excludeUserId,i=void 0!==r&&r?e.timelines[n].userId:void 0;e.timelines[n]=K(i)},clearNotifications:function(e){e.notifications=X()},setFavorited:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.favorited!==r&&(r?i.fave_num++:i.fave_num--),i.favorited=r},setFavoritedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.favorited=n.favorited,i.fave_num=n.fave_num;var o=A()(i.favoritedBy,{id:r.id});-1===o||i.favorited?-1===o&&i.favorited&&i.favoritedBy.push(r):i.favoritedBy.splice(o,1)},setMutedStatus:function(e,t){var n=e.allStatusesObject[t.id];n.thread_muted=t.thread_muted,void 0!==n.thread_muted&&e.conversationsObject[n.statusnet_conversation_id].forEach((function(e){e.thread_muted=n.thread_muted}))},setRetweeted:function(e,t){var n=t.status,r=t.value,i=e.allStatusesObject[n.id];i.repeated!==r&&(r?i.repeat_num++:i.repeat_num--),i.repeated=r},setRetweetedConfirm:function(e,t){var n=t.status,r=t.user,i=e.allStatusesObject[n.id];i.repeated=n.repeated,i.repeat_num=n.repeat_num;var o=A()(i.rebloggedBy,{id:r.id});-1===o||i.repeated?-1===o&&i.repeated&&i.rebloggedBy.push(r):i.rebloggedBy.splice(o,1)},setBookmarked:function(e,t){var n=t.status,r=t.value;e.allStatusesObject[n.id].bookmarked=r},setBookmarkedConfirm:function(e,t){var n=t.status;e.allStatusesObject[n.id].bookmarked=n.bookmarked},setDeleted:function(e,t){var n=t.status,r=e.allStatusesObject[n.id];r&&(r.deleted=!0)},setManyDeleted:function(e,t){Object.values(e.allStatusesObject).forEach((function(e){t(e)&&(e.deleted=!0)}))},setLoading:function(e,t){var n=t.timeline,r=t.value;e.timelines[n].loading=r},setNsfw:function(e,t){var n=t.id,r=t.nsfw;e.allStatusesObject[n].nsfw=r},setNotificationsLoading:function(e,t){var n=t.value;e.notifications.loading=n},setNotificationsSilence:function(e,t){var n=t.value;e.notifications.desktopNotificationSilence=n},markNotificationsAsSeen:function(e){B()(e.notifications.data,(function(e){e.seen=!0}))},markSingleNotificationAsSeen:function(e,t){var n=t.id,r=L()(e.notifications.data,(function(e){return e.id===n}));r&&(r.seen=!0)},dismissNotification:function(e,t){var n=t.id;e.notifications.data=e.notifications.data.filter((function(e){return e.id!==n}))},dismissNotifications:function(e,t){var n=t.finder;e.notifications.data=e.notifications.data.filter((function(e){return n}))},updateNotification:function(e,t){var n=t.id,r=t.updater,i=L()(e.notifications.data,(function(e){return e.id===n}));i&&r(i)},queueFlush:function(e,t){var n=t.timeline,r=t.id;e.timelines[n].flushMarker=r},queueFlushAll:function(e){Object.keys(e.timelines).forEach((function(t){e.timelines[t].flushMarker=e.timelines[t].maxId}))},addRepeats:function(e,t){var n=t.id,r=t.rebloggedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.rebloggedBy=r.filter((function(e){return e})),o.repeat_num=o.rebloggedBy.length,o.repeated=!!o.rebloggedBy.find((function(e){var t=e.id;return i.id===t}))},addFavs:function(e,t){var n=t.id,r=t.favoritedByUsers,i=t.currentUser,o=e.allStatusesObject[n];o.favoritedBy=r.filter((function(e){return e})),o.fave_num=o.favoritedBy.length,o.favorited=!!o.favoritedBy.find((function(e){var t=e.id;return i.id===t}))},addEmojiReactionsBy:function(e,t){var n=t.id,r=t.emojiReactions;t.currentUser;e.allStatusesObject[n].emoji_reactions=r},addOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r}),a=o.emoji_reactions[s]||{name:r,count:0,accounts:[]},c=G(G({},a),{},{count:a.count+1,me:!0,accounts:[].concat(d()(a.accounts),[i])});s>=0?o.emoji_reactions[s]=c:o.emoji_reactions=[].concat(d()(o.emoji_reactions),[c])},removeOwnReaction:function(e,t){var n=t.id,r=t.emoji,i=t.currentUser,o=e.allStatusesObject[n],s=A()(o.emoji_reactions,{name:r});if(!(s<0)){var a=o.emoji_reactions[s],c=a.accounts||[],l=G(G({},a),{},{count:a.count-1,me:!1,accounts:c.filter((function(e){return e.id!==i.id}))});l.count>0?o.emoji_reactions[s]=l:o.emoji_reactions=o.emoji_reactions.filter((function(e){return e.name!==r}))}},updateStatusWithPoll:function(e,t){var n=t.id,r=t.poll;e.allStatusesObject[n].poll=r},setVirtualHeight:function(e,t){var n=t.statusId,r=t.height;e.allStatusesObject[n].virtualHeight=r}},oe={state:Z(),actions:{addNewStatuses:function(e,t){var n=e.rootState,r=e.commit,i=t.statuses,o=t.showImmediately,s=void 0!==o&&o,a=t.timeline,c=void 0!==a&&a,l=t.noIdUpdate,u=void 0!==l&&l,d=t.userId,p=t.pagination;r("addNewStatuses",{statuses:i,showImmediately:s,timeline:c,noIdUpdate:u,user:n.users.currentUser,userId:d,pagination:p})},addNewNotifications:function(e,t){var n=t.notifications,r=t.older;(0,e.commit)("addNewNotifications",{dispatch:e.dispatch,notifications:n,older:r,rootGetters:e.rootGetters,newNotificationSideEffects:function(t){Object(W.d)(e,t)}})},setNotificationsLoading:function(e,t){e.rootState;(0,e.commit)("setNotificationsLoading",{value:t.value})},setNotificationsSilence:function(e,t){e.rootState;(0,e.commit)("setNotificationsSilence",{value:t.value})},fetchStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.fetchStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},deleteStatus:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:t}),j.c.deleteStatus({id:t.id,credentials:n.users.currentUser.credentials})},deleteStatusById:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:n.statuses.allStatusesObject[t]})},markStatusesAsDeleted:function(e,t){(0,e.commit)("setManyDeleted",t)},favorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!0}),n.api.backendInteractor.favorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},unfavorite:function(e,t){var n=e.rootState,r=e.commit;r("setFavorited",{status:t,value:!1}),n.api.backendInteractor.unfavorite({id:t.id}).then((function(e){return r("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},fetchPinnedStatuses:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.fetchPinnedStatuses({id:t}).then((function(e){return r("addNewStatuses",{statuses:e,timeline:"user",userId:t,showImmediately:!0,noIdUpdate:!0})}))},pinStatus:function(e,t){var n=e.rootState,r=e.dispatch;return n.api.backendInteractor.pinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},unpinStatus:function(e,t){var n=e.rootState,r=e.dispatch;n.api.backendInteractor.unpinOwnStatus({id:t}).then((function(e){return r("addNewStatuses",{statuses:[e]})}))},muteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.muteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},unmuteConversation:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unmuteConversation({id:t}).then((function(e){return r("setMutedStatus",e)}))},retweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!0}),n.api.backendInteractor.retweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e.retweeted_status,user:n.users.currentUser})}))},unretweet:function(e,t){var n=e.rootState,r=e.commit;r("setRetweeted",{status:t,value:!1}),n.api.backendInteractor.unretweet({id:t.id}).then((function(e){return r("setRetweetedConfirm",{status:e,user:n.users.currentUser})}))},bookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!0}),n.api.backendInteractor.bookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},unbookmark:function(e,t){var n=e.rootState,r=e.commit;r("setBookmarked",{status:t,value:!1}),n.api.backendInteractor.unbookmarkStatus({id:t.id}).then((function(e){r("setBookmarkedConfirm",{status:e})}))},queueFlush:function(e,t){e.rootState;(0,e.commit)("queueFlush",{timeline:t.timeline,id:t.id})},queueFlushAll:function(e){e.rootState;(0,e.commit)("queueFlushAll")},markNotificationsAsSeen:function(e){var t=e.rootState;(0,e.commit)("markNotificationsAsSeen"),j.c.markNotificationsAsSeen({id:t.statuses.notifications.maxId,credentials:t.users.currentUser.credentials})},markSingleNotificationAsSeen:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("markSingleNotificationAsSeen",{id:i}),j.c.markNotificationsAsSeen({single:!0,id:i,credentials:n.users.currentUser.credentials})},dismissNotificationLocal:function(e,t){e.rootState;(0,e.commit)("dismissNotification",{id:t.id})},dismissNotification:function(e,t){var n=e.rootState,r=e.commit,i=t.id;r("dismissNotification",{id:i}),n.api.backendInteractor.dismissNotification({id:i})},updateNotification:function(e,t){e.rootState;(0,e.commit)("updateNotification",{id:t.id,updater:t.updater})},fetchFavsAndRepeats:function(e,t){var n=e.rootState,r=e.commit;Promise.all([n.api.backendInteractor.fetchFavoritedByUsers({id:t}),n.api.backendInteractor.fetchRebloggedByUsers({id:t})]).then((function(e){var i=m()(e,2),o=i[0],s=i[1];r("addFavs",{id:t,favoritedByUsers:o,currentUser:n.users.currentUser}),r("addRepeats",{id:t,rebloggedByUsers:s,currentUser:n.users.currentUser})}))},reactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("addOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.reactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},unreactWithEmoji:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit,o=t.id,s=t.emoji,a=n.users.currentUser;a&&(i("removeOwnReaction",{id:o,emoji:s,currentUser:a}),n.api.backendInteractor.unreactWithEmoji({id:o,emoji:s}).then((function(e){r("fetchEmojiReactionsBy",o)})))},fetchEmojiReactionsBy:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchEmojiReactions({id:t}).then((function(e){r("addEmojiReactionsBy",{id:t,emojiReactions:e,currentUser:n.users.currentUser})}))},fetchFavs:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchFavoritedByUsers({id:t}).then((function(e){return r("addFavs",{id:t,favoritedByUsers:e,currentUser:n.users.currentUser})}))},fetchRepeats:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.fetchRebloggedByUsers({id:t}).then((function(e){return r("addRepeats",{id:t,rebloggedByUsers:e,currentUser:n.users.currentUser})}))},search:function(e,t){var n=t.q,r=t.resolve,i=t.limit,o=t.offset,s=t.following;return e.rootState.api.backendInteractor.search2({q:n,resolve:r,limit:i,offset:o,following:s}).then((function(t){return e.commit("addNewUsers",t.accounts),e.commit("addNewStatuses",{statuses:t.statuses}),t}))},setVirtualHeight:function(e,t){(0,e.commit)("setVirtualHeight",{statusId:t.statusId,height:t.height})}},mutations:ie},se=n(98),ae=n.n(se),ce=n(97),le=n.n(ce),ue=n(145),de=n.n(ue),pe=n(21),he=n.n(pe),be=n(168),me=n.n(be),fe=n(146),Oe=n.n(fe),je=n(44),ge=function(e){var t=e.store,n=e.credentials,r=e.timeline,i=void 0===r?"friends":r,o=e.older,s=void 0!==o&&o,a=e.showImmediately,c=void 0!==a&&a,l=e.userId,u=void 0!==l&&l,d=e.tag,p=void 0!==d&&d,h=e.until,b=e.since,m={timeline:i,credentials:n},f=t.rootState||t.state,O=t.getters,g=f.statuses.timelines[Oe()(i)],v=O.mergedConfig,y=v.hideMutedPosts,w=v.replyVisibility,k=!!f.users.currentUser;s?m.until=h||g.minId:void 0===b?m.since=g.maxId:null!==b&&(m.since=b),m.userId=u,m.tag=p,m.withMuted=!y,k&&["friends","public","publicAndExternal"].includes(i)&&(m.replyVisibility=w);var _=g.statuses.length;return j.c.fetchTimeline(m).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data,r=e.pagination;return!s&&n.length>=20&&!g.loading&&_>0&&t.dispatch("queueFlush",{timeline:i,id:g.maxId}),function(e){var t=e.store,n=e.statuses,r=e.timeline,i=e.showImmediately,o=e.userId,s=e.pagination,a=Oe()(r);t.dispatch("addNewStatuses",{timeline:a,userId:o,statuses:n,showImmediately:i,pagination:s})}({store:t,statuses:n,timeline:i,showImmediately:c,userId:u,pagination:r}),{statuses:n,pagination:r}})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"timeline.error",messageArgs:[e.message],timeout:5e3})}))},ve={fetchAndUpdate:ge,startFetching:function(e){var t=e.timeline,n=void 0===t?"friends":t,r=e.credentials,i=e.store,o=e.userId,s=void 0!==o&&o,a=e.tag,c=void 0!==a&&a,l=(i.rootState||i.state).statuses.timelines[Oe()(n)],u=0===l.visibleStatuses.length;l.userId=s,ge({timeline:n,credentials:r,store:i,showImmediately:u,userId:s,tag:c});return Object(je.a)((function(){return ge({timeline:n,credentials:r,store:i,userId:s,tag:c})}),2e4)}},ye=n(99),we={startFetching:function(e){var t=e.credentials,n=e.store,r=function(){return function(e){var t=e.store,n=e.credentials;return j.c.fetchFollowRequests({credentials:n}).then((function(e){t.commit("setFollowRequests",e),t.commit("addNewUsers",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return r(),Object(je.a)(r,24e4)}};function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ke(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Se=function(e){return _e(_e({startFetchingTimeline:function(t){var n=t.timeline,r=t.store,i=t.userId,o=void 0!==i&&i,s=t.tag;return ve.startFetching({timeline:n,store:r,credentials:e,userId:o,tag:s})},fetchTimeline:function(t){return ve.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingNotifications:function(t){var n=t.store;return ye.a.startFetching({store:n,credentials:e})},fetchNotifications:function(t){return ye.a.fetchAndUpdate(_e(_e({},t),{},{credentials:e}))},startFetchingFollowRequests:function(t){var n=t.store;return we.startFetching({store:n,credentials:e})},startUserSocket:function(t){var n=t.store.rootState.instance.server.replace("http","ws")+Object(j.d)({credentials:e,stream:"user"});return Object(j.a)({url:n,id:"User"})}},Object.entries(j.c).reduce((function(t,n){var r=m()(n,2),i=r[0],o=r[1];return _e(_e({},t),{},h()({},i,(function(t){return o(_e({credentials:e},t))})))}),{})),{},{verifyCredentials:j.c.verifyCredentials})},Ce=function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},Pe=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},xe=n(55),De=n.n(xe),Te="".concat(window.location.origin,"/oauth-callback"),Ie=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.commit;if(t&&n)return Promise.resolve({clientId:t,clientSecret:n});var o="".concat(r,"/api/v1/apps"),s=new window.FormData;return s.append("client_name","PleromaFE_".concat(window.___pleromafe_commit_hash,"_").concat((new Date).toISOString())),s.append("redirect_uris",Te),s.append("scopes","read write follow push admin"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()})).then((function(e){return{clientId:e.client_id,clientSecret:e.client_secret}})).then((function(e){return i("setClientData",e)||e}))},$e=function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i="".concat(r,"/oauth/token"),o=new window.FormData;return o.append("client_id",t),o.append("client_secret",n),o.append("grant_type","client_credentials"),o.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))},ze={login:function(e){var t=e.instance,n={response_type:"code",client_id:e.clientId,redirect_uri:Te,scope:"read write follow push admin"},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return e?"".concat(e,"&").concat(r):r}),!1),i="".concat(t,"/oauth/authorize?").concat(r);window.location.href=i},getToken:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.code,o="".concat(r,"/oauth/token"),s=new window.FormData;return s.append("client_id",t),s.append("client_secret",n),s.append("grant_type","authorization_code"),s.append("code",i),s.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},getTokenWithCredentials:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.username,o=e.password,s="".concat(r,"/oauth/token"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("grant_type","password"),a.append("username",i),a.append("password",o),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},getOrCreateApp:Ie,verifyOTPCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","totp"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.app,n=e.instance,r=e.mfaToken,i=e.code,o="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",r),s.append("code",i),s.append("challenge_type","recovery"),window.fetch(o,{method:"POST",body:s}).then((function(e){return e.json()}))},revokeToken:function(e){var t=e.app,n=e.instance,r=e.token,i="".concat(n,"/oauth/revoke"),o=new window.FormData;return o.append("client_id",t.clientId),o.append("client_secret",t.clientSecret),o.append("token",r),window.fetch(i,{method:"POST",body:o}).then((function(e){return e.json()}))}},Me=n(320),Ue=n.n(Me);function Fe(){return"serviceWorker"in navigator&&"PushManager"in window}function Ee(){return Ue.a.register().catch((function(e){return console.error("Unable to get or create a service worker.",e)}))}function Le(e){return window.fetch("/api/v1/push/subscription/",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e}))}function Re(e,t,n,r){Fe()&&Ee().then((function(n){return function(e,t,n){if(!t)return Promise.reject(new Error("Web Push is disabled in config"));if(!n)return Promise.reject(new Error("VAPID public key is not found"));var r,i,o,s={userVisibleOnly:!0,applicationServerKey:(r=n,i=(r+"=".repeat((4-r.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),o=window.atob(i),Uint8Array.from(d()(o).map((function(e){return e.charCodeAt(0)}))))};return e.pushManager.subscribe(s)}(n,e,t)})).then((function(e){return function(e,t,n){return window.fetch("/api/v1/push/subscription/",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(t)},body:JSON.stringify({subscription:e,data:{alerts:{follow:n.follows,favourite:n.likes,mention:n.mentions,reblog:n.repeats,move:n.moves}}})}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e.json()})).then((function(e){if(!e.id)throw new Error("Bad response from server.");return e}))}(e,n,r)})).catch((function(e){return console.warn("Failed to setup Web Push Notifications: ".concat(e.message))}))}function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ne(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Be=function e(t,n){if(C()(t)&&C()(n))return t.length=n.length,de()(t,n,e)},Ve=function(e,t){return e.rootState.api.backendInteractor.blockUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addBlockId",t),e.commit("removeStatus",{timeline:"friends",userId:t}),e.commit("removeStatus",{timeline:"public",userId:t}),e.commit("removeStatus",{timeline:"publicAndExternal",userId:t})}))},He=function(e,t){return e.rootState.api.backendInteractor.unblockUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},qe=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!0,e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t),e.rootState.api.backendInteractor.muteUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addMuteId",t)}))},Je=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!1,e.commit("updateUserRelationship",[n]),e.rootState.api.backendInteractor.unmuteUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},We=function(e,t){return e.rootState.api.backendInteractor.muteDomain({domain:t}).then((function(){return e.commit("addDomainMute",t)}))},Ye=function(e,t){return e.rootState.api.backendInteractor.unmuteDomain({domain:t}).then((function(){return e.commit("removeDomainMute",t)}))},Ge={state:{loggingIn:!1,lastLoginName:!1,currentUser:!1,users:[],usersObject:{},signUpPending:!1,signUpErrors:[],relationships:{}},mutations:{tagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).concat([r]);i.tags=o},untagUser:function(e,t){var n=t.user.id,r=t.tag,i=e.usersObject[n],o=(i.tags||[]).filter((function(e){return e!==r}));i.tags=o},updateRight:function(e,t){var n=t.user.id,r=t.right,i=t.value,o=e.usersObject[n],s=o.rights;s[r]=i,o.rights=s},updateActivationStatus:function(e,t){var n=t.user.id,r=t.deactivated;e.usersObject[n].deactivated=r},setCurrentUser:function(e,t){e.lastLoginName=t.screen_name,e.currentUser=de()(e.currentUser||{},t,Be)},clearCurrentUser:function(e){e.currentUser=!1,e.lastLoginName=!1},beginLogin:function(e){e.loggingIn=!0},endLogin:function(e){e.loggingIn=!1},saveFriendIds:function(e,t){var n=t.id,r=t.friendIds,i=e.usersObject[n];i.friendIds=ae()(le()(i.friendIds||[],r))},saveFollowerIds:function(e,t){var n=t.id,r=t.followerIds,i=e.usersObject[n];i.followerIds=ae()(le()(i.followerIds||[],r))},clearFriends:function(e,t){var n=e.usersObject[t];n&&(n.friendIds=[])},clearFollowers:function(e,t){var n=e.usersObject[t];n&&(n.followerIds=[])},addNewUsers:function(e,t){B()(t,(function(t){t.relationship&&(e.relationships[t.relationship.id]=t.relationship),function(e,t,n){if(!n)return!1;var r=t[n.id];r?de()(r,n,Be):(e.push(n),t[n.id]=n,n.screen_name&&!n.screen_name.includes("@")&&(t[n.screen_name.toLowerCase()]=n))}(e.users,e.usersObject,t)}))},updateUserRelationship:function(e,t){t.forEach((function(t){e.relationships[t.id]=t}))},saveBlockIds:function(e,t){e.currentUser.blockIds=t},addBlockId:function(e,t){-1===e.currentUser.blockIds.indexOf(t)&&e.currentUser.blockIds.push(t)},saveMuteIds:function(e,t){e.currentUser.muteIds=t},addMuteId:function(e,t){-1===e.currentUser.muteIds.indexOf(t)&&e.currentUser.muteIds.push(t)},updateMascot:function(e,t){e.currentUser.mascot=t},saveDomainMutes:function(e,t){e.currentUser.domainMutes=t},addDomainMute:function(e,t){-1===e.currentUser.domainMutes.indexOf(t)&&e.currentUser.domainMutes.push(t)},removeDomainMute:function(e,t){var n=e.currentUser.domainMutes.indexOf(t);-1!==n&&e.currentUser.domainMutes.splice(n,1)},setPinnedToUser:function(e,t){var n=e.usersObject[t.user.id];n.pinnedStatusIds=n.pinnedStatusIds||[];var r=n.pinnedStatusIds.indexOf(t.id);t.pinned&&-1===r?n.pinnedStatusIds.push(t.id):t.pinned||-1===r||n.pinnedStatusIds.splice(r,1)},setUserForStatus:function(e,t){t.user=e.usersObject[t.user.id]},setUserForNotification:function(e,t){"follow"!==t.type&&(t.action.user=e.usersObject[t.action.user.id]),t.from_profile=e.usersObject[t.from_profile.id]},setColor:function(e,t){var n=t.user.id,r=t.highlighted;e.usersObject[n].highlight=r},signUpPending:function(e){e.signUpPending=!0,e.signUpErrors=[]},signUpSuccess:function(e){e.signUpPending=!1},signUpFailure:function(e,t){e.signUpPending=!1,e.signUpErrors=t}},getters:{findUser:function(e){return function(t){var n=e.usersObject[t];return n||"string"!=typeof t?n:e.usersObject[t.toLowerCase()]}},findUserByUrl:function(e){return function(t){return e.users.find((function(e){return e.statusnet_profile_url&&e.statusnet_profile_url.toLowerCase()===t.toLowerCase()}))}},relationship:function(e){return function(t){return t&&e.relationships[t]||{id:t,loading:!0}}}},actions:{fetchUserIfMissing:function(e,t){e.getters.findUser(t)||e.dispatch("fetchUser",t)},fetchUser:function(e,t){return e.rootState.api.backendInteractor.fetchUser({id:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserRelationship:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserRelationship({id:t}).then((function(t){return e.commit("updateUserRelationship",t)}))},fetchBlocks:function(e){return e.rootState.api.backendInteractor.fetchBlocks().then((function(t){return e.commit("saveBlockIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},blockUser:function(e,t){return Ve(e,t)},unblockUser:function(e,t){return He(e,t)},blockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ve(e,t)})))},unblockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return He(e,t)})))},fetchMutes:function(e){return e.rootState.api.backendInteractor.fetchMutes().then((function(t){return e.commit("saveMuteIds",he()(t,"id")),e.commit("addNewUsers",t),t}))},muteUser:function(e,t){return qe(e,t)},unmuteUser:function(e,t){return Je(e,t)},hideReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!1}).then((function(t){e.commit("updateUserRelationship",[t])}))}(e,t)},showReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!0}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},muteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return qe(e,t)})))},unmuteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Je(e,t)})))},fetchMascot:function(e){return function(e){return e.rootState.api.backendInteractor.fetchMascot().then((function(t){var n=t.url;return e.commit("updateMascot",n)}))}(e)},fetchDomainMutes:function(e){return e.rootState.api.backendInteractor.fetchDomainMutes().then((function(t){return e.commit("saveDomainMutes",t),t}))},muteDomain:function(e,t){return We(e,t)},unmuteDomain:function(e,t){return Ye(e,t)},muteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return We(e,t)})))},unmuteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Ye(e,t)})))},fetchFriends:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.friendIds);return n.api.backendInteractor.fetchFriends({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFriendIds",{id:t,friendIds:he()(e,"id")}),e}))},fetchFollowers:function(e,t){var n=e.rootState,r=e.commit,i=n.users.usersObject[t],o=x()(i.followerIds);return n.api.backendInteractor.fetchFollowers({id:t,maxId:o}).then((function(e){return r("addNewUsers",e),r("saveFollowerIds",{id:t,followerIds:he()(e,"id")}),e}))},clearFriends:function(e,t){(0,e.commit)("clearFriends",t)},clearFollowers:function(e,t){(0,e.commit)("clearFollowers",t)},subscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.subscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},unsubscribeUser:function(e,t){var n=e.rootState,r=e.commit;return n.api.backendInteractor.unsubscribeUser({id:t}).then((function(e){return r("updateUserRelationship",[e])}))},toggleActivationStatus:function(e,t){var n=e.rootState,r=e.commit,i=t.user;(i.deactivated?n.api.backendInteractor.activateUser:n.api.backendInteractor.deactivateUser)({user:i}).then((function(e){var t=!e.is_active;r("updateActivationStatus",{user:e,deactivated:t})}))},registerPushNotifications:function(e){var t=e.state.currentUser.credentials,n=e.rootState.instance.vapidPublicKey;Re(e.rootState.config.webPushNotifications,n,t,e.rootState.config.notificationVisibility)},unregisterPushNotifications:function(e){!function(e){Fe()&&Promise.all([Le(e),Ee().then((function(e){return function(e){return e.pushManager.getSubscription().then((function(e){if(null!==e)return e.unsubscribe()}))}(e).then((function(t){return[e,t]}))})).then((function(e){var t=m()(e,2),n=t[0];return t[1]||console.warn("Push subscription cancellation wasn't successful, killing SW anyway..."),n.unregister().then((function(e){e||console.warn("Failed to kill SW")}))}))]).catch((function(e){return console.warn("Failed to disable Web Push Notifications: ".concat(e.message))}))}(e.state.currentUser.credentials)},addNewUsers:function(e,t){(0,e.commit)("addNewUsers",t)},addNewStatuses:function(e,t){var n=t.statuses,r=he()(n,"user"),i=me()(he()(n,"retweeted_status.user"));e.commit("addNewUsers",r),e.commit("addNewUsers",i),B()(n,(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)})),B()(me()(he()(n,"retweeted_status")),(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)}))},addNewNotifications:function(e,t){var n=t.notifications,r=he()(n,"from_profile"),i=he()(n,"target").filter((function(e){return e})),o=n.map((function(e){return e.id}));e.commit("addNewUsers",r),e.commit("addNewUsers",i);var s=e.rootState.statuses.notifications.idStore,a=Object.entries(s).filter((function(e){var t=m()(e,2),n=t[0];t[1];return o.includes(n)})).map((function(e){var t=m()(e,2);t[0];return t[1]}));B()(a,(function(t){e.commit("setUserForNotification",t)}))},searchUsers:function(e,t){var n=e.rootState,r=e.commit,i=t.query;return n.api.backendInteractor.searchUsers({query:i}).then((function(e){return r("addNewUsers",e),e}))},signUp:function(e,t){return i()(s.a.mark((function n(){var r,i,o;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit("signUpPending"),r=e.rootState,n.prev=2,n.next=5,r.api.backendInteractor.register({params:Ne({},t)});case 5:i=n.sent,e.commit("signUpSuccess"),e.commit("setToken",i.access_token),e.dispatch("loginUser",i.access_token),n.next=16;break;case 11:throw n.prev=11,n.t0=n.catch(2),o=n.t0.message,e.commit("signUpFailure",o),n.t0;case 16:case"end":return n.stop()}}),n,null,[[2,11]])})))()},getCaptcha:function(e){return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e.rootState.api.backendInteractor.getCaptcha());case 1:case"end":return t.stop()}}),t)})))()},logout:function(e){var t=e.rootState,n=t.oauth,r=t.instance,i=Ne(Ne({},n),{},{commit:e.commit,instance:r.server});return ze.getOrCreateApp(i).then((function(e){var t={app:e,instance:i.instance,token:n.userToken};return ze.revokeToken(t)})).then((function(){e.commit("clearCurrentUser"),e.dispatch("disconnectFromSocket"),e.commit("clearToken"),e.dispatch("stopFetchingTimeline","friends"),e.commit("setBackendInteractor",Se(e.getters.getToken())),e.dispatch("stopFetchingNotifications"),e.dispatch("stopFetchingFollowRequests"),e.commit("clearNotifications"),e.commit("resetStatuses"),e.dispatch("resetChats"),e.dispatch("setLastTimeline","public-timeline"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe())}))},loginUser:function(e,t){return new Promise((function(n,r){var i=e.commit;i("beginLogin"),e.rootState.api.backendInteractor.verifyCredentials(t).then((function(o){if(o.error){var s=o.error;i("endLogin"),401===s.status?r(new Error("Wrong username or password")):r(new Error("An error occurred, please try again"))}else{var a=o;a.credentials=t,a.blockIds=[],a.muteIds=[],a.domainMutes=[],i("setCurrentUser",a),i("addNewUsers",[a]),e.dispatch("fetchEmoji"),(c=window.Notification,c?"default"===c.permission?c.requestPermission():Promise.resolve(c.permission):Promise.resolve(null)).then((function(e){return i("setNotificationPermission",e)})),i("setBackendInteractor",Se(t)),a.token&&(e.dispatch("setWsToken",a.token),e.dispatch("initializeSocket"));e.getters.mergedConfig.useStreamingApi?(e.dispatch("fetchTimeline","friends",{since:null}),e.dispatch("fetchNotifications",{since:null}),e.dispatch("enableMastoSockets",!0).catch((function(e){console.error("Failed initializing MastoAPI Streaming socket",e)})).then((function(){e.dispatch("fetchChats",{latest:!0}),setTimeout((function(){return e.dispatch("setNotificationsSilence",!1)}),1e4)}))):(e.dispatch("startFetchingTimeline",{timeline:"friends"}),e.dispatch("startFetchingNotifications"),e.dispatch("startFetchingChats")),e.dispatch("fetchMutes"),e.dispatch("setLayoutWidth",Ce()),e.dispatch("setLayoutHeight",Pe()),e.rootState.api.backendInteractor.fetchFriends({id:a.id}).then((function(e){return i("addNewUsers",e)}))}var c;i("endLogin"),n()})).catch((function(e){console.log(e),i("endLogin"),r(new Error("Failed to connect to server, try again"))}))}))}}},Ke=n(169),Xe=n.n(Ke),Ze=n(127),Qe=function(e,t){if(t.lastMessage&&(e.rootState.chats.currentChatId!==t.id||document.hidden)&&e.rootState.users.currentUser.id!==t.lastMessage.account_id){var n={tag:t.lastMessage.id,title:t.account.name,icon:t.account.profile_image_url,body:t.lastMessage.content};t.lastMessage.attachment&&"image"===t.lastMessage.attachment.type&&(n.image=t.lastMessage.attachment.preview_url),Object(Ze.a)(e.rootState,n)}},et=n(321);function tt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var rt={state:{retryMultiplier:1,backendInteractor:Se(),fetchers:{},socket:null,mastoUserSocket:null,mastoUserSocketStatus:null,followRequests:[]},mutations:{setBackendInteractor:function(e,t){e.backendInteractor=t},addFetcher:function(e,t){var n=t.fetcherName,r=t.fetcher;e.fetchers[n]=r},removeFetcher:function(e,t){var n=t.fetcherName;t.fetcher;e.fetchers[n].stop(),delete e.fetchers[n]},setWsToken:function(e,t){e.wsToken=t},setSocket:function(e,t){e.socket=t},setFollowRequests:function(e,t){e.followRequests=t},setMastoUserSocketStatus:function(e,t){e.mastoUserSocketStatus=t},incrementRetryMultiplier:function(e){e.retryMultiplier=Math.max(++e.retryMultiplier,3)},resetRetryMultiplier:function(e){e.retryMultiplier=1}},actions:{enableMastoSockets:function(e,t){var n=e.state,r=e.dispatch,i=e.commit;if(!n.mastoUserSocket||[WebSocket.CLOSED,WebSocket.CLOSING].includes(n.mastoUserSocket.getState()))return i("setMastoUserSocketStatus",t?j.b.STARTING_INITIAL:j.b.STARTING),r("startMastoUserSocket")},disableMastoSockets:function(e){var t=e.state,n=e.dispatch,r=e.commit;if(t.mastoUserSocket)return r("setMastoUserSocketStatus",j.b.DISABLED),n("stopMastoUserSocket")},startMastoUserSocket:function(e){return new Promise((function(t,n){try{var r=e.state,i=e.commit,o=e.dispatch,s=e.rootState.statuses.timelines.friends;r.mastoUserSocket=r.backendInteractor.startUserSocket({store:e}),r.mastoUserSocket.addEventListener("message",(function(t){var n=t.detail;n&&("notification"===n.event?o("addNewNotifications",{notifications:[n.notification],older:!1}):"update"===n.event?o("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:0===s.visibleStatuses.length,timeline:"friends"}):"delete"===n.event?o("deleteStatusById",n.id):"pleroma:chat_update"===n.event&&setTimeout((function(){o("addChatMessages",{chatId:n.chatUpdate.id,messages:[n.chatUpdate.lastMessage]}),o("updateChat",{chat:n.chatUpdate}),Qe(e,n.chatUpdate)}),100))})),r.mastoUserSocket.addEventListener("open",(function(){r.mastoUserSocketStatus!==j.b.STARTING_INITIAL&&o("pushGlobalNotice",{level:"success",messageKey:"timeline.socket_reconnected",timeout:5e3}),new Set([j.b.ERROR,j.b.DISABLED]).has(r.mastoUserSocketStatus)&&(o("stopFetchingTimeline",{timeline:"friends"}),o("stopFetchingNotifications"),o("stopFetchingChats")),i("resetRetryMultiplier"),i("setMastoUserSocketStatus",j.b.JOINED)})),r.mastoUserSocket.addEventListener("error",(function(e){var t=e.detail;console.error("Error in MastoAPI websocket:",t),o("clearOpenedChats")})),r.mastoUserSocket.addEventListener("close",(function(e){var t=e.detail,n=new Set([1e3,1001]),s=t.code;n.has(s)?(console.debug("Not restarting socket becasue of closure code ".concat(s," is in ignore list")),i("setMastoUserSocketStatus",j.b.CLOSED)):(console.warn("MastoAPI websocket disconnected, restarting. CloseEvent code: ".concat(s)),setTimeout((function(){o("startMastoUserSocket")}),1e3*r.retryMultiplier),i("incrementRetryMultiplier"),r.mastoUserSocketStatus!==j.b.ERROR&&(o("startFetchingTimeline",{timeline:"friends"}),o("startFetchingNotifications"),o("startFetchingChats"),o("pushGlobalNotice",{level:"error",messageKey:"timeline.socket_broke",messageArgs:[s],timeout:5e3})),i("setMastoUserSocketStatus",j.b.ERROR)),o("clearOpenedChats")})),t()}catch(e){n(e)}}))},stopMastoUserSocket:function(e){var t=e.state,n=e.dispatch;n("startFetchingTimeline",{timeline:"friends"}),n("startFetchingNotifications"),n("startFetchingChats"),t.mastoUserSocket.close()},startFetchingTimeline:function(e,t){var n=t.timeline,r=void 0===n?"friends":n,i=t.tag,o=void 0!==i&&i,s=t.userId,a=void 0!==s&&s;if(!e.state.fetchers[r]){var c=e.state.backendInteractor.startFetchingTimeline({timeline:r,store:e,userId:a,tag:o});e.commit("addFetcher",{fetcherName:r,fetcher:c})}},stopFetchingTimeline:function(e,t){var n=e.state.fetchers[t];n&&e.commit("removeFetcher",{fetcherName:t,fetcher:n})},fetchTimeline:function(e,t,n){var r=Xe()({},n);e.state.backendInteractor.fetchTimeline(nt({store:e,timeline:t},r))},startFetchingNotifications:function(e){if(!e.state.fetchers.notifications){var t=e.state.backendInteractor.startFetchingNotifications({store:e});e.commit("addFetcher",{fetcherName:"notifications",fetcher:t})}},stopFetchingNotifications:function(e){var t=e.state.fetchers.notifications;t&&e.commit("removeFetcher",{fetcherName:"notifications",fetcher:t})},fetchNotifications:function(e,t){var n=Xe()({},t);e.state.backendInteractor.fetchNotifications(nt({store:e},n))},startFetchingFollowRequests:function(e){if(!e.state.fetchers.followRequests){var t=e.state.backendInteractor.startFetchingFollowRequests({store:e});e.commit("addFetcher",{fetcherName:"followRequests",fetcher:t})}},stopFetchingFollowRequests:function(e){var t=e.state.fetchers.followRequests;t&&e.commit("removeFetcher",{fetcherName:"followRequests",fetcher:t})},removeFollowRequest:function(e,t){var n=e.state.followRequests.filter((function(e){return e!==t}));e.commit("setFollowRequests",n)},setWsToken:function(e,t){e.commit("setWsToken",t)},initializeSocket:function(e){var t=e.dispatch,n=e.commit,r=e.state,i=e.rootState,o=r.wsToken;if(i.instance.shoutAvailable&&void 0!==o&&null===r.socket){var s=new et.a("/socket",{params:{token:o}});s.connect(),n("setSocket",s),t("initializeShout",s)}},disconnectFromSocket:function(e){var t=e.commit,n=e.state;n.socket&&n.socket.disconnect(),t("setSocket",null)}}},it=n(220),ot={state:{messages:[],channel:{state:""},joined:!1},mutations:{setChannel:function(e,t){e.channel=t},addMessage:function(e,t){e.messages.push(t),e.messages=e.messages.slice(-19,20)},setMessages:function(e,t){e.messages=t.slice(-19,20)},setJoined:function(e,t){e.joined=t}},actions:{initializeShout:function(e,t){var n=t.channel("chat:public");n.joinPush.receive("ok",(function(){e.commit("setJoined",!0)})),n.onClose((function(){e.commit("setJoined",!1)})),n.onError((function(){e.commit("setJoined",!1)})),n.on("new_msg",(function(t){e.commit("addMessage",t)})),n.on("messages",(function(t){var n=t.messages;e.commit("setMessages",n)})),n.join(),e.commit("setChannel",n)}}},st={state:{clientId:!1,clientSecret:!1,appToken:!1,userToken:!1},mutations:{setClientData:function(e,t){var n=t.clientId,r=t.clientSecret;e.clientId=n,e.clientSecret=r},setAppToken:function(e,t){e.appToken=t},setToken:function(e,t){e.userToken=t},clearToken:function(e){e.userToken=!1,delete e.token}},getters:{getToken:function(e){return function(){return e.userToken||e.token||e.appToken}},getUserToken:function(e){return function(){return e.userToken||e.token}}}},at=function(e){e.strategy=e.initStrategy,e.settings={}},ct={namespaced:!0,state:{settings:{},strategy:"password",initStrategy:"password"},getters:{settings:function(e,t){return e.settings},requiredPassword:function(e,t,n){return"password"===e.strategy},requiredToken:function(e,t,n){return"token"===e.strategy},requiredTOTP:function(e,t,n){return"totp"===e.strategy},requiredRecovery:function(e,t,n){return"recovery"===e.strategy}},mutations:{setInitialStrategy:function(e,t){t&&(e.initStrategy=t,e.strategy=t)},requirePassword:function(e){e.strategy="password"},requireToken:function(e){e.strategy="token"},requireMFA:function(e,t){var n=t.settings;e.settings=n,e.strategy="totp"},requireRecovery:function(e){e.strategy="recovery"},requireTOTP:function(e){e.strategy="totp"},abortMFA:function(e){at(e)}},actions:{login:function(e,t){return i()(s.a.mark((function n(){var r,i,o,a;return s.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=e.state,i=e.dispatch,o=e.commit,a=t.access_token,o("setToken",a,{root:!0}),n.next=5,i("loginUser",a,{root:!0});case 5:at(r);case 6:case"end":return n.stop()}}),n)})))()}}},lt=n(33),ut=new Set(["image","video","audio","flash"]),dt={state:{media:[],currentIndex:0,activated:!1},mutations:{setMedia:function(e,t){e.media=t},setCurrentMedia:function(e,t){e.activated=!0,e.currentIndex=t},close:function(e){e.activated=!1}},actions:{setMedia:function(e,t){(0,e.commit)("setMedia",t.filter((function(e){var t=lt.a.fileType(e.mimetype);return ut.has(t)})))},setCurrentMedia:function(e,t){(0,e.commit)("setCurrentMedia",e.state.media.indexOf(t)||0)},closeMediaViewer:function(e){(0,e.commit)("close")}}},pt={state:{tokens:[]},actions:{fetchTokens:function(e){var t=e.rootState,n=e.commit;t.api.backendInteractor.fetchOAuthTokens().then((function(e){n("swapTokens",e)}))},revokeToken:function(e,t){var n=e.rootState,r=e.commit,i=e.state;n.api.backendInteractor.revokeOAuthToken({id:t}).then((function(e){201===e.status&&r("swapTokens",i.tokens.filter((function(e){return e.id!==t})))}))}},mutations:{swapTokens:function(e,t){e.tokens=t}}},ht=n(49),bt=n.n(ht),mt={state:{userId:null,statuses:[],preTickedIds:[],modalActivated:!1},mutations:{openUserReportingModal:function(e,t){var n=t.userId,r=t.statuses,i=t.preTickedIds;e.userId=n,e.statuses=r,e.preTickedIds=i,e.modalActivated=!0},closeUserReportingModal:function(e){e.modalActivated=!1}},actions:{openUserReportingModal:function(e,t){var n=e.rootState,r=e.commit,i=t.userId,o=t.statusIds,s=void 0===o?[]:o,a=s.map((function(e){return n.statuses.allStatusesObject[e]})),c=s,l=a.concat(bt()(n.statuses.allStatuses,(function(e){return e.user.id===i&&!c.includes(e.id)})));r("openUserReportingModal",{userId:i,statuses:l,preTickedIds:c})},closeUserReportingModal:function(e){(0,e.commit)("closeUserReportingModal")}}},ft={state:{trackedPolls:{},pollsObject:{}},mutations:{mergeOrAddPoll:function(e,t){var n=e.pollsObject[t.id];t.expired=Date.now()>Date.parse(t.expires_at),e.pollsObject[t.id]=n?$()(n,t):t},trackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n+1:1},untrackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n-1:0}},actions:{mergeOrAddPoll:function(e,t){(0,e.commit)("mergeOrAddPoll",t)},updateTrackedPoll:function(e,t){var n=e.rootState,r=e.dispatch,i=e.commit;n.api.backendInteractor.fetchPoll({pollId:t}).then((function(e){setTimeout((function(){n.polls.trackedPolls[t]&&r("updateTrackedPoll",t)}),3e4),i("mergeOrAddPoll",e)}))},trackPoll:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch;n.polls.trackedPolls[t]||setTimeout((function(){return i("updateTrackedPoll",t)}),3e4),r("trackPoll",t)},untrackPoll:function(e,t){(0,e.commit)("untrackPoll",t)},votePoll:function(e,t){var n=e.rootState,r=e.commit,i=(t.id,t.pollId),o=t.choices;return n.api.backendInteractor.vote({pollId:i,choices:o}).then((function(e){return r("mergeOrAddPoll",e),e}))}}},Ot={state:{params:null,modalActivated:!1},mutations:{openPostStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closePostStatusModal:function(e){e.modalActivated=!1}},actions:{openPostStatusModal:function(e,t){(0,e.commit)("openPostStatusModal",t)},closePostStatusModal:function(e){(0,e.commit)("closePostStatusModal")}}},jt=n(134),gt=n.n(jt),vt=n(100),yt=n.n(vt),wt=n(0),kt=n(28),_t=n.n(kt),St=n(322),Ct=n.n(St),Pt=n(125),xt=n.n(Pt);function Dt(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return Tt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tt(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function Tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var It=function(e,t){if(t.idempotency_key)return e.idempotencyKeyIndex[t.idempotency_key]},$t={add:function(e,t){var n=t.messages,r=t.updateMaxId,i=void 0===r||r;if(e)for(var o=function(t){var r=n[t];if(r.chat_id!==e.chatId)return{v:void 0};if(r.fakeId){var o=e.idIndex[r.fakeId];if(o)return e.idIndex[r.id]&&(delete e.idIndex[r.id],e.messages=e.messages.filter((function(e){return e.id!==r.id}))),Object.assign(o,r,{error:!1}),delete o.fakeId,e.idIndex[o.id]=o,delete e.idIndex[r.fakeId],{v:void 0}}(!e.minId||!r.pending&&r.id<e.minId)&&(e.minId=r.id),(!e.maxId||r.id>e.maxId)&&i&&(e.maxId=r.id),e.idIndex[r.id]||It(e,r)||(e.lastSeenMessageId<r.id&&e.newMessageCount++,e.idIndex[r.id]=r,e.messages.push(e.idIndex[r.id]),e.idempotencyKeyIndex[r.idempotency_key]=!0)},s=0;s<n.length;s++){var a=o(s);if("object"===_t()(a))return a.v}},empty:function(e){return{idIndex:{},idempotencyKeyIndex:{},messages:[],newMessageCount:0,lastSeenMessageId:"0",chatId:e,minId:void 0,maxId:void 0}},getView:function(e){if(!e)return[];var t,n=[],r=yt()(e.messages,["pending","id"],["asc","asc"]),i=r[0],o=r[r.length-1];if(i){var s=new Date(i.created_at);s.setHours(0,0,0,0),n.push({type:"date",date:s,id:s.getTime().toString()})}for(var a=!1,c=0;c<r.length;c++){var l=r[c],u=r[c+1],d=new Date(l.created_at);d.setHours(0,0,0,0),o&&o.date<d&&(n.push({type:"date",date:d,id:d.getTime().toString()}),o.isTail=!0,t=void 0,a=!0);var p={type:"message",data:l,date:d,id:l.id,messageChainId:t};(u&&u.account_id)!==l.account_id&&(p.isTail=!0,t=void 0),((o&&o.data&&o.data.account_id)!==l.account_id||a)&&(t=Ct()(),p.isHead=!0,p.messageChainId=t),n.push(p),o=p,a=!1}return n},deleteMessage:function(e,t){if(e){if(e.messages=e.messages.filter((function(e){return e.id!==t})),delete e.idIndex[t],e.maxId===t){var n=F()(e.messages,"id");e.maxId=n.id}if(e.minId===t){var r=M()(e.messages,"id");e.minId=r.id}}},cullOlderMessages:function(e){var t=e.messages.length,n=t-50;if(!(t<=50)){e.messages=xt()(e.messages,["id"]),e.minId=e.messages[n].id;var r,i=Dt(e.messages);try{for(i.s();!(r=i.n()).done;){var o=r.value;o.id<e.minId&&(delete e.idIndex[o.id],delete e.idempotencyKeyIndex[o.idempotency_key])}}catch(e){i.e(e)}finally{i.f()}e.messages=e.messages.slice(n,t)}},resetNewMessageCount:function(e){e&&(e.newMessageCount=0,e.lastSeenMessageId=e.maxId)},clear:function(e){var t,n=[],r=Dt(e.messages);try{for(r.s();!(t=r.n()).done;){var i=t.value;i.error?n.push(i.id):(delete e.idIndex[i.id],delete e.idempotencyKeyIndex[i.idempotency_key])}}catch(e){r.e(e)}finally{r.f()}e.messages=e.messages.filter((function(e){return n.includes(e.id)})),e.newMessageCount=0,e.lastSeenMessageId="0",e.minId=void 0,e.maxId=void 0},handleMessageError:function(e,t,n){if(e){var r=e.idIndex[t];if(r&&(r.error=!0,r.pending=!1,!n)){var i=yt()(e.messages,["pending","id"],["asc","desc"])[0];if(i){var o=r.id;r.id="".concat(i.id,"-").concat((new Date).getTime()),e.idIndex[r.id]=r,delete e.idIndex[o]}}}}},zt=n(14);function Mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ut(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mt(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ft={chatList:{data:[],idStore:{}},chatListFetcher:null,openedChats:Object(wt.F)({}),openedChatMessageServices:Object(wt.F)({}),fetcher:void 0,currentChatId:null,lastReadMessageId:null},Et=function(e,t){return L()(e.chatList.data,{id:t})},Lt={state:Ut({},Ft),getters:{currentChat:function(e){return e.openedChats[e.currentChatId]},currentChatMessageService:function(e){return e.openedChatMessageServices[e.currentChatId]},findOpenedChatByRecipientId:function(e){return function(t){return L()(e.openedChats,(function(e){return e.account.id===t}))}},sortedChatList:function(e){return yt()(e.chatList.data,["updated_at"],["desc"])},unreadChatCount:function(e){return gt()(e.chatList.data,"unread")}},actions:{startFetchingChats:function(e){var t=e.dispatch,n=e.commit,r=function(){return t("fetchChats",{latest:!0})};r(),n("setChatListFetcher",{fetcher:function(){return Object(je.a)(r,6e4)}})},stopFetchingChats:function(e){(0,e.commit)("setChatListFetcher",{fetcher:void 0})},fetchChats:function(e){var t=e.dispatch,n=e.rootState;e.commit;return n.api.backendInteractor.chats().then((function(e){var n=e.chats;return t("addNewChats",{chats:n}),n}))},addNewChats:function(e,t){var n=t.chats;(0,e.commit)("addNewChats",{dispatch:e.dispatch,chats:n,rootGetters:e.rootGetters,newChatMessageSideEffects:function(t){Qe(e,t)}})},updateChat:function(e,t){(0,e.commit)("updateChat",{chat:t.chat})},startFetchingCurrentChat:function(e,t){e.commit;(0,e.dispatch)("setCurrentChatFetcher",{fetcher:t.fetcher})},setCurrentChatFetcher:function(e,t){e.rootState;(0,e.commit)("setCurrentChatFetcher",{fetcher:t.fetcher})},addOpenedChat:function(e,t){e.rootState;var n=e.commit,r=e.dispatch,i=t.chat;n("addOpenedChat",{dispatch:r,chat:Object(zt.b)(i)}),r("addNewUsers",[i.account])},addChatMessages:function(e,t){var n=e.commit;n("addChatMessages",Ut({commit:n},t))},resetChatNewMessageCount:function(e,t){(0,e.commit)("resetChatNewMessageCount",t)},clearCurrentChat:function(e,t){e.rootState;var n=e.commit;e.dispatch;n("setCurrentChatId",{chatId:void 0}),n("setCurrentChatFetcher",{fetcher:void 0})},readChat:function(e,t){var n=e.rootState,r=e.commit,i=e.dispatch,o=t.id,s=t.lastReadId,a=n.chats.lastReadMessageId!==s;i("resetChatNewMessageCount"),r("readChat",{id:o,lastReadId:s}),a&&n.api.backendInteractor.readChat({id:o,lastReadId:s})},deleteChatMessage:function(e,t){var n=e.rootState,r=e.commit;n.api.backendInteractor.deleteChatMessage(t),r("deleteChatMessage",Ut({commit:r},t))},resetChats:function(e){var t=e.commit;(0,e.dispatch)("clearCurrentChat"),t("resetChats",{commit:t})},clearOpenedChats:function(e){e.rootState;var t=e.commit;e.dispatch,e.rootGetters;t("clearOpenedChats",{commit:t})},handleMessageError:function(e,t){var n=e.commit;n("handleMessageError",Ut({commit:n},t))},cullOlderMessages:function(e,t){(0,e.commit)("cullOlderMessages",t)}},mutations:{setChatListFetcher:function(e,t){t.commit;var n=t.fetcher,r=e.chatListFetcher;r&&r.stop(),e.chatListFetcher=n&&n()},setCurrentChatFetcher:function(e,t){var n=t.fetcher,r=e.fetcher;r&&r.stop(),e.fetcher=n&&n()},addOpenedChat:function(e,t){t._dispatch;var n=t.chat;e.currentChatId=n.id,e.openedChats[n.id]=n,e.openedChatMessageServices[n.id]||(e.openedChatMessageServices[n.id]=$t.empty(n.id))},setCurrentChatId:function(e,t){var n=t.chatId;e.currentChatId=n},addNewChats:function(e,t){var n=t.chats,r=t.newChatMessageSideEffects;n.forEach((function(t){var n=Et(e,t.id);if(n){var i=(n.lastMessage&&n.lastMessage.id)!==(t.lastMessage&&t.lastMessage.id);n.lastMessage=t.lastMessage,n.unread=t.unread,n.updated_at=t.updated_at,i&&n.unread&&r(t)}else e.chatList.data.push(t),e.chatList.idStore[t.id]=t}))},updateChat:function(e,t){t._dispatch;var n=t.chat,r=(t._rootGetters,Et(e,n.id));r&&(r.lastMessage=n.lastMessage,r.unread=n.unread,r.updated_at=n.updated_at),r||e.chatList.data.unshift(n),e.chatList.idStore[n.id]=n},deleteChat:function(e,t){t._dispatch;var n=t.id;t._rootGetters;e.chats.data=e.chats.data.filter((function(e){return e.last_status.id!==n})),e.chats.idStore=_()(e.chats.idStore,(function(e){return e.last_status.id===n}))},resetChats:function(e,t){var n=t.commit;for(var r in e.chatList={data:[],idStore:{}},e.currentChatId=null,n("setChatListFetcher",{fetcher:void 0}),e.openedChats)$t.clear(e.openedChatMessageServices[r]),delete e.openedChats[r],delete e.openedChatMessageServices[r]},setChatsLoading:function(e,t){var n=t.value;e.chats.loading=n},addChatMessages:function(e,t){var n=t.chatId,r=t.messages,i=t.updateMaxId,o=e.openedChatMessageServices[n];o&&$t.add(o,{messages:r.map(zt.c),updateMaxId:i})},deleteChatMessage:function(e,t){var n=t.chatId,r=t.messageId,i=e.openedChatMessageServices[n];i&&$t.deleteMessage(i,r)},resetChatNewMessageCount:function(e,t){var n=e.openedChatMessageServices[e.currentChatId];$t.resetNewMessageCount(n)},clearOpenedChats:function(e){var t=e.currentChatId;for(var n in e.openedChats)t!==n&&($t.clear(e.openedChatMessageServices[n]),delete e.openedChats[n],delete e.openedChatMessageServices[n])},readChat:function(e,t){var n=t.id,r=t.lastReadId;e.lastReadMessageId=r;var i=Et(e,n);i&&(i.unread=0)},handleMessageError:function(e,t){var n=t.chatId,r=t.fakeId,i=t.isRetry,o=e.openedChatMessageServices[n];$t.handleMessageError(o,r,i)},cullOlderMessages:function(e,t){$t.cullOlderMessages(e.openedChatMessageServices[t])}}},Rt=n(335),At=n(135),Nt=n.n(At),Bt=n(39),Vt=n.n(Bt),Ht=n(16),qt=n.n(Ht),Jt=n(323),Wt=n.n(Jt),Yt=n(324),Gt=!1,Kt=function(e,t){return 0===t.length?e:t.reduce((function(t,n){return Vt()(t,n,qt()(e,n)),t}),{})},Xt=["markNotificationsAsSeen","clearCurrentUser","setCurrentUser","setHighlight","setOption","setClientData","setToken","clearToken"],Zt=n.n(Yt).a;function Qt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.key,n=void 0===t?"vuex-lz":t,r=e.paths,i=void 0===r?[]:r,o=e.getState,s=void 0===o?function(e,t){return t.getItem(e)}:o,a=e.setState,c=void 0===a?function(e,t,n){return Gt?n.setItem(e,t):(console.log("waiting for old state to be loaded..."),Promise.resolve())}:a,l=e.reducer,u=void 0===l?Kt:l,d=e.storage,p=void 0===d?Zt:d,h=e.subscriber,b=void 0===h?function(e){return function(t){return e.subscribe(t)}}:h;return s(n,p).then((function(e){return function(t){try{if(null!==e&&"object"===_t()(e)){var r=e.users||{};r.usersObject={};var o=r.users||[];B()(o,(function(e){r.usersObject[e.id]=e})),e.users=r,t.replaceState(Wt()({},t.state,e))}Gt=!0}catch(e){console.log("Couldn't load state"),console.error(e),Gt=!0}b(t)((function(e,r){try{Xt.includes(e.type)&&c(n,u(Nt()(r),i),p).then((function(n){void 0!==n&&("setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{success:n}))}),(function(n){"setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{error:n})}))}catch(e){console.log("Couldn't persist state:"),console.log(e)}}))}}))}var en=function(e){e.subscribe((function(t,n){var r=n.instance.vapidPublicKey,i=n.config.webPushNotifications,o="granted"===n.interface.notificationPermission,s=n.users.currentUser,a="setCurrentUser"===t.type,c="setInstanceOption"===t.type&&"vapidPublicKey"===t.payload.name,l="setNotificationPermission"===t.type&&"granted"===t.payload,u="setOption"===t.type&&"webPushNotifications"===t.payload.name,d="setOption"===t.type&&"notificationVisibility"===t.payload.name;if(a||c||l||u||d){if(s&&r&&o&&i)return e.dispatch("registerPushNotifications");if(u&&!i)return e.dispatch("unregisterPushNotifications")}}))},tn=n(70),nn=n(171),rn=n(325),on=n.n(rn),sn=n(68);const an=Object(wt.k)("div",{id:"app_bg_wrapper",class:"app-bg-wrapper"},null,-1),cn=Object(wt.k)("div",{class:"underlay"},null,-1),ln=Object(wt.k)("div",{id:"notifs-sidebar"},null,-1),un={key:0,class:"login-hint panel panel-default"},dn=Object(wt.k)("div",{id:"modal"},null,-1);const pn={class:"user-panel"},hn={key:"user-panel-signed",class:"panel panel-default signed-in"};const bn={class:"login panel panel-default"},mn={class:"panel-heading"},fn={class:"panel-body"},On={class:"form-group"},jn={for:"username"},gn=["disabled","placeholder"],vn={class:"form-group"},yn={for:"password"},wn=["disabled"],kn={class:"form-group"},_n={key:1,class:"form-group"},Sn={class:"form-group"},Cn={class:"login-bottom"},Pn=["disabled"],xn={key:0,class:"form-group"},Dn={class:"alert error"};var Tn=n(6),In=n(3);function $n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$n(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$n(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Mn={data:function(){return{user:{},error:!1}},computed:zn(zn({isPasswordAuth:function(){return this.requiredPassword},isTokenAuth:function(){return this.requiredToken}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},instance:function(e){return e.instance},loggingIn:function(e){return e.users.loggingIn},oauth:function(e){return e.oauth}})),Object(a.c)("authFlow",["requiredPassword","requiredToken","requiredMFA"])),methods:zn(zn(zn({},Object(a.d)("authFlow",["requireMFA"])),Object(a.b)({login:"authFlow/login"})),{},{submit:function(){this.isTokenAuth?this.submitToken():this.submitPassword()},submitToken:function(){var e=this.oauth,t={clientId:e.clientId,clientSecret:e.clientSecret,instance:this.instance.server,commit:this.$store.commit};ze.getOrCreateApp(t).then((function(e){ze.login(zn(zn({},e),t))}))},submitPassword:function(){var e=this,t={clientId:this.oauth.clientId,oauth:this.oauth,instance:this.instance.server,commit:this.$store.commit};this.error=!1,ze.getOrCreateApp(t).then((function(n){ze.getTokenWithCredentials(zn(zn({},n),{},{instance:t.instance,username:e.user.username,password:e.user.password})).then((function(t){t.error?"mfa_required"===t.error?e.requireMFA({settings:t}):"password_reset_required"===t.identifier?e.$router.push({name:"password-reset",params:{passwordResetRequested:!0}}):(e.error=t.error,e.focusOnPasswordInput()):e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}))},clearError:function(){this.error=!1},focusOnPasswordInput:function(){var e=this.$refs.passwordInput;e.focus(),e.setSelectionRange(0,e.value.length)}})},Un=(n(498),n(4)),Fn=n.n(Un);var En=Fn()(Mn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",bn,[Object(wt.k)("div",mn,Object(wt.O)(e.$t("login.login")),1),Object(wt.k)("div",fn,[Object(wt.k)("form",{class:"login-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[e.isPasswordAuth?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("div",On,[Object(wt.k)("label",jn,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.username=t),disabled:e.loggingIn,class:"form-control",placeholder:e.$t("login.placeholder")},null,8,gn),[[wt.S,e.user.username]])]),Object(wt.k)("div",vn,[Object(wt.k)("label",yn,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"password",ref:"passwordInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.user.password=t),disabled:e.loggingIn,class:"form-control",type:"password"},null,8,wn),[[wt.S,e.user.password]])]),Object(wt.k)("div",kn,[Object(wt.m)(s,{to:{name:"password-reset"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.forgot_password")),1)]),_:1})])],64)):Object(wt.i)("",!0),e.isTokenAuth?(Object(wt.D)(),Object(wt.j)("div",_n,[Object(wt.k)("p",null,Object(wt.O)(e.$t("login.description")),1)])):Object(wt.i)("",!0),Object(wt.k)("div",Sn,[Object(wt.k)("div",Cn,[Object(wt.k)("div",null,[e.registrationOpen?(Object(wt.D)(),Object(wt.h)(s,{key:0,to:{name:"registration"},class:"register"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.register")),1)]),_:1})):Object(wt.i)("",!0)]),Object(wt.k)("button",{disabled:e.loggingIn,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("login.login")),9,Pn)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",xn,[Object(wt.k)("div",Dn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(a,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const Ln={class:"login panel panel-default"},Rn={class:"panel-heading"},An={class:"panel-body"},Nn={class:"form-group"},Bn={for:"code"},Vn={class:"form-group"},Hn={class:"login-bottom"},qn=Object(wt.k)("br",null,null,-1),Jn={type:"submit",class:"btn button-default"},Wn={key:0,class:"form-group"},Yn={class:"alert error"};var Gn={verifyOTPCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","totp"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.clientId,n=e.clientSecret,r=e.instance,i=e.mfaToken,o=e.code,s="".concat(r,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",i),a.append("code",o),a.append("challenge_type","recovery"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))}};function Kn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Kn(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Kn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Zn={data:function(){return{code:null,error:!1}},computed:Xn(Xn({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:Xn(Xn(Xn({},Object(a.d)("authFlow",["requireTOTP","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyRecoveryCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var Qn=Fn()(Zn,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ln,[Object(wt.k)("div",Rn,Object(wt.O)(e.$t("login.heading.recovery")),1),Object(wt.k)("div",An,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Nn,[Object(wt.k)("label",Bn,Object(wt.O)(e.$t("login.recovery_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",Vn,[Object(wt.k)("div",Hn,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireTOTP&&e.requireTOTP(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_two_factor_code")),1),qn,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",Jn,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",Wn,[Object(wt.k)("div",Yn,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);const er={class:"login panel panel-default"},tr={class:"panel-heading"},nr={class:"panel-body"},rr={class:"form-group"},ir={for:"code"},or={class:"form-group"},sr={class:"login-bottom"},ar=Object(wt.k)("br",null,null,-1),cr={type:"submit",class:"btn button-default"},lr={key:0,class:"form-group"},ur={class:"alert error"};function dr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var hr={data:function(){return{code:null,error:!1}},computed:pr(pr({},Object(a.c)({authSettings:"authFlow/settings"})),Object(a.e)({instance:"instance",oauth:"oauth"})),methods:pr(pr(pr({},Object(a.d)("authFlow",["requireRecovery","abortMFA"])),Object(a.b)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Gn.verifyOTPCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})};var br=Fn()(hr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",er,[Object(wt.k)("div",tr,Object(wt.O)(e.$t("login.heading.totp")),1),Object(wt.k)("div",nr,[Object(wt.k)("form",{class:"login-form",onSubmit:t[3]||(t[3]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",rr,[Object(wt.k)("label",ir,Object(wt.O)(e.$t("login.authentication_code")),1),Object(wt.W)(Object(wt.k)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=t=>e.code=t),class:"form-control"},null,512),[[wt.S,e.code]])]),Object(wt.k)("div",or,[Object(wt.k)("div",sr,[Object(wt.k)("div",null,[Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.requireRecovery&&e.requireRecovery(...t),["prevent"]))},Object(wt.O)(e.$t("login.enter_recovery_code")),1),ar,Object(wt.k)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.abortMFA&&e.abortMFA(...t),["prevent"]))},Object(wt.O)(e.$t("general.cancel")),1)]),Object(wt.k)("button",cr,Object(wt.O)(e.$t("general.verify")),1)])])],32)]),e.error?(Object(wt.D)(),Object(wt.j)("div",lr,[Object(wt.k)("div",ur,[Object(wt.l)(Object(wt.O)(e.error)+" ",1),Object(wt.k)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=(...t)=>e.clearError&&e.clearError(...t))},[Object(wt.m)(s,{size:"lg",class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):Object(wt.i)("",!0)])}]]);function mr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var fr={name:"AuthForm",render:function(){return Object(wt.q)(Object(wt.J)(this.authForm))},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({authForm:function(){return this.requiredTOTP?"MFATOTPForm":this.requiredRecovery?"MFARecoveryForm":"LoginForm"}},Object(a.c)("authFlow",["requiredTOTP","requiredRecovery"])),components:{MFARecoveryForm:Qn,MFATOTPForm:br,LoginForm:En}},Or=n(57),jr=n(35);function gr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var vr={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({signedIn:function(){return this.user}},Object(a.e)({user:function(e){return e.users.currentUser}})),components:{AuthForm:fr,PostStatusForm:Or.a,UserCard:jr.a}};n(531);var yr=Fn()(vr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("PostStatusForm"),c=Object(wt.J)("auth-form");return Object(wt.D)(),Object(wt.j)("div",pn,[e.signedIn?(Object(wt.D)(),Object(wt.j)("div",hn,[Object(wt.m)(s,{"user-id":e.user.id,"hide-bio":!0,rounded:"top"},null,8,["user-id"]),Object(wt.m)(a)])):(Object(wt.D)(),Object(wt.h)(c,{key:"user-panel"}))])}]]);const wr={class:"NavPanel"},kr={class:"panel panel-default"},_r={key:0},Sr={class:"timelines-background"},Cr={key:1},Pr={key:2},xr={key:0,class:"badge badge-notification"},Dr={key:3},Tr={key:0,class:"badge badge-notification"};const Ir={key:0},$r={key:1},zr={key:2},Mr={key:3},Ur={key:4};function Fr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.wb,In.I,In.j,In.y,In.J);var Er={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object(a.e)({currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}}))};var Lr=Fn()(Er,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("ul",null,[e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ir,[Object(wt.m)(a,{class:"menu-item",to:{name:"friends"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(Object(wt.O)(e.$t("nav.home_timeline")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",$r,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"users"}),Object(wt.l)(Object(wt.O)(e.$t("nav.public_tl")),1)]),_:1})])):Object(wt.i)("",!0),!e.federating||!e.currentUser&&e.privateMode?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",zr,[Object(wt.m)(a,{class:"menu-item",to:{name:"public-external-timeline"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"globe"}),Object(wt.l)(Object(wt.O)(e.$t("nav.twkn")),1)]),_:1})])),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Mr,[Object(wt.m)(a,{class:"menu-item",to:{name:"bookmarks"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bookmark"}),Object(wt.l)(Object(wt.O)(e.$t("nav.bookmarks")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Ur,[Object(wt.m)(a,{class:"menu-item",to:{name:"dms",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"envelope"}),Object(wt.l)(Object(wt.O)(e.$t("nav.dms")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0)])}]]);function Rr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rr(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.wb,In.I,In.j,In.y,In.n,In.q,In.t,In.i,In.M,In.mb);var Nr={created:function(){this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{TimelineMenuContent:Lr},data:function(){return{showTimelines:!1}},methods:{toggleTimelines:function(){this.showTimelines=!this.showTimelines}},computed:Ar(Ar({},Object(a.e)({currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"]))};n(532);var Br=Fn()(Nr,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("TimelineMenuContent"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",wr,[Object(wt.k)("div",kr,[Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",_r,[Object(wt.k)("button",{class:"button-unstyled menu-item",onClick:t[0]||(t[0]=(...t)=>e.toggleTimelines&&e.toggleTimelines(...t))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"stream"}),Object(wt.l)(Object(wt.O)(e.$t("nav.timelines"))+" ",1),Object(wt.m)(s,{class:"timelines-chevron","fixed-width":"",icon:e.showTimelines?"chevron-up":"chevron-down"},null,8,["icon"])]),Object(wt.W)(Object(wt.k)("div",Sr,[Object(wt.m)(a,{class:"timelines"})],512),[[wt.T,e.showTimelines]])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",Cr,[Object(wt.m)(c,{class:"menu-item",to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"bell"}),Object(wt.l)(Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",Pr,[Object(wt.m)(c,{class:"menu-item",to:{name:"chats",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",xr,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0),Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"comments"}),Object(wt.l)(Object(wt.O)(e.$t("nav.chats")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",Dr,[Object(wt.m)(c,{class:"menu-item",to:{name:"friend-requests"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"user-plus"}),Object(wt.l)(Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Tr,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",null,[Object(wt.m)(c,{class:"menu-item",to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110",icon:"info-circle"}),Object(wt.l)(Object(wt.O)(e.$t("nav.about")),1)]),_:1})])])])])}]]);const Vr={class:"instance-specific-panel"},Hr={class:"panel panel-default"},qr={class:"panel-body"},Jr=["innerHTML"];var Wr={computed:{instanceSpecificPanelContent:function(){return this.$store.state.instance.instanceSpecificPanelContent}}};var Yr=Fn()(Wr,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Vr,[Object(wt.k)("div",Hr,[Object(wt.k)("div",qr,[Object(wt.k)("div",{innerHTML:e.instanceSpecificPanelContent},null,8,Jr)])])])}]]);const Gr={class:"features-panel"},Kr={class:"panel panel-default base01-background"},Xr={class:"panel-heading timeline-heading base02-background base04"},Zr={class:"title"},Qr={class:"panel-body features-panel"},ei={key:0},ti={key:1},ni={key:2},ri={key:3},ii={key:4};var oi=n(96),si={computed:{shout:function(){return this.$store.state.instance.shoutAvailable},pleromaChatMessages:function(){return this.$store.state.instance.pleromaChatMessagesAvailable},gopher:function(){return this.$store.state.instance.gopherAvailable},whoToFollow:function(){return this.$store.state.instance.suggestionsEnabled},mediaProxy:function(){return this.$store.state.instance.mediaProxyAvailable},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},textlimit:function(){return this.$store.state.instance.textlimit},uploadlimit:function(){return oi.a.fileSizeFormat(this.$store.state.instance.uploadlimit)}}};n(533);var ai=Fn()(si,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Gr,[Object(wt.k)("div",Kr,[Object(wt.k)("div",Xr,[Object(wt.k)("div",Zr,Object(wt.O)(e.$t("features_panel.title")),1)]),Object(wt.k)("div",Qr,[Object(wt.k)("ul",null,[e.shout?(Object(wt.D)(),Object(wt.j)("li",ei,Object(wt.O)(e.$t("features_panel.shout")),1)):Object(wt.i)("",!0),e.pleromaChatMessages?(Object(wt.D)(),Object(wt.j)("li",ti,Object(wt.O)(e.$t("features_panel.pleroma_chat_messages")),1)):Object(wt.i)("",!0),e.gopher?(Object(wt.D)(),Object(wt.j)("li",ni,Object(wt.O)(e.$t("features_panel.gopher")),1)):Object(wt.i)("",!0),e.whoToFollow?(Object(wt.D)(),Object(wt.j)("li",ri,Object(wt.O)(e.$t("features_panel.who_to_follow")),1)):Object(wt.i)("",!0),e.mediaProxy?(Object(wt.D)(),Object(wt.j)("li",ii,Object(wt.O)(e.$t("features_panel.media_proxy")),1)):Object(wt.i)("",!0),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.scope_options")),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.text_limit"))+" = "+Object(wt.O)(e.textlimit),1),Object(wt.k)("li",null,Object(wt.O)(e.$t("features_panel.upload_limit"))+" = "+Object(wt.O)(e.uploadlimit.num)+" "+Object(wt.O)(e.$t("upload.file_size_units."+e.uploadlimit.unit)),1)])])])])}]]);const ci={class:"who-to-follow-panel"},li={class:"panel panel-default base01-background"},ui={class:"panel-heading timeline-heading base02-background base04"},di={class:"title"},pi={class:"who-to-follow"},hi=["src"],bi=Object(wt.k)("br",null,null,-1),mi={class:"who-to-follow-more"};var fi=n(330),Oi=n.n(fi),ji=n(23);function gi(e){var t=e.$store.state.users.currentUser.credentials;t&&(e.usersToFollow.forEach((function(e){e.name="Loading..."})),j.c.suggestions({credentials:t}).then((function(t){!function(e,t){var n=this,r=Oi()(t);e.usersToFollow.forEach((function(t,i){var o=r[i],s=o.avatar||n.$store.state.instance.defaultAvatar,a=o.acct;t.img=s,t.name=a,e.$store.state.api.backendInteractor.fetchUser({id:a}).then((function(n){n.error||(e.$store.commit("addNewUsers",[n]),t.id=n.id)}))}))}(e,t)})))}var vi={data:function(){return{usersToFollow:[]}},computed:{user:function(){return this.$store.state.users.currentUser.screen_name},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled}},methods:{userProfileLink:function(e,t){return Object(ji.a)(e,t,this.$store.state.instance.restrictedNicknames)}},watch:{user:function(e,t){this.suggestionsEnabled&&gi(this)}},mounted:function(){var e=this;this.usersToFollow=new Array(3).fill().map((function(t){return{img:e.$store.state.instance.defaultAvatar,name:"",id:0}})),this.suggestionsEnabled&&gi(this)}};n(537);var yi=Fn()(vi,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",ci,[Object(wt.k)("div",li,[Object(wt.k)("div",ui,[Object(wt.k)("div",di,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1)]),Object(wt.k)("div",pi,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.usersToFollow,t=>(Object(wt.D)(),Object(wt.j)("p",{key:t.id,class:"who-to-follow-items"},[Object(wt.k)("img",{src:t.img},null,8,hi),Object(wt.m)(s,{to:e.userProfileLink(t.id,t.name)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.name),1)]),_:2},1032,["to"]),bi]))),128)),Object(wt.k)("p",mi,[Object(wt.m)(s,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("who_to_follow.more")),1)]),_:1})])])])])}]]);const wi={key:0,class:"shout-panel"},ki={class:"panel panel-default"},_i={class:"title"},Si={class:"shout-window"},Ci={class:"shout-avatar"},Pi=["src"],xi={class:"shout-content"},Di=Object(wt.k)("br",null,null,-1),Ti={class:"shout-text"},Ii={class:"shout-input"},$i={key:1,class:"shout-panel"},zi={class:"panel panel-default"},Mi={class:"title"};Tn.c.add(In.l,In.rb);var Ui={props:["floating"],data:function(){return{currentMessage:"",channel:null,collapsed:!0}},computed:{messages:function(){return this.$store.state.shout.messages}},methods:{submit:function(e){this.$store.state.shout.channel.push("new_msg",{text:e},1e4),this.currentMessage=""},togglePanel:function(){this.collapsed=!this.collapsed},userProfileLink:function(e){return Object(ji.a)(e.id,e.username,this.$store.state.instance.restrictedNicknames)}},watch:{messages:function(e){var t=this.$el.querySelector(".chat-window");t&&t.scrollTop+t.offsetHeight+20>t.scrollHeight&&this.$nextTick((function(){t&&(t.scrollTop=t.scrollHeight-t.offsetHeight)}))}}};n(538);var Fi=Fn()(Ui,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link");return e.collapsed&&e.floating?(Object(wt.D)(),Object(wt.j)("div",$i,[Object(wt.k)("div",zi,[Object(wt.k)("div",{class:"panel-heading -stub timeline-heading shout-heading",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",Mi,[Object(wt.m)(s,{class:"icon",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)])])])])):(Object(wt.D)(),Object(wt.j)("div",wi,[Object(wt.k)("div",ki,[Object(wt.k)("div",{class:Object(wt.w)(["panel-heading timeline-heading",{"shout-heading":e.floating}]),onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.togglePanel&&e.togglePanel(...t),["stop","prevent"]))},[Object(wt.k)("div",_i,[Object(wt.l)(Object(wt.O)(e.$t("shoutbox.title"))+" ",1),e.floating?(Object(wt.D)(),Object(wt.h)(s,{key:0,icon:"times",class:"close-icon"})):Object(wt.i)("",!0)])],2),Object(wt.k)("div",Si,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.messages,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"shout-message"},[Object(wt.k)("span",Ci,[Object(wt.k)("img",{src:t.author.avatar},null,8,Pi)]),Object(wt.k)("div",xi,[Object(wt.m)(a,{class:"shout-name",to:e.userProfileLink(t.author)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(t.author.username),1)]),_:2},1032,["to"]),Di,Object(wt.k)("span",Ti,Object(wt.O)(t.text),1)])]))),128))]),Object(wt.k)("div",Ii,[Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[1]||(t[1]=t=>e.currentMessage=t),class:"shout-input-textarea",rows:"1",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.submit(e.currentMessage),["enter"]))},null,544),[[wt.S,e.currentMessage]])])])]))}]]);const Ei={class:"settings-modal-panel panel"},Li={class:"panel-heading"},Ri={class:"title"},Ai=["title"],Ni=["title"],Bi={class:"panel-body"},Vi={class:"panel-footer settings-footer"},Hi=["title"],qi=Object(wt.l)(" "+Object(wt.O)(" ")+" "),Ji={class:"dropdown-menu"},Wi=["onClick"],Yi=["onClick"],Gi=["onClick"],Ki=Object(wt.k)("span",{id:"unscrolled-content",class:"extra-content"},null,-1);var Xi={props:{isOpen:{type:Boolean,default:!0},noBackground:{type:Boolean,default:!1}},computed:{classes:function(){return{"modal-background":!this.noBackground,open:this.isOpen}}}};n(539);var Zi=Fn()(Xi,[["render",function(e,t,n,r,i,o){const s=Object(wt.K)("body-scroll-lock");return Object(wt.W)((Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["modal-view",o.classes]),onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.$emit("backdropClicked"),["self"]))},[Object(wt.I)(e.$slots,"default")],2)),[[wt.T,n.isOpen],[s,n.isOpen&&!n.noBackground]])}]]);const Qi={class:"panel-loading"},eo={class:"loading-text"};Tn.c.add(In.r);var to={};n(540);var no=Fn()(to,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Qi,[Object(wt.k)("span",eo,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"3x"}),Object(wt.l)(" "+Object(wt.O)(e.$t("general.loading")),1)])])}]]);const ro={class:"async-component-error"};var io={emits:["resetAsyncComponent"],methods:{retry:function(){this.$emit("resetAsyncComponent")}}};n(541);var oo=Fn()(io,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",ro,[Object(wt.k)("div",null,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.generic_error")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("general.error_retry")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...e)=>o.retry&&o.retry(...e))},Object(wt.O)(e.$t("general.retry")),1)])])}]]);function so(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var ao=function(e,t){var n=function(){return function(){return Object(wt.n)(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?so(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):so(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({loader:e},t))}},r=Object(wt.M)({c:n()});return{render:function(){return Object(wt.q)(r.c(),{onResetAsyncComponent:function(){r.c=n()}})}}},co=n(24),lo=n(51),uo=n(138),po=n(41);function ho(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function bo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ho(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ho(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,po.e,In.F,In.E,In.n);var mo={data:function(){var e=this;return{dataImporter:Object(uo.b)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),dataThemeExporter:Object(uo.a)({filename:"pleromafe_settings.full",getExportedObject:function(){return e.generateExport(!0)}}),dataExporter:Object(uo.a)({filename:"pleromafe_settings",getExportedObject:function(){return e.generateExport()}})}},components:{Modal:Zi,Popover:co.default,Checkbox:lo.a,SettingsModalContent:ao((function(){return Promise.all([n.e(3),n.e(2)]).then(n.bind(null,708))}),{loadingComponent:no,errorComponent:oo,delay:0})},methods:{closeModal:function(){this.$store.dispatch("closeSettingsModal")},peekModal:function(){this.$store.dispatch("togglePeekSettingsModal")},importValidator:function(e){if(!Array.isArray(e._pleroma_settings_version))return{messageKey:"settings.file_import_export.invalid_file"};var t=m()(e._pleroma_settings_version,2),n=t[0],r=t[1];return n>1?{messageKey:"settings.file_export_import.errors.file_too_new",messageArgs:{fileMajor:n,feMajor:1}}:n<1?{messageKey:"settings.file_export_import.errors.file_too_old",messageArgs:{fileMajor:n,feMajor:1}}:(r>0&&this.$store.dispatch("pushGlobalNotice",{level:"warning",messageKey:"settings.file_export_import.errors.file_slightly_new"}),!0)},onImportFailure:function(e){e.error?this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_settings_imported",level:"error"}):this.$store.dispatch("pushGlobalNotice",bo(bo({},e.validationResult),{},{level:"error"}))},onImport:function(e){e&&this.$store.dispatch("loadSettings",e)},restore:function(){this.dataImporter.importData()},backup:function(){this.dataExporter.exportData()},backupWithTheme:function(){this.dataThemeExporter.exportData()},generateExport:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$store.state.config,n=t;if(!e){var r=new Set(["customTheme","customThemeSource","colors"]);n=Object.fromEntries(Object.entries(n).filter((function(e){var t=m()(e,1)[0];return!r.has(t)})))}var i=Nt()(n);return i._pleroma_settings_version=[1,0],i}},computed:{currentSaveStateNotice:function(){return this.$store.state.interface.settings.currentSaveStateNotice},modalActivated:function(){return"hidden"!==this.$store.state.interface.settingsModalState},modalOpenedOnce:function(){return this.$store.state.interface.settingsModalLoaded},modalPeeked:function(){return"minimized"===this.$store.state.interface.settingsModalState},expertLevel:{get:function(){return this.$store.state.config.expertLevel>0},set:function(e){console.log(e),this.$store.dispatch("setOption",{name:"expertLevel",value:e?1:0})}}}};n(542);var fo=Fn()(mo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("SettingsModalContent"),c=Object(wt.J)("Popover"),l=Object(wt.J)("Checkbox"),u=Object(wt.J)("Modal");return Object(wt.D)(),Object(wt.h)(u,{"is-open":e.modalActivated,class:Object(wt.w)(["settings-modal",{peek:e.modalPeeked}]),"no-background":e.modalPeeked},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ei,[Object(wt.k)("div",Li,[Object(wt.k)("span",Ri,Object(wt.O)(e.$t("settings.settings")),1),Object(wt.m)(wt.e,{name:"fade"},{default:Object(wt.V)(()=>[e.currentSaveStateNotice?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["alert",{transparent:!e.currentSaveStateNotice.error,error:e.currentSaveStateNotice.error}]),onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.currentSaveStateNotice.error?e.$t("settings.saving_err"):e.$t("settings.saving_ok")),3)):Object(wt.i)("",!0)]),_:1}),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.peek"),onClick:t[1]||(t[1]=(...t)=>e.peekModal&&e.peekModal(...t))},[Object(wt.m)(s,{icon:["far","window-minimize"],"fixed-width":""})],8,Ai),Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close"),onClick:t[2]||(t[2]=(...t)=>e.closeModal&&e.closeModal(...t))},[Object(wt.m)(s,{icon:"times","fixed-width":""})],8,Ni)]),Object(wt.k)("div",Bi,[e.modalOpenedOnce?(Object(wt.D)(),Object(wt.h)(a,{key:0})):Object(wt.i)("",!0)]),Object(wt.k)("div",Vi,[Object(wt.m)(c,{class:"export",trigger:"click",placement:"top",offset:{y:5,x:5},"bound-to":{x:"container"},"remove-padding":""},{trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"btn button-default",title:e.$t("general.close")},[Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_restore")),1),qi,Object(wt.m)(s,{icon:"chevron-down"})],8,Hi)]),content:Object(wt.V)(({close:n})=>[Object(wt.k)("div",Ji,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=Object(wt.Y)((...t)=>e.backup&&e.backup(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings")),1)],8,Wi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=Object(wt.Y)((...t)=>e.backupWithTheme&&e.backupWithTheme(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-download","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.backup_settings_theme")),1)],8,Yi),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=Object(wt.Y)((...t)=>e.restore&&e.restore(...t),["prevent"])),n]},[Object(wt.m)(s,{icon:"file-upload","fixed-width":""}),Object(wt.k)("span",null,Object(wt.O)(e.$t("settings.file_export_import.restore_settings")),1)],8,Gi)])]),_:1}),Object(wt.m)(l,{"model-value":!!e.expertLevel,"onUpdate:modelValue":t[6]||(t[6]=t=>e.expertLevel=Number(t))},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("settings.expert_mode")),1)]),_:1},8,["model-value"]),Ki])])]),_:1},8,["is-open","class","no-background"])}]]);const Oo=["src","alt","title"],jo=["src","alt","title"],go=["title"],vo=["title"],yo=["title"],wo={key:6,class:"description"},ko={class:"counter"},_o={key:7,class:"loading-spinner"};var So=n(50),Co=n(141);var Po=n(337),xo={methods:{setTransform:function(e){var t=e.scale,n=e.x,r=e.y;this.$el.setTransform({scale:t,x:n,y:r})}},created:function(){Po.a}};var Do=Fn()(xo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("pinch-zoom");return Object(wt.D)(),Object(wt.h)(s,Object(wt.u)({class:"pinch-zoom-parent"},e.$attrs,Object(wt.P)(e.$listeners)),{default:Object(wt.V)(()=>[Object(wt.I)(e.$slots,"default")]),_:3},16)}]]);var To=n(129),Io=n.n(To),$o=n(128),zo=n.n($o),Mo=function(e,t){return[t[0]-e[0],t[1]-e[1]]},Uo=function(e){return[(t=e.touches[0]).screenX,t.screenY];var t},Fo=function(e){return[e.clientX,e.clientY]},Eo=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},Lo=function(e){return[e[1],-e[0]]},Ro=function(e,t){return e[0]*t[0]+e[1]*t[1]},Ao=function(e,t){var n=Ro(e,t)/Ro(t,t);return[n*t[0],n*t[1]]},No={DIRECTION_LEFT:[-1,0],DIRECTION_RIGHT:[1,0],DIRECTION_UP:[0,-1],DIRECTION_DOWN:[0,1],swipeGesture:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{direction:e,onSwipe:t,threshold:n,perpendicularTolerance:r,_startPos:[0,0],_swiping:!1}},beginSwipe:function(e,t){t._startPos=Uo(e),t._swiping=!0},updateSwipe:function(e,t){if(t._swiping){var n=Mo(t._startPos,Uo(e));if(!(Eo(n)<t.threshold||Ro(n,t.direction)<0)){var r=Ao(n,t.direction),i=Lo(t.direction),o=Ao(n,i);Eo(r)*t.perpendicularTolerance<Eo(o)||(t.onSwipe(),t._swiping=!1)}}},SwipeAndClickGesture:function(){function e(t){var n=t.direction,r=t.swipePreviewCallback,i=t.swipeEndCallback,o=t.swipeCancelCallback,s=t.swipelessClickCallback,a=t.threshold,c=void 0===a?30:a,l=t.perpendicularTolerance,u=void 0===l?1:l,d=t.disableClickThreshold,p=void 0===d?1:d;Io()(this,e);var h=function(){};this.direction=n,this.swipePreviewCallback=r||h,this.swipeEndCallback=i||h,this.swipeCancelCallback=o||h,this.swipelessClickCallback=s||h,this.threshold="function"==typeof c?c:function(){return c},this.disableClickThreshold="function"==typeof p?p:function(){return p},this.perpendicularTolerance=u,this._reset()}return zo()(e,[{key:"_reset",value:function(){this._startPos=[0,0],this._pointerId=-1,this._swiping=!1,this._swiped=!1,this._preventNextClick=!1}},{key:"start",value:function(e){0===e.button&&(this._startPos=Fo(e),this._pointerId=e.pointerId,this._swiping=!0,this._swiped=!1)}},{key:"move",value:function(e){if(this._swiping&&this._pointerId===e.pointerId){this._swiped=!0;var t=Fo(e),n=Mo(this._startPos,t);this.swipePreviewCallback(n)}}},{key:"cancel",value:function(e){this._swiping&&this._pointerId===e.pointerId&&this.swipeCancelCallback()}},{key:"end",value:function(e){var t=this;if(this._swiping&&this._pointerId===e.pointerId){this._swiping=!1;var n=Fo(e),r=Mo(this._startPos,n),i=function(){if(Eo(r)<t.threshold())return 0;var e=Ro(r,t.direction)>0,n=Ao(r,t.direction),i=Lo(t.direction),o=Ao(r,i);return Eo(n)*t.perpendicularTolerance<Eo(o)?0:e?1:-1}();this._swiped&&this.swipeEndCallback(i),this._reset(),Eo(r)>=this.disableClickThreshold()&&"mouse"===e.pointerType&&(this._preventNextClick=!0)}}},{key:"click",value:function(e){this._preventNextClick||this.swipelessClickCallback(),this._reset()}}]),e}()},Bo={props:{direction:{type:Array},threshold:{type:Function,default:function(){return 30}},perpendicularTolerance:{type:Number,default:1}},methods:{handlePointerDown:function(e){this.$gesture.start(e)},handlePointerMove:function(e){this.$gesture.move(e)},handlePointerUp:function(e){this.$gesture.end(e)},handlePointerCancel:function(e){this.$gesture.cancel(e)},handleNativeClick:function(e){this.$gesture.click(e)},preview:function(e){this.$emit("preview-requested",e)},end:function(e){this.$emit("swipe-finished",e)},click:function(){this.$emit("swipeless-clicked")},cancel:function(){this.$emit("swipe-canceled")}},created:function(){this.$gesture=new No.SwipeAndClickGesture({direction:this.direction,threshold:this.threshold,perpendicularTolerance:this.perpendicularTolerance,swipePreviewCallback:this.preview,swipeEndCallback:this.end,swipeCancelCallback:this.cancel,swipelessClickCallback:this.click})}};var Vo=Fn()(Bo,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Object(wt.u)(e.$attrs,{onPointerdown:t[0]||(t[0]=(...t)=>e.handlePointerDown&&e.handlePointerDown(...t)),onPointermove:t[1]||(t[1]=(...t)=>e.handlePointerMove&&e.handlePointerMove(...t)),onPointerup:t[2]||(t[2]=(...t)=>e.handlePointerUp&&e.handlePointerUp(...t)),onPointercancel:t[3]||(t[3]=(...t)=>e.handlePointerCancel&&e.handlePointerCancel(...t)),onClick:t[4]||(t[4]=(...t)=>e.handleNativeClick&&e.handleNativeClick(...t))}),[Object(wt.I)(e.$slots,"default")],16)}]]),Ho=n(139);Tn.c.add(In.o,In.p,In.r,In.rb);var qo={components:{StillImage:So.a,VideoAttachment:Co.a,PinchZoom:Do,SwipeClick:Vo,Modal:Zi,Flash:Ho.a},data:function(){return{loading:!1,swipeDirection:No.DIRECTION_LEFT,swipeThreshold:function(){return window.innerWidth*(1/4)},pinchZoomMinScale:1,pinchZoomScaleResetLimit:1.2}},computed:{showing:function(){return this.$store.state.mediaViewer.activated},media:function(){return this.$store.state.mediaViewer.media},description:function(){return this.currentMedia.description},currentIndex:function(){return this.$store.state.mediaViewer.currentIndex},currentMedia:function(){return this.media[this.currentIndex]},canNavigate:function(){return this.media.length>1},type:function(){return this.currentMedia?this.getType(this.currentMedia):null}},methods:{getType:function(e){return lt.a.fileType(e.mimetype)},hide:function(){var e=this;setTimeout((function(){e.$store.dispatch("closeMediaViewer")}),100)},hideIfNotSwiped:function(e){var t=this.$refs.swipeClick;t?t.$gesture.click(e):this.hide()},goPrev:function(){if(this.canNavigate){var e=0===this.currentIndex?this.media.length-1:this.currentIndex-1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},goNext:function(){if(this.canNavigate){var e=this.currentIndex===this.media.length-1?0:this.currentIndex+1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},onImageLoaded:function(){this.loading=!1},handleSwipePreview:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:e[0],y:0})},handleSwipeEnd:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:0,y:0}),e>0?this.goNext():e<0&&this.goPrev()},handleKeyupEvent:function(e){this.showing&&27===e.keyCode&&this.hide()},handleKeydownEvent:function(e){this.showing&&(39===e.keyCode?this.goNext():37===e.keyCode&&this.goPrev())}},mounted:function(){window.addEventListener("popstate",this.hide),document.addEventListener("keyup",this.handleKeyupEvent),document.addEventListener("keydown",this.handleKeydownEvent)},unmounted:function(){window.removeEventListener("popstate",this.hide),document.removeEventListener("keyup",this.handleKeyupEvent),document.removeEventListener("keydown",this.handleKeydownEvent)}};n(543);var Jo=Fn()(qo,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PinchZoom"),a=Object(wt.J)("SwipeClick"),c=Object(wt.J)("VideoAttachment"),l=Object(wt.J)("Flash"),u=Object(wt.J)("FAIcon"),d=Object(wt.J)("Modal");return e.showing?(Object(wt.D)(),Object(wt.h)(d,{key:0,class:"media-modal-view",onBackdropClicked:e.hideIfNotSwiped},{default:Object(wt.V)(()=>["image"===e.type?(Object(wt.D)(),Object(wt.h)(a,{key:0,ref:"swipeClick",class:"modal-image-container",direction:e.swipeDirection,threshold:e.swipeThreshold,onPreviewRequested:e.handleSwipePreview,onSwipeFinished:e.handleSwipeEnd,onSwipelessClicked:e.hide},{default:Object(wt.V)(()=>[Object(wt.m)(s,{ref:"pinchZoom",class:"modal-image-container-inner",selector:".modal-image","reach-min-scale-strategy":"reset","stop-propagate-handled":"stop-propgate-handled","allow-pan-min-scale":e.pinchZoomMinScale,"min-scale":e.pinchZoomMinScale,"reset-to-min-scale-limit":e.pinchZoomScaleResetLimit},{default:Object(wt.V)(()=>[Object(wt.k)("img",{class:Object(wt.w)([{loading:e.loading},"modal-image"]),src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,onLoad:t[0]||(t[0]=(...t)=>e.onImageLoaded&&e.onImageLoaded(...t))},null,42,Oo)]),_:1},8,["allow-pan-min-scale","min-scale","reset-to-min-scale-limit"])]),_:1},8,["direction","threshold","onPreviewRequested","onSwipeFinished","onSwipelessClicked"])):Object(wt.i)("",!0),"video"===e.type?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"modal-image",attachment:e.currentMedia,controls:!0},null,8,["attachment"])):Object(wt.i)("",!0),"audio"===e.type?(Object(wt.D)(),Object(wt.j)("audio",{key:2,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,controls:""},null,8,jo)):Object(wt.i)("",!0),"flash"===e.type?(Object(wt.D)(),Object(wt.h)(l,{key:3,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description},null,8,["src","alt","title"])):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:4,title:e.$t("media_modal.previous"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.goPrev&&e.goPrev(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-left"})],8,go)):Object(wt.i)("",!0),e.canNavigate?(Object(wt.D)(),Object(wt.j)("button",{key:5,title:e.$t("media_modal.next"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--next",onClick:t[2]||(t[2]=Object(wt.Y)((...t)=>e.goNext&&e.goNext(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon arrow-icon",icon:"chevron-right"})],8,vo)):Object(wt.i)("",!0),Object(wt.k)("button",{class:"modal-view-button modal-view-button-hide",title:e.$t("media_modal.hide"),onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.hide&&e.hide(...t),["stop","prevent"]))},[Object(wt.m)(u,{class:"button-icon",icon:"times"})],8,yo),e.description?(Object(wt.D)(),Object(wt.j)("span",wo,Object(wt.O)(e.description),1)):Object(wt.i)("",!0),Object(wt.k)("span",ko,Object(wt.O)(e.$tc("media_modal.counter",e.currentIndex+1,{current:e.currentIndex+1,total:e.media.length})),1),e.loading?(Object(wt.D)(),Object(wt.j)("span",_o,[Object(wt.m)(u,{spin:"",icon:"circle-notch",size:"5x"})])):Object(wt.i)("",!0)]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Wo={key:1,class:"side-drawer-logo-wrapper"},Yo=["src"],Go={key:0},Ko={key:0,class:"badge badge-notification"},Xo={key:0},Zo={key:0,class:"badge badge-notification"},Qo={href:"/pleroma/admin/#/login-pleroma",target:"_blank"};function es(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ts(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?es(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):es(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var ns={props:["logout"],data:function(){return{closed:!0,closeGesture:void 0}},created:function(){this.closeGesture=No.swipeGesture(No.DIRECTION_LEFT,this.toggleDrawer),this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{UserCard:jr.a},computed:ts(ts({currentUser:function(){return this.$store.state.users.currentUser},shout:function(){return this.$store.state.shout.joined},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},logo:function(){return this.$store.state.instance.logo},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},followRequestCount:function(){return this.$store.state.api.followRequests.length},privateMode:function(){return this.$store.state.instance.private},federating:function(){return this.$store.state.instance.federating},timelinesRoute:function(){return this.$store.state.interface.lastTimeline?this.$store.state.interface.lastTimeline:this.currentUser?"friends":"public-timeline"}},Object(a.e)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}})),Object(a.c)(["unreadChatCount"])),methods:{toggleDrawer:function(){this.closed=!this.closed},doLogout:function(){this.logout(),this.toggleDrawer()},touchStart:function(e){No.beginSwipe(e,this.closeGesture)},touchMove:function(e){No.updateSwipe(e,this.closeGesture)},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(544);var rs=Fn()(ns,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["side-drawer-container",{"side-drawer-container-closed":e.closed,"side-drawer-container-open":!e.closed}])},[Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-darken",{"side-drawer-darken-closed":e.closed}])},null,2),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer",{"side-drawer-closed":e.closed}]),onTouchstart:t[15]||(t[15]=(...t)=>e.touchStart&&e.touchStart(...t)),onTouchmove:t[16]||(t[16]=(...t)=>e.touchMove&&e.touchMove(...t))},[Object(wt.k)("div",{class:"side-drawer-heading",onClick:t[0]||(t[0]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[e.currentUser?(Object(wt.D)(),Object(wt.h)(s,{key:0,"user-id":e.currentUser.id,"hide-bio":!0},null,8,["user-id"])):(Object(wt.D)(),Object(wt.j)("div",Wo,[Object(wt.k)("img",{src:e.logo},null,8,Yo),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",Go,Object(wt.O)(e.sitename),1))]))]),Object(wt.k)("ul",null,[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[1]||(t[1]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"login"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-in-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.login")),1)]),_:1})])),e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[2]||(t[2]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:e.timelinesRoute}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.timelines")),1)]),_:1},8,["to"])])):Object(wt.i)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[3]||(t[3]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"chats",params:{username:e.currentUser.screen_name}},style:{position:"relative"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"comments"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.chats"))+" ",1),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("span",Ko,Object(wt.O)(e.unreadChatCount),1)):Object(wt.i)("",!0)]),_:1},8,["to"])])):Object(wt.i)("",!0)]),e.currentUser?(Object(wt.D)(),Object(wt.j)("ul",Xo,[Object(wt.k)("li",{onClick:t[4]||(t[4]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bell"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.interactions")),1)]),_:1},8,["to"])]),e.currentUser.locked?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[5]||(t[5]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:"/friend-requests"},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?(Object(wt.D)(),Object(wt.j)("span",Zo,Object(wt.O)(e.followRequestCount),1)):Object(wt.i)("",!0)]),_:1})])):Object(wt.i)("",!0),e.shout?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[6]||(t[6]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"shout-panel"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),Object(wt.l)(" "+Object(wt.O)(e.$t("shoutbox.title")),1)]),_:1})])):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("ul",null,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.j)("li",{key:0,onClick:t[7]||(t[7]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"search"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.search")),1)]),_:1})])):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.j)("li",{key:1,onClick:t[8]||(t[8]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"who-to-follow"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.who_to_follow")),1)]),_:1})])):Object(wt.i)("",!0),Object(wt.k)("li",{onClick:t[10]||(t[10]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[9]||(t[9]=(...t)=>e.openSettingsModal&&e.openSettingsModal(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"}),Object(wt.l)(" "+Object(wt.O)(e.$t("settings.settings")),1)])]),Object(wt.k)("li",{onClick:t[11]||(t[11]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.m)(c,{to:{name:"about"}},{default:Object(wt.V)(()=>[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"info-circle"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.about")),1)]),_:1})]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("li",{key:2,onClick:t[12]||(t[12]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("a",Qo,[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("nav.administration")),1)])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("li",{key:3,onClick:t[14]||(t[14]=(...t)=>e.toggleDrawer&&e.toggleDrawer(...t))},[Object(wt.k)("button",{class:"button-unstyled -link -fullwidth",onClick:t[13]||(t[13]=(...t)=>e.doLogout&&e.doLogout(...t))},[Object(wt.m)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"}),Object(wt.l)(" "+Object(wt.O)(e.$t("login.logout")),1)])])):Object(wt.i)("",!0)])],34),Object(wt.k)("div",{class:Object(wt.w)(["side-drawer-click-outside",{"side-drawer-click-outside-closed":e.closed}]),onClick:t[17]||(t[17]=Object(wt.Y)((...t)=>e.toggleDrawer&&e.toggleDrawer(...t),["stop","prevent"]))},null,2)],2)}]]);var is=n(56),os=n.n(is);Tn.c.add(In.S);var ss=new Set(["chats","chat"]),as={data:function(){return{hidden:!1,scrollingDown:!1,inputActive:!1,oldScrollPos:0,amountScrolled:0}},created:function(){this.autohideFloatingPostButton&&this.activateFloatingPostButtonAutohide(),window.addEventListener("resize",this.handleOSK)},unmounted:function(){this.autohideFloatingPostButton&&this.deactivateFloatingPostButtonAutohide(),window.removeEventListener("resize",this.handleOSK)},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isHidden:function(){return!!ss.has(this.$route.name)||this.autohideFloatingPostButton&&(this.hidden||this.inputActive)},isPersistent:function(){return!!this.$store.getters.mergedConfig.alwaysShowNewPostButton},autohideFloatingPostButton:function(){return!!this.$store.getters.mergedConfig.autohideFloatingPostButton}},watch:{autohideFloatingPostButton:function(e){e?this.activateFloatingPostButtonAutohide():this.deactivateFloatingPostButtonAutohide()}},methods:{activateFloatingPostButtonAutohide:function(){window.addEventListener("scroll",this.handleScrollStart),window.addEventListener("scroll",this.handleScrollEnd)},deactivateFloatingPostButtonAutohide:function(){window.removeEventListener("scroll",this.handleScrollStart),window.removeEventListener("scroll",this.handleScrollEnd)},openPostForm:function(){this.$store.dispatch("openPostStatusModal")},handleOSK:function(){var e=window.innerWidth<350,t=e&&window.innerHeight<345,n=!e&&window.innerWidth<450&&window.innerHeight<560;this.inputActive=!(!t&&!n)},handleScrollStart:os()((function(){window.scrollY>this.oldScrollPos?this.hidden=!0:this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!0,trailing:!1}),handleScrollEnd:os()((function(){this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!1,trailing:!0})}};n(545);var cs=Fn()(as,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return e.isLoggedIn?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:Object(wt.w)(["MobilePostButton button-default new-status-button",{hidden:e.isHidden,"always-show":e.isPersistent}]),onClick:t[0]||(t[0]=(...t)=>e.openPostForm&&e.openPostForm(...t))},[Object(wt.m)(s,{icon:"pen"})],2)):Object(wt.i)("",!0)}]]);const ls={class:"MobileNav"},us={class:"item"},ds={key:0,class:"alert-dot"},ps={class:"item right"},hs={key:0,class:"alert-dot"},bs={class:"mobile-notifications-header"},ms={class:"title"};var fs=n(77);function Os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}Tn.c.add(In.rb,In.i,In.h);var js={components:{SideDrawer:rs,Notifications:fs.default},data:function(){return{notificationsCloseGesture:void 0,notificationsOpen:!1}},created:function(){this.notificationsCloseGesture=No.swipeGesture(No.DIRECTION_RIGHT,this.closeMobileNotifications,50)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Os(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Os(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({currentUser:function(){return this.$store.state.users.currentUser},unseenNotifications:function(){return Object(W.f)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},isChat:function(){return"chat"===this.$route.name}},Object(a.c)(["unreadChatCount"])),methods:{toggleMobileSidebar:function(){this.$refs.sideDrawer.toggleDrawer()},openMobileNotifications:function(){this.notificationsOpen=!0},closeMobileNotifications:function(){this.notificationsOpen&&(this.notificationsOpen=!1,this.markNotificationsAsSeen())},notificationsTouchStart:function(e){No.beginSwipe(e,this.notificationsCloseGesture)},notificationsTouchMove:function(e){No.updateSwipe(e,this.notificationsCloseGesture)},scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},markNotificationsAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen")},onScroll:function(e){var t=e.target;t.scrollTop+t.clientHeight>=t.scrollHeight&&this.$refs.notifications.fetchOlderNotifications()}},watch:{$route:function(){this.closeMobileNotifications()}}};n(559);var gs=Fn()(js,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("router-link"),c=Object(wt.J)("SideDrawer");return Object(wt.D)(),Object(wt.j)("div",ls,[Object(wt.k)("nav",{id:"nav",class:"mobile-nav",onClick:t[2]||(t[2]=t=>e.scrollToTop())},[Object(wt.k)("div",us,[Object(wt.k)("button",{class:"button-unstyled mobile-nav-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.toggleMobileSidebar(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bars"}),e.unreadChatCount?(Object(wt.D)(),Object(wt.j)("div",ds)):Object(wt.i)("",!0)]),e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.k)("div",ps,[e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled mobile-nav-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.openMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"bell"}),e.unseenNotificationsCount?(Object(wt.D)(),Object(wt.j)("div",hs)):Object(wt.i)("",!0)])):Object(wt.i)("",!0)])]),e.currentUser?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["mobile-notifications-drawer",{"-closed":!e.notificationsOpen}]),onTouchstart:t[5]||(t[5]=Object(wt.Y)((...t)=>e.notificationsTouchStart&&e.notificationsTouchStart(...t),["stop"])),onTouchmove:t[6]||(t[6]=Object(wt.Y)((...t)=>e.notificationsTouchMove&&e.notificationsTouchMove(...t),["stop"]))},[Object(wt.k)("div",bs,[Object(wt.k)("span",ms,Object(wt.O)(e.$t("notifications.notifications")),1),Object(wt.k)("a",{class:"mobile-nav-button",onClick:t[3]||(t[3]=Object(wt.Y)(t=>e.closeMobileNotifications(),["stop","prevent"]))},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])]),Object(wt.k)("div",{class:"mobile-notifications",id:"mobile-notifications",onScroll:t[4]||(t[4]=(...t)=>e.onScroll&&e.onScroll(...t))},null,32)],34)):Object(wt.i)("",!0),Object(wt.m)(c,{ref:"sideDrawer",logout:e.logout},null,8,["logout"])])}]]);const vs={class:"inner-nav"},ys={class:"item sitename"},ws=["src"],ks={class:"item right actions"};const _s=["title"],Ss=["placeholder"];Tn.c.add(In.rb,In.cb);var Cs={data:function(){return{searchTerm:void 0,hidden:!0,error:!1}},watch:{$route:function(e){"search"===e.name&&(this.searchTerm=e.query.query)}},methods:{find:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},toggleHidden:function(){var e=this;this.hidden=!this.hidden,this.$emit("toggled",this.hidden),this.$nextTick((function(){e.hidden||e.$refs.searchInput.focus()}))}}};n(560);var Ps=Fn()(Cs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["SearchBar",{"-expanded":!e.hidden}])},[e.hidden?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled nav-icon",title:e.$t("nav.search"),type:"button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"})],8,_s)):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[Object(wt.W)(Object(wt.k)("input",{id:"search-bar-input",ref:"searchInput","onUpdate:modelValue":t[1]||(t[1]=t=>e.searchTerm=t),class:"search-bar-input",placeholder:e.$t("nav.search"),type:"text",onKeyup:t[2]||(t[2]=Object(wt.X)(t=>e.find(e.searchTerm),["enter"]))},null,40,Ss),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"button-default search-button",type:"submit",onClick:t[3]||(t[3]=t=>e.find(e.searchTerm))},[Object(wt.m)(s,{"fixed-width":"",icon:"search"})]),Object(wt.k)("button",{class:"button-unstyled cancel-search",type:"button",onClick:t[4]||(t[4]=Object(wt.Y)((...t)=>e.toggleHidden&&e.toggleHidden(...t),["prevent","stop"]))},[Object(wt.m)(s,{"fixed-width":"",icon:"times",class:"cancel-icon fa-scale-110 fa-old-padding"})])],64))],2)}]]);Tn.c.add(In.gb,In.hb,In.J,In.t,In.i,In.vb,In.l,In.cb,In.ob,In.s,In.M);var xs={components:{SearchBar:Ps},data:function(){return{searchBarHidden:!0,supportsMask:window.CSS&&window.CSS.supports&&(window.CSS.supports("mask-size","contain")||window.CSS.supports("-webkit-mask-size","contain")||window.CSS.supports("-moz-mask-size","contain")||window.CSS.supports("-ms-mask-size","contain")||window.CSS.supports("-o-mask-size","contain"))}},computed:{enableMask:function(){return this.supportsMask&&this.$store.state.instance.logoMask},logoStyle:function(){return{visibility:this.enableMask?"hidden":"visible"}},logoMaskStyle:function(){return this.enableMask?{"mask-image":"url(".concat(this.$store.state.instance.logo,")")}:{"background-color":this.enableMask?"":"transparent"}},logoBgStyle:function(){return Object.assign({margin:"".concat(this.$store.state.instance.logoMargin," 0"),opacity:this.searchBarHidden?1:0},this.enableMask?{}:{"background-color":this.enableMask?"":"transparent"})},logo:function(){return this.$store.state.instance.logo},sitename:function(){return this.$store.state.instance.name},hideSitename:function(){return this.$store.state.instance.hideSitename},logoLeft:function(){return this.$store.state.instance.logoLeft},currentUser:function(){return this.$store.state.users.currentUser},privateMode:function(){return this.$store.state.instance.private}},methods:{scrollToTop:function(){window.scrollTo(0,0)},logout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout")},onSearchBarToggled:function(e){this.searchBarHidden=e},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}};n(561);var Ds=Fn()(xs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("search-bar"),c=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("nav",{id:"nav",class:Object(wt.w)(["DesktopNav",{"-logoLeft":e.logoLeft}]),onClick:t[4]||(t[4]=t=>e.scrollToTop())},[Object(wt.k)("div",vs,[Object(wt.k)("div",ys,[e.hideSitename?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.sitename),1)]),_:1}))]),Object(wt.m)(s,{class:"logo",to:{name:"root"},style:Object(wt.x)(e.logoBgStyle)},{default:Object(wt.V)(()=>[Object(wt.k)("div",{class:"mask",style:Object(wt.x)(e.logoMaskStyle)},null,4),Object(wt.k)("img",{src:e.logo,style:Object(wt.x)(e.logoStyle)},null,12,ws)]),_:1},8,["style"]),Object(wt.k)("div",ks,[e.currentUser||!e.privateMode?(Object(wt.D)(),Object(wt.h)(a,{key:0,onToggled:e.onSearchBarToggled,onClick:t[0]||(t[0]=Object(wt.Y)(()=>{},["stop"]))},null,8,["onToggled"])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-unstyled nav-icon",onClick:t[1]||(t[1]=Object(wt.Y)((...t)=>e.openSettingsModal&&e.openSettingsModal(...t),["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog",title:e.$t("nav.preferences")},null,8,["title"])]),e.currentUser&&"admin"===e.currentUser.role?(Object(wt.D)(),Object(wt.j)("a",{key:1,href:"/pleroma/admin/#/login-pleroma",class:"nav-icon",target:"_blank",onClick:t[2]||(t[2]=Object(wt.Y)(()=>{},["stop"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt",title:e.$t("nav.administration")},null,8,["title"])])):Object(wt.i)("",!0),e.currentUser?(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled nav-icon",onClick:t[3]||(t[3]=Object(wt.Y)((...t)=>e.logout&&e.logout(...t),["prevent"]))},[Object(wt.m)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt",title:e.$t("login.logout")},null,8,["title"])])):Object(wt.i)("",!0)])])],2)}]]);const Ts={class:"user-reporting-panel panel"},Is={class:"panel-heading"},$s={class:"title"},zs={class:"panel-body"},Ms={class:"user-reporting-panel-left"},Us=["placeholder"],Fs={key:0},Es=["disabled"],Ls={key:0,class:"alert error"},Rs={class:"user-reporting-panel-right"},As={class:"status-fadein user-reporting-panel-sitem"};var Ns=n(34),Bs=n(69);function Vs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var Hs={components:{Status:Ns.default,List:Bs.a,Checkbox:lo.a,Modal:Zi},data:function(){return{comment:"",forward:!1,statusIdsToReport:[],processing:!1,error:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isOpen:function(){return this.isLoggedIn&&this.$store.state.reports.modalActivated},userId:function(){return this.$store.state.reports.userId},user:function(){return this.$store.getters.findUser(this.userId)},remoteInstance:function(){return!this.user.is_local&&this.user.screen_name.substr(this.user.screen_name.indexOf("@")+1)},statuses:function(){return this.$store.state.reports.statuses},preTickedIds:function(){return this.$store.state.reports.preTickedIds}},watch:{userId:"resetState",preTickedIds:function(e){this.statusIdsToReport=e}},methods:{resetState:function(){this.comment="",this.forward=!1,this.statusIdsToReport=this.preTickedIds,this.processing=!1,this.error=!1},closeModal:function(){this.$store.dispatch("closeUserReportingModal")},reportUser:function(){var e=this;this.processing=!0,this.error=!1;var t={userId:this.userId,comment:this.comment,forward:this.forward,statusIds:this.statusIdsToReport};this.$store.state.api.backendInteractor.reportUser(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vs(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)).then((function(){e.processing=!1,e.resetState(),e.closeModal()})).catch((function(){e.processing=!1,e.error=!0}))},clearError:function(){this.error=!1},isChecked:function(e){return-1!==this.statusIdsToReport.indexOf(e)},toggleStatus:function(e,t){e!==this.isChecked(t)&&(e?this.statusIdsToReport.push(t):this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(t),1))},resize:function(e){var t=e.target||e;t instanceof window.Element&&(t.style.height="auto",t.style.height="".concat(t.scrollHeight,"px"),""===t.value&&(t.style.height=null))}}};n(563);var qs=Fn()(Hs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Checkbox"),a=Object(wt.J)("Status"),c=Object(wt.J)("List"),l=Object(wt.J)("Modal");return e.isOpen?(Object(wt.D)(),Object(wt.h)(l,{key:0,onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Ts,[Object(wt.k)("div",Is,[Object(wt.k)("div",$s,Object(wt.O)(e.$t("user_reporting.title",[e.user.screen_name_ui])),1)]),Object(wt.k)("div",zs,[Object(wt.k)("div",Ms,[Object(wt.k)("div",null,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.add_comment_description")),1),Object(wt.W)(Object(wt.k)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=t=>e.comment=t),class:"form-control",placeholder:e.$t("user_reporting.additional_comments"),rows:"1",onInput:t[1]||(t[1]=(...t)=>e.resize&&e.resize(...t))},null,40,Us),[[wt.S,e.comment]])]),e.user.is_local?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Fs,[Object(wt.k)("p",null,Object(wt.O)(e.$t("user_reporting.forward_description")),1),Object(wt.m)(s,{modelValue:e.forward,"onUpdate:modelValue":t[2]||(t[2]=t=>e.forward=t)},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("user_reporting.forward_to",[e.remoteInstance])),1)]),_:1},8,["modelValue"])])),Object(wt.k)("div",null,[Object(wt.k)("button",{class:"btn button-default",disabled:e.processing,onClick:t[3]||(t[3]=(...t)=>e.reportUser&&e.reportUser(...t))},Object(wt.O)(e.$t("user_reporting.submit")),9,Es),e.error?(Object(wt.D)(),Object(wt.j)("div",Ls,Object(wt.O)(e.$t("user_reporting.generic_error")),1)):Object(wt.i)("",!0)])]),Object(wt.k)("div",Rs,[Object(wt.m)(c,{items:e.statuses},{item:Object(wt.V)(({item:t})=>[Object(wt.k)("div",As,[Object(wt.m)(a,{"in-conversation":!1,focused:!1,statusoid:t},null,8,["statusoid"]),Object(wt.m)(s,{"model-value":e.isChecked(t.id),"onUpdate:modelValue":n=>e.toggleStatus(n,t.id)},null,8,["model-value","onUpdate:modelValue"])])]),_:1},8,["items"])])])])]),_:1},8,["onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Js={class:"post-form-modal-panel panel"},Ws={class:"panel-heading"};var Ys={components:{PostStatusForm:Or.a,Modal:Zi},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.postStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.postStatus.params||{}}},watch:{params:function(e,t){var n=this;qt()(e,"repliedUser.id")!==qt()(t,"repliedUser.id")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{closeModal:function(){this.$store.dispatch("closePostStatusModal")}}};n(564);var Gs=Fn()(Ys,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("PostStatusForm"),a=Object(wt.J)("Modal");return e.isLoggedIn&&!e.resettingForm?(Object(wt.D)(),Object(wt.h)(a,{key:0,"is-open":e.modalActivated,class:"post-form-modal-view",onBackdropClicked:e.closeModal},{default:Object(wt.V)(()=>[Object(wt.k)("div",Js,[Object(wt.k)("div",Ws,Object(wt.O)(e.$t("post_status.new_status")),1),Object(wt.m)(s,Object(wt.u)({class:"panel-body"},e.params,{onPosted:e.closeModal}),null,16,["onPosted"])])]),_:1},8,["is-open","onBackdropClicked"])):Object(wt.i)("",!0)}]]);const Ks={class:"global-notice-list"},Xs={class:"notice-message"},Zs=["onClick"];Tn.c.add(In.rb);var Qs={computed:{notices:function(){return this.$store.state.interface.globalNotices}},methods:{closeNotice:function(e){this.$store.dispatch("removeGlobalNotice",e)}}};n(565);var ea=Fn()(Qs,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",Ks,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.notices,(t,n)=>(Object(wt.D)(),Object(wt.j)("div",{key:n,class:Object(wt.w)(["alert global-notice",{["global-"+t.level]:!0}])},[Object(wt.k)("div",Xs,Object(wt.O)(e.$t(t.messageKey,t.messageArgs)),1),Object(wt.k)("button",{class:"button-unstyled close-notice",onClick:n=>e.closeNotice(t)},[Object(wt.m)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,Zs)],2))),128))])}]]);function ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var na={name:"app",components:{UserPanel:yr,NavPanel:Br,Notifications:Object(wt.n)((function(){return Promise.resolve().then(n.bind(null,77))})),InstanceSpecificPanel:Yr,FeaturesPanel:ai,WhoToFollowPanel:yi,ShoutPanel:Fi,MediaModal:Jo,SideDrawer:rs,MobilePostStatusButton:cs,MobileNav:gs,DesktopNav:Ds,SettingsModal:fo,UserReportingModal:qs,PostStatusModal:Gs,GlobalNoticeList:ea},data:function(){return{mobileActivePanel:"timeline"}},created:function(){var e=this.$store.getters.mergedConfig.interfaceLanguage;this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e}),window.addEventListener("resize",this.updateMobileState)},unmounted:function(){window.removeEventListener("resize",this.updateMobileState)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ta(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ta(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classes:function(){return[{"-reverse":this.reverseLayout,"-no-sticky-headers":this.noSticky,"-has-new-post-button":this.newPostButtonShown},"-"+this.layoutType]},currentUser:function(){return this.$store.state.users.currentUser},userBackground:function(){return this.currentUser.background_image},instanceBackground:function(){return this.mergedConfig.hideInstanceWallpaper?null:this.$store.state.instance.background},background:function(){return this.userBackground||this.instanceBackground},bgStyle:function(){if(this.background)return{"--body-background-image":"url(".concat(this.background,")")}},shout:function(){return this.$store.state.shout.joined},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent},isChats:function(){return"chat"===this.$route.name||"chats"===this.$route.name},newPostButtonShown:function(){return!this.isChats&&(this.$store.getters.mergedConfig.alwaysShowNewPostButton||"mobile"===this.layoutType)},showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},shoutboxPosition:function(){return this.$store.getters.mergedConfig.alwaysShowNewPostButton||!1},hideShoutbox:function(){return this.$store.getters.mergedConfig.hideShoutbox},layoutType:function(){return this.$store.state.interface.layoutType},privateMode:function(){return this.$store.state.instance.private},reverseLayout:function(){var e=this.$store.getters.mergedConfig,t=e.thirdColumnMode,n=e.sidebarRight;return"wide"!==this.layoutType||"notifications"===t?n:!n},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders},showScrollbars:function(){return this.$store.getters.mergedConfig.showScrollbars}},Object(a.c)(["mergedConfig"])),methods:{updateMobileState:function(){this.$store.dispatch("setLayoutWidth",Ce()),this.$store.dispatch("setLayoutHeight",Pe())}}};n(566);var ra=Fn()(na,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("MobileNav"),a=Object(wt.J)("DesktopNav"),c=Object(wt.J)("Notifications"),l=Object(wt.J)("user-panel"),u=Object(wt.J)("nav-panel"),d=Object(wt.J)("instance-specific-panel"),p=Object(wt.J)("features-panel"),h=Object(wt.J)("who-to-follow-panel"),b=Object(wt.J)("router-link"),m=Object(wt.J)("router-view"),f=Object(wt.J)("media-modal"),O=Object(wt.J)("shout-panel"),j=Object(wt.J)("MobilePostStatusButton"),g=Object(wt.J)("UserReportingModal"),v=Object(wt.J)("PostStatusModal"),y=Object(wt.J)("SettingsModal"),w=Object(wt.J)("GlobalNoticeList");return Object(wt.D)(),Object(wt.j)("div",{id:"app-loaded",style:Object(wt.x)(e.bgStyle)},[an,"mobile"===e.layoutType?(Object(wt.D)(),Object(wt.h)(s,{key:0})):(Object(wt.D)(),Object(wt.h)(a,{key:1})),e.currentUser?(Object(wt.D)(),Object(wt.h)(c,{key:2})):Object(wt.i)("",!0),Object(wt.k)("div",{id:"content",class:Object(wt.w)(["app-layout container",e.classes])},[cn,Object(wt.k)("div",{id:"sidebar",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},[Object(wt.m)(l),"mobile"!==e.layoutType?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.m)(u),e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(d,{key:0})):Object(wt.i)("",!0),!e.currentUser&&e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(p,{key:1})):Object(wt.i)("",!0),e.currentUser&&e.suggestionsEnabled?(Object(wt.D)(),Object(wt.h)(h,{key:2})):Object(wt.i)("",!0),ln],64)):Object(wt.i)("",!0)],2),Object(wt.k)("div",{id:"main-scroller",class:Object(wt.w)(["column main",{"-full-height":e.isChats}])},[e.currentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",un,[Object(wt.m)(b,{to:{name:"login"},class:"panel-body"},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("login.hint")),1)]),_:1})])),Object(wt.m)(m)],2),Object(wt.k)("div",{id:"notifs-column",class:Object(wt.w)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},null,2)],2),Object(wt.m)(f),e.currentUser&&e.shout&&!e.hideShoutbox?(Object(wt.D)(),Object(wt.h)(O,{key:3,floating:!0,class:Object(wt.w)(["floating-shout mobile-hidden",{"-left":e.shoutboxPosition}])},null,8,["class"])):Object(wt.i)("",!0),Object(wt.m)(j),Object(wt.m)(g),Object(wt.m)(v),Object(wt.m)(y),dn,Object(wt.m)(w)],4)}]]);const ia={ref:"timeline",class:"timeline"},oa={key:0,class:"new-status-notification text-center faint"},sa={key:1,class:"new-status-notification text-center faint"},aa={class:"new-status-notification text-center"},ca={key:3,class:"new-status-notification text-center"};var la=n(331),ua=n.n(la),da=n(102),pa=n.n(da);const ha={key:0,class:"panel-heading conversation-heading -sticky"},ba={class:"title"},ma={class:"conversation-body panel-body"},fa={key:0,class:"thread-body"},Oa={key:0,class:"conversation-dive-to-top-level-box"},ja={key:1,class:"thread-ancestors"},ga={key:0,class:"thread-ancestor-dive-box"},va={class:"thread-ancestor-dive-box-inner"},ya={key:1,class:"thread-body"};var wa=n(332),ka=n.n(wa);const _a={class:"thread-tree"},Sa={key:0,class:"thread-tree-replies"},Ca={key:1,class:"thread-tree-replies thread-tree-replies-hidden"};Tn.c.add(In.c,In.e);var Pa={components:{Status:Ns.default},name:"ThreadTree",props:{depth:Number,status:Object,inProfile:Boolean,conversation:Array,collapsable:Boolean,isExpanded:Boolean,pinnedStatusIdsObject:Object,profileUserId:String,focused:Function,highlight:String,getReplies:Function,setHighlight:Function,toggleExpanded:Function,simple:Boolean,toggleThreadDisplay:Function,threadDisplayStatus:Object,showThreadRecursively:Function,totalReplyCount:Object,totalReplyDepth:Object,statusContentProperties:Object,setStatusContentProperty:Function,toggleStatusContentProperty:Function,dive:Function},computed:{suspendable:function(){var e=!this.$refs.statusComponent||this.$refs.statusComponent.suspendable;return this.$refs.childComponent?e&&this.$refs.childComponent.every((function(e){return e.suspendable})):e},reverseLookupTable:function(){return this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{})},currentReplies:function(){var e=this;return this.getReplies(this.status.id).map((function(t){var n=t.id;return e.statusById(n)}))},threadShowing:function(){return"showing"===this.threadDisplayStatus[this.status.id]},currentProp:function(){return this.statusContentProperties[this.status.id]}},methods:{statusById:function(e){return this.conversation[this.reverseLookupTable[e]]},collapseThread:function(){},showThread:function(){},showAllSubthreads:function(){},toggleCurrentProp:function(e){this.toggleStatusContentProperty(this.status.id,e)},setCurrentProp:function(e,t){this.setStatusContentProperty(this.status.id,e)}}};n(569);var xa=Fn()(Pa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("status"),a=Object(wt.J)("thread-tree"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("i18n-t");return Object(wt.D)(),Object(wt.j)("div",_a,[(Object(wt.D)(),Object(wt.h)(s,{key:e.status.id,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:e.status,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[e.status.id],focused:e.focused(e.status.id),"in-conversation":e.isExpanded,highlight:e.highlight,replies:e.getReplies(e.status.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status conversation-status-treeview status-fadein panel-body","simple-tree":e.simple,"controlled-thread-display-status":e.threadDisplayStatus[e.status.id],"controlled-toggle-thread-display":()=>e.toggleThreadDisplay(e.status.id),"controlled-showing-tall":e.currentProp.showingTall,"controlled-expanding-subject":e.currentProp.expandingSubject,"controlled-showing-long-subject":e.currentProp.showingLongSubject,"controlled-replying":e.currentProp.replying,"controlled-media-playing":e.currentProp.mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleCurrentProp("showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleCurrentProp("expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleCurrentProp("showingLongSubject"),"controlled-toggle-replying":()=>e.toggleCurrentProp("replying"),"controlled-set-media-playing":t=>e.setCurrentProp("mediaPlaying",t),dive:e.dive?()=>e.dive(e.status.id):void 0,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","dive","onGoto","onToggleExpanded"])),e.currentReplies.length&&e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Sa,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.currentReplies,t=>(Object(wt.D)(),Object(wt.h)(a,{key:t.id,ref_for:!0,ref:"childComponent",depth:e.depth+1,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.highlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.simple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.dive},null,8,["depth","status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.currentReplies.length&&!e.threadShowing?(Object(wt.D)(),Object(wt.j)("div",Ca,[e.simple?(Object(wt.D)(),Object(wt.h)(l,{key:0,scope:"global",tag:"button",keypath:"status.thread_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[0]||(t[0]=Object(wt.Y)(t=>e.dive(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_follow",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id]})),1)]),_:1})):(Object(wt.D)(),Object(wt.h)(l,{key:1,scope:"global",tag:"button",keypath:"status.thread_show_full_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.showThreadRecursively(e.status.id),["prevent"]))},{icon:Object(wt.V)(()=>[Object(wt.m)(c,{icon:"angle-double-down"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.thread_show_full",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id],depth:e.totalReplyDepth[e.status.id]})),1)]),_:1}))])):Object(wt.i)("",!0)])}]]);function Da(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ta(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Da(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Da(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.c,In.d,In.o);var Ia=function(e,t){var n="retweet"===e.type?e.retweeted_status.id:e.id,r="retweet"===t.type?t.retweeted_status.id:t.id,i=Number(n),o=Number(r),s=!Number.isNaN(i),a=!Number.isNaN(o);return s&&a?i<o?-1:1:s&&!a?-1:!s&&a?1:n<r?-1:1},$a={data:function(){return{highlight:null,expanded:!1,threadDisplayStatusObject:{},statusContentPropertiesObject:{},inlineDivePosition:null}},props:["statusId","collapsable","isPage","pinnedStatusIdsObject","inProfile","profileUserId","virtualHidden"],created:function(){this.isPage&&this.fetchConversation()},computed:{maxDepthToShowByDefault:function(){var e=this.$store.getters.mergedConfig.maxDepthInThread-2;return e>=1?e:1},displayStyle:function(){return this.$store.getters.mergedConfig.conversationDisplay},isTreeView:function(){return!this.isLinearView},treeViewIsSimple:function(){return!this.$store.getters.mergedConfig.conversationTreeAdvanced},isLinearView:function(){return"linear"===this.displayStyle},shouldFadeAncestors:function(){return this.$store.getters.mergedConfig.conversationTreeFadeAncestors},otherRepliesButtonPosition:function(){return this.$store.getters.mergedConfig.conversationOtherRepliesButton},showOtherRepliesButtonBelowStatus:function(){return"below"===this.otherRepliesButtonPosition},showOtherRepliesButtonInsideStatus:function(){return"inside"===this.otherRepliesButtonPosition},suspendable:function(){return this.isTreeView?Object.entries(this.statusContentProperties).every((function(e){var t=m()(e,2),n=(t[0],t[1]);return!n.replying&&0===n.mediaPlaying.length})):!this.$refs.statusComponent||!this.$refs.statusComponent[0]||this.$refs.statusComponent.every((function(e){return e.suspendable}))},hideStatus:function(){return this.virtualHidden&&this.suspendable},status:function(){return this.$store.state.statuses.allStatusesObject[this.statusId]},originalStatusId:function(){return this.status.retweeted_status?this.status.retweeted_status.id:this.statusId},conversationId:function(){return this.getConversationId(this.statusId)},conversation:function(){if(!this.status)return[];if(!this.isExpanded)return[this.status];var e=ka()(this.$store.state.statuses.conversationsObject[this.conversationId]),t=A()(e,{id:this.originalStatusId});return-1!==t&&(e[t]=this.status),function(e,t){return(e="retweet"===t.type?bt()(e,(function(e){return"retweet"===e.type||e.id!==t.retweeted_status.id})):bt()(e,(function(e){return"retweet"!==e.type}))).filter((function(e){return e})).sort(Ia)}(e,this.status)},statusMap:function(){return this.conversation.reduce((function(e,t){return e[t.id]=t,e}),{})},threadTree:function(){var e=this,t=this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{});return function n(r,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return i.map((function(i){return s[i]?[]:(s[i]=!0,[{status:e.conversation[t[i]],id:i,depth:o},n(r,r[i],o+1,s)].reduce((function(e,t){return e.concat(t)}),[]))})).reduce((function(e,t){return e.concat(t)}),[])}(this.conversation.reduce((function(t,n){var r=n.id;return t.forest[r]=e.getReplies(r).map((function(e){return e.id})),t}),{forest:{}}).forest,this.topLevel.map((function(e){return e.id})))},replyIds:function(){var e=this;return this.conversation.map((function(e){return e.id})).reduce((function(t,n){return t[n]=(e.replies[n]||[]).map((function(e){return e.id})),t}),{})},totalReplyCount:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e+t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},totalReplyDepth:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(r){return t[r]||(t[r]=1+e.replyIds[r].map((function(e){return n(e)})).reduce((function(e,t){return e>t?e:t}),0)),t[r]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},depths:function(){return this.threadTree.reduce((function(e,t){return e[t.id]=t.depth,e}),{})},topLevel:function(){var e=this,t=this.conversation.reduce((function(t,n){return t.filter((function(t){return-1===e.getReplies(n.id).map((function(e){return e.id})).indexOf(t.id)}))}),this.conversation);return t},otherTopLevelCount:function(){return this.topLevel.length-1},showingTopLevel:function(){return this.canDive&&this.diveRoot?[this.statusMap[this.diveRoot]]:this.topLevel},diveRoot:function(){var e=this.inlineDivePosition||this.statusId;return!this.parentOf(e)?null:e},diveDepth:function(){return this.canDive&&this.diveRoot?this.depths[this.diveRoot]:0},diveMode:function(){return this.canDive&&!!this.diveRoot},shouldShowAllConversationButton:function(){return this.isTreeView&&this.isExpanded&&this.diveMode&&this.topLevel.length>1},shouldShowAncestors:function(){return this.isTreeView&&this.isExpanded&&this.ancestorsOf(this.diveRoot).length},replies:function(){var e=1;return De()(this.conversation,(function(t,n){var r=n.id,i=n.in_reply_to_status_id;return i&&(t[i]=t[i]||[],t[i].push({name:"#".concat(e),id:r})),e++,t}),{})},isExpanded:function(){return!(!this.expanded&&!this.isPage)},hiddenStyle:function(){var e=this.status&&this.status.virtualHeight||"120px";return this.virtualHidden?{height:e}:{}},threadDisplayStatus:function(){var e=this;return this.conversation.reduce((function(t,n){var r=n.id,i=e.depths[r],o=e.threadDisplayStatusObject[r]?e.threadDisplayStatusObject[r]:i-e.diveDepth<=e.maxDepthToShowByDefault?"showing":"hidden";return t[r]=o,t}),{})},statusContentProperties:function(){var e=this;return this.conversation.reduce((function(t,n){var r,i=n.id,o=(r={showingTall:!1,expandingSubject:!1,showingLongSubject:!1,isReplying:!1,mediaPlaying:[]},e.statusContentPropertiesObject[i]?Ta(Ta({},r),e.statusContentPropertiesObject[i]):r);return t[i]=o,t}),{})},canDive:function(){return this.isTreeView&&this.isExpanded},focused:function(){var e=this;return function(t){return e.isExpanded&&t===e.highlight}},maybeHighlight:function(){return this.isExpanded?this.highlight:null}},components:{Status:Ns.default,ThreadTree:xa},watch:{statusId:function(e,t){var n=this.getConversationId(e),r=this.getConversationId(t);n&&r&&n===r?this.setHighlight(this.originalStatusId):this.fetchConversation()},expanded:function(e){e?this.fetchConversation():this.resetDisplayState()},virtualHidden:function(e){this.$store.dispatch("setVirtualHeight",{statusId:this.statusId,height:"".concat(this.$el.clientHeight,"px")})}},methods:{fetchConversation:function(){var e=this;this.status?this.$store.state.api.backendInteractor.fetchConversation({id:this.statusId}).then((function(t){var n=t.ancestors,r=t.descendants;e.$store.dispatch("addNewStatuses",{statuses:n}),e.$store.dispatch("addNewStatuses",{statuses:r}),e.setHighlight(e.originalStatusId)})):this.$store.state.api.backendInteractor.fetchStatus({id:this.statusId}).then((function(t){e.$store.dispatch("addNewStatuses",{statuses:[t]}),e.fetchConversation()}))},getReplies:function(e){return this.replies[e]||[]},getHighlight:function(){return this.isExpanded?this.highlight:null},setHighlight:function(e){e&&(this.highlight=e,this.$store.dispatch("fetchFavsAndRepeats",e),this.$store.dispatch("fetchEmojiReactionsBy",e))},toggleExpanded:function(){this.expanded=!this.expanded},getConversationId:function(e){var t=this.$store.state.statuses.allStatusesObject[e];return qt()(t,"retweeted_status.statusnet_conversation_id",qt()(t,"statusnet_conversation_id"))},setThreadDisplay:function(e,t){this.threadDisplayStatusObject=Ta(Ta({},this.threadDisplayStatusObject),{},h()({},e,t))},toggleThreadDisplay:function(e){var t="showing"===this.threadDisplayStatus[e]?"hidden":"showing";this.setThreadDisplay(e,t)},setThreadDisplayRecursively:function(e,t){var n=this;this.setThreadDisplay(e,t),this.getReplies(e).map((function(e){return e.id})).map((function(e){return n.setThreadDisplayRecursively(e,t)}))},showThreadRecursively:function(e){this.setThreadDisplayRecursively(e,"showing")},setStatusContentProperty:function(e,t,n){this.statusContentPropertiesObject=Ta(Ta({},this.statusContentPropertiesObject),{},h()({},e,Ta(Ta({},this.statusContentPropertiesObject[e]),{},h()({},t,n))))},toggleStatusContentProperty:function(e,t){this.setStatusContentProperty(e,t,!this.statusContentProperties[e][t])},leastVisibleAncestor:function(e){for(var t=e,n=this.parentOf(t);t;){if("showing"===this.threadDisplayStatus[n])return t;n=this.parentOf(n),t=this.parentOf(t)}return this.topLevel[0]?this.topLevel[0].id:void 0},diveIntoStatus:function(e,t){this.tryScrollTo(e)},diveToTopLevel:function(){this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot)||this.topLevel[0].id)},undive:function(){this.inlineDivePosition=null,this.setHighlight(this.statusId)},tryScrollTo:function(e){var t=this;e&&(this.isPage?this.$router.push({name:"conversation",params:{id:e}}):this.inlineDivePosition=e,this.$nextTick((function(){t.setHighlight(e)})))},goToCurrent:function(){this.tryScrollTo(this.diveRoot||this.topLevel[0].id)},statusById:function(e){return this.statusMap[e]},parentOf:function(e){var t=this.statusById(e);if(t){var n=t.in_reply_to_status_id;if(this.statusMap[n])return n}},parentOrSelf:function(e){return this.parentOf(e)||e},ancestorsOf:function(e){for(var t=[],n=this.parentOf(e);n;)t.unshift(this.statusMap[n]),n=this.parentOf(n);return t},topLevelAncestorOrSelfId:function(e){for(var t=e,n=this.parentOf(e);n;)t=this.parentOf(t),n=this.parentOf(n);return t},resetDisplayState:function(){this.undive(),this.threadDisplayStatusObject={}}}};n(570);var za=Fn()($a,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("i18n-t"),c=Object(wt.J)("status"),l=Object(wt.J)("thread-tree");return e.hideStatus?(Object(wt.D)(),Object(wt.j)("div",{key:1,style:Object(wt.x)(e.hiddenStyle)},null,4)):(Object(wt.D)(),Object(wt.j)("div",{key:0,style:Object(wt.x)(e.hiddenStyle),class:Object(wt.w)(["Conversation",{"-expanded":e.isExpanded,panel:e.isExpanded}])},[e.isExpanded?(Object(wt.D)(),Object(wt.j)("div",ha,[Object(wt.k)("span",ba,Object(wt.O)(e.$t("timeline.conversation")),1),e.collapsable?(Object(wt.D)(),Object(wt.j)("button",{key:0,class:"button-unstyled -link",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.toggleExpanded&&e.toggleExpanded(...t),["prevent"]))},Object(wt.O)(e.$t("timeline.collapse")),1)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),Object(wt.k)("div",ma,[e.isTreeView?(Object(wt.D)(),Object(wt.j)("div",fa,[e.shouldShowAllConversationButton?(Object(wt.D)(),Object(wt.j)("div",Oa,[Object(wt.m)(a,{keypath:"status.show_all_conversation_with_icon",tag:"button",class:"button-unstyled -link",onClick:Object(wt.Y)(e.diveToTopLevel,["prevent"]),scope:"global"},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-left"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.show_all_conversation",e.otherTopLevelCount,{numStatus:e.otherTopLevelCount})),1)]),_:1},8,["onClick"])])):Object(wt.i)("",!0),e.shouldShowAncestors?(Object(wt.D)(),Object(wt.j)("div",ja,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ancestorsOf(e.diveRoot),t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:Object(wt.w)(["thread-ancestor",{"thread-ancestor-has-other-replies":e.getReplies(t.id).length>1,"-faded":e.shouldFadeAncestors}])},[Object(wt.m)(c,{ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","simple-tree":e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"show-other-replies-as-button":e.showOtherRepliesButtonInsideStatus,dive:()=>e.diveIntoStatus(t.id),"controlled-showing-tall":e.statusContentProperties[t.id].showingTall,"controlled-expanding-subject":e.statusContentProperties[t.id].expandingSubject,"controlled-showing-long-subject":e.statusContentProperties[t.id].showingLongSubject,"controlled-replying":e.statusContentProperties[t.id].replying,"controlled-media-playing":e.statusContentProperties[t.id].mediaPlaying,"controlled-toggle-showing-tall":()=>e.toggleStatusContentProperty(t.id,"showingTall"),"controlled-toggle-expanding-subject":()=>e.toggleStatusContentProperty(t.id,"expandingSubject"),"controlled-toggle-showing-long-subject":()=>e.toggleStatusContentProperty(t.id,"showingLongSubject"),"controlled-toggle-replying":()=>e.toggleStatusContentProperty(t.id,"replying"),"controlled-set-media-playing":n=>e.toggleStatusContentProperty(t.id,"mediaPlaying",n),onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","show-other-replies-as-button","dive","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","onGoto","onToggleExpanded"]),e.showOtherRepliesButtonBelowStatus&&e.getReplies(t.id).length>1?(Object(wt.D)(),Object(wt.j)("div",ga,[Object(wt.k)("div",va,[Object(wt.m)(a,{tag:"button",scope:"global",keypath:"status.ancestor_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:Object(wt.Y)(n=>e.diveIntoStatus(t.id),["prevent"])},{icon:Object(wt.V)(()=>[Object(wt.m)(s,{icon:"angle-double-right"})]),text:Object(wt.V)(()=>[Object(wt.k)("span",null,Object(wt.O)(e.$tc("status.ancestor_follow",e.getReplies(t.id).length-1,{numReplies:e.getReplies(t.id).length-1})),1)]),_:2},1032,["onClick"])])])):Object(wt.i)("",!0)],2))),128))])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.showingTopLevel,t=>(Object(wt.D)(),Object(wt.h)(l,{key:t.id,ref_for:!0,ref:"statusComponent",depth:0,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.maybeHighlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.canDive?e.diveIntoStatus:void 0},null,8,["status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"]))),128))])):Object(wt.i)("",!0),e.isLinearView?(Object(wt.D)(),Object(wt.j)("div",ya,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.conversation,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","onGoto","onToggleExpanded"]))),128))])):Object(wt.i)("",!0)])],6))}]]);const Ma={class:"timeline-menu-popover popover-default"},Ua={class:"button-unstyled title timeline-menu-title"},Fa={class:"timeline-title"};Tn.c.add(In.n);var Ea={components:{Popover:co.default,TimelineMenuContent:Lr},data:function(){return{isOpen:!1}},created:function(){({friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"})[this.$route.name]&&this.$store.dispatch("setLastTimeline",this.$route.name)},methods:{openMenu:function(){var e=this;setTimeout((function(){e.isOpen=!0}),25)},blockOpen:function(e){this.isOpen||e.stopPropagation()},timelineName:function(){var e=this.$route.name;if("tag-timeline"===e)return"#"+this.$route.params.tag;var t={friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"}[this.$route.name];return t?this.$t(t):e}}};n(571);var La=Fn()(Ea,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenuContent"),a=Object(wt.J)("FAIcon"),c=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(c,{trigger:"click",class:Object(wt.w)(["TimelineMenu",{open:e.isOpen}]),margin:{left:-15,right:-200},"bound-to":{x:"container"},"popover-class":"timeline-menu-popover-wrap",onShow:e.openMenu,onClose:t[1]||(t[1]=()=>e.isOpen=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ma,[Object(wt.m)(s)])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ua,[Object(wt.k)("span",Fa,Object(wt.O)(e.timelineName()),1),Object(wt.k)("span",null,[Object(wt.m)(a,{size:"sm",icon:"chevron-down"})]),Object(wt.k)("span",{class:"click-blocker",onClick:t[0]||(t[0]=(...t)=>e.blockOpen&&e.blockOpen(...t))})])]),_:1},8,["class","onShow"])}]]);const Ra={class:"dropdown-menu"},Aa={key:0},Na=Object(wt.k)("div",{role:"separator",class:"dropdown-divider"},null,-1),Ba={class:"button-unstyled"};function Va(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ha(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Va(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Va(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.G,In.H,In.yb);var qa={components:{Popover:co.default},methods:{setReplyVisibility:function(e){this.$store.dispatch("setOption",{name:"replyVisibility",value:e}),this.$store.dispatch("queueFlushAll")},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:Ha(Ha({},Object(a.c)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},replyVisibilitySelf:{get:function(){return"self"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("self")}},replyVisibilityFollowing:{get:function(){return"following"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("following")}},replyVisibilityAll:{get:function(){return"all"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("all")}},hideMedia:{get:function(){return this.mergedConfig.hideAttachments||this.mergedConfig.hideAttachmentsInConv},set:function(){var e=!this.hideMedia;this.$store.dispatch("setOption",{name:"hideAttachments",value:e}),this.$store.dispatch("setOption",{name:"hideAttachmentsInConv",value:e})}},hideMutedPosts:{get:function(){return this.mergedConfig.hideFilteredStatuses},set:function(){var e=!this.hideMutedPosts;this.$store.dispatch("setOption",{name:"hideFilteredStatuses",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})};n(572);var Ja=Fn()(qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("Popover");return Object(wt.D)(),Object(wt.h)(a,{trigger:"click",class:"TimelineQuickSettings","bound-to":{x:"container"}},{content:Object(wt.V)(()=>[Object(wt.k)("div",Ra,[e.loggedIn?(Object(wt.D)(),Object(wt.j)("div",Aa,[Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=t=>e.replyVisibilityAll=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityAll}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_all")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=t=>e.replyVisibilityFollowing=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityFollowing}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_following_short")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=t=>e.replyVisibilitySelf=!0)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilitySelf}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.reply_visibility_self_short")),1)]),Na])):Object(wt.i)("",!0),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=t=>e.muteBotStatuses=!e.muteBotStatuses)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.muteBotStatuses}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.mute_bot_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=t=>e.hideMedia=!e.hideMedia)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMedia}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_media_previews")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=t=>e.hideMutedPosts=!e.hideMutedPosts)},[Object(wt.k)("span",{class:Object(wt.w)(["menu-checkbox",{"menu-checkbox-checked":e.hideMutedPosts}])},null,2),Object(wt.l)(Object(wt.O)(e.$t("settings.hide_all_muted_posts")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[6]||(t[6]=t=>e.openTab("filtering"))},[Object(wt.m)(s,{icon:"font"}),Object(wt.l)(Object(wt.O)(e.$t("settings.word_filter")),1)]),Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[7]||(t[7]=t=>e.openTab("general"))},[Object(wt.m)(s,{icon:"wrench"}),Object(wt.l)(Object(wt.O)(e.$t("settings.more_settings")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",Ba,[Object(wt.m)(s,{icon:"filter"})])]),_:1})}]]);Tn.c.add(In.r,In.s);var Wa={props:["timeline","timelineName","title","userId","tag","embedded","count","pinnedStatusIds","inProfile","footerSlipgate"],data:function(){return{paused:!1,unfocused:!1,bottomedOut:!1,virtualScrollIndex:0,blockingClicks:!1}},components:{Status:Ns.default,Conversation:za,TimelineMenu:La,TimelineQuickSettings:Ja},computed:{filteredVisibleStatuses:function(){var e=this;return this.timeline.visibleStatuses.filter((function(t){return"user"!==e.timelineName||t.id>=e.timeline.minId&&t.id<=e.timeline.maxId}))},filteredPinnedStatusIds:function(){var e=this;return(this.pinnedStatusIds||[]).filter((function(t){return e.timeline.statusesObject[t]}))},newStatusCount:function(){return this.timeline.newStatusCount},showLoadButton:function(){return this.timeline.newStatusCount>0||0!==this.timeline.flushMarker},loadButtonString:function(){return 0!==this.timeline.flushMarker?this.$t("timeline.reload"):"".concat(this.$t("timeline.show_new")," (").concat(this.newStatusCount,")")},classes:function(){var e=this.embedded?["-nonpanel"]:["panel","panel-default"];return this.blockingClicks&&(e=e.concat(["-blocked","_misclick-prevention"])),{root:e,header:["timeline-heading"].concat(this.embedded?[]:["panel-heading","-sticky"]),body:["timeline-body"].concat(this.embedded?[]:["panel-body"]),footer:["timeline-footer"].concat(this.embedded?[]:["panel-footer"])}},pinnedStatusIdsObject:function(){return ua()(this.pinnedStatusIds)},statusesToDisplay:function(){var e=this.timeline.visibleStatuses.length,t=Math.ceil(Math.max(3,window.innerHeight/80)),n=this.virtualScrollIndex-this.filteredPinnedStatusIds.length,r=Math.max(0,n-t),i=Math.min(e,n+t);return this.timeline.visibleStatuses.slice(r,i).map((function(e){return e.id}))},virtualScrollingEnabled:function(){return this.$store.getters.mergedConfig.virtualScrolling}},created:function(){var e=this.$store,t=e.state.users.currentUser.credentials,n=0===this.timeline.visibleStatuses.length;if(window.addEventListener("scroll",this.handleScroll),e.state.api.fetchers[this.timelineName])return!1;ve.fetchAndUpdate({store:e,credentials:t,timeline:this.timelineName,showImmediately:n,userId:this.userId,tag:this.tag})},mounted:function(){void 0!==document.hidden&&(document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.unfocused=document.hidden),window.addEventListener("keydown",this.handleShortKey),setTimeout(this.determineVisibleStatuses,250)},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("keydown",this.handleShortKey),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.commit("setLoading",{timeline:this.timelineName,value:!1})},methods:{stopBlockingClicks:os()((function(){this.blockingClicks=!1}),1e3),blockClicksTemporarily:function(){this.blockingClicks||(this.blockingClicks=!0),this.stopBlockingClicks()},handleShortKey:function(e){["textarea","input"].includes(e.target.tagName.toLowerCase())||"."===e.key&&this.showNewStatuses()},showNewStatuses:function(){0!==this.timeline.flushMarker?(this.$store.commit("clearTimeline",{timeline:this.timelineName,excludeUserId:!0}),this.$store.commit("queueFlush",{timeline:this.timelineName,id:0}),this.fetchOlderStatuses()):(this.blockClicksTemporarily(),this.$store.commit("showNewStatuses",{timeline:this.timelineName}),this.paused=!1),window.scrollTo({top:0})},fetchOlderStatuses:pa()((function(){var e=this,t=this.$store,n=t.state.users.currentUser.credentials;t.commit("setLoading",{timeline:this.timelineName,value:!0}),ve.fetchAndUpdate({store:t,credentials:n,timeline:this.timelineName,older:!0,showImmediately:!0,userId:this.userId,tag:this.tag}).then((function(t){var n=t.statuses;n&&0===n.length&&(e.bottomedOut=!0)})).finally((function(){return t.commit("setLoading",{timeline:e.timelineName,value:!1})}))}),1e3,void 0),determineVisibleStatuses:function(){if(this.$refs.timeline&&this.virtualScrollingEnabled){var e=this.$refs.timeline.children,t=Math.max(0,Math.min(this.virtualScrollIndex,e.length-1));if(0!==e.length){var n=Math.max(document.body.offsetHeight,window.pageYOffset),r=window.pageYOffset+.5*window.innerHeight,i=Math.floor(e.length*(r/n)),o=e[i].getBoundingClientRect().y,s=e[t].getBoundingClientRect().y;for(Math.abs(o)>s&&(i=t,o=s);o<-20&&i<e.length-1;)o+=e[i].offsetHeight,i++;for(;o>window.innerHeight+100&&i>0;)o-=e[--i].offsetHeight;this.virtualScrollIndex=i}}},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.timeline.loading&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchOlderStatuses()},handleScroll:pa()((function(e){this.determineVisibleStatuses(),this.scrollLoad(e)}),200),handleVisibilityChange:function(){this.unfocused=document.hidden}},watch:{newStatusCount:function(e){if(this.$store.getters.mergedConfig.streaming&&e>0){var t=document.documentElement;!((window.pageYOffset||t.scrollTop)-(t.clientTop||0)<15)||this.paused||this.unfocused&&this.$store.getters.mergedConfig.pauseOnUnfocused?this.paused=!0:this.showNewStatuses()}}}};n(573);var Ya=Fn()(Wa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("TimelineMenu"),a=Object(wt.J)("TimelineQuickSettings"),c=Object(wt.J)("conversation"),l=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",{class:Object(wt.w)(["Timeline",e.classes.root])},[Object(wt.k)("div",{class:Object(wt.w)(e.classes.header)},[e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(s,{key:0})),e.showLoadButton?(Object(wt.D)(),Object(wt.j)("button",{key:1,class:"button-default loadmore-button",onClick:t[0]||(t[0]=Object(wt.Y)((...t)=>e.showNewStatuses&&e.showNewStatuses(...t),["prevent"]))},Object(wt.O)(e.loadButtonString),1)):e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",{key:2,class:"loadmore-text faint",onClick:t[1]||(t[1]=Object(wt.Y)(()=>{},["prevent"]))},Object(wt.O)(e.$t("timeline.up_to_date")),1)),e.embedded?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:3}))],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.body)},[Object(wt.k)("div",ia,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredPinnedStatusIds,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t+"-pinned",class:"status-fadein","status-id":t,collapsable:!0,"pinned-status-ids-object":e.pinnedStatusIdsObject,"in-profile":e.inProfile,"profile-user-id":e.userId},null,8,["status-id","pinned-status-ids-object","in-profile","profile-user-id"]))),128)),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.filteredVisibleStatuses,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,class:"status-fadein","status-id":t.id,collapsable:!0,"in-profile":e.inProfile,"profile-user-id":e.userId,"virtual-hidden":e.virtualScrollingEnabled&&!e.statusesToDisplay.includes(t.id)},null,8,["status-id","in-profile","profile-user-id","virtual-hidden"]))),128))],512)],2),Object(wt.k)("div",{class:Object(wt.w)(e.classes.footer)},[(Object(wt.D)(),Object(wt.h)(wt.c,{to:e.footerSlipgate,disabled:!e.embedded||!e.footerSlipgate},[0===e.count?(Object(wt.D)(),Object(wt.j)("div",oa,Object(wt.O)(e.$t("timeline.no_statuses")),1)):e.bottomedOut?(Object(wt.D)(),Object(wt.j)("div",sa,Object(wt.O)(e.$t("timeline.no_more_statuses")),1)):e.timeline.loading?(Object(wt.D)(),Object(wt.j)("div",ca,[Object(wt.m)(l,{icon:"circle-notch",spin:"",size:"lg"})])):(Object(wt.D)(),Object(wt.j)("button",{key:2,class:"button-unstyled -link",onClick:t[2]||(t[2]=Object(wt.Y)(t=>e.fetchOlderStatuses(),["prevent"]))},[Object(wt.k)("div",aa,Object(wt.O)(e.$t("timeline.load_older")),1)]))],8,["to","disabled"]))],2)],2)}]]),Ga={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.public}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"public"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","public")}};var Ka=Fn()(Ga,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.public_tl"),timeline:e.timeline,"timeline-name":"public"},null,8,["title","timeline"])}]]);var Xa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.publicAndExternal}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"publicAndExternal"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","publicAndExternal")}};var Za=Fn()(Xa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.twkn"),timeline:e.timeline,"timeline-name":"publicAndExternal"},null,8,["title","timeline"])}]]);var Qa={components:{Timeline:Ya},computed:{timeline:function(){return this.$store.state.statuses.timelines.friends}}};var ec=Fn()(Qa,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.timeline"),timeline:e.timeline,"timeline-name":"friends"},null,8,["title","timeline"])}]]);var tc={created:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})},components:{Timeline:Ya},computed:{tag:function(){return this.$route.params.tag},timeline:function(){return this.$store.state.statuses.timelines.tag}},watch:{tag:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})}},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","tag")}};var nc=Fn()(tc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.tag,timeline:e.timeline,"timeline-name":"tag",tag:e.tag},null,8,["title","timeline","tag"])}]]);var rc={computed:{timeline:function(){return this.$store.state.statuses.timelines.bookmarks}},components:{Timeline:Ya},unmounted:function(){this.$store.commit("clearTimeline",{timeline:"bookmarks"})}};var ic=Fn()(rc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.bookmarks"),timeline:e.timeline,"timeline-name":"bookmarks"},null,8,["title","timeline"])}]]);var oc={components:{Conversation:za},computed:{statusId:function(){return this.$route.params.id}}};var sc=Fn()(oc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("conversation");return Object(wt.D)(),Object(wt.h)(s,{collapsable:!1,"is-page":"true","status-id":e.statusId},null,8,["status-id"])}]]);const ac={class:"panel panel-default"},cc={class:"panel-heading"},lc={class:"title"},uc=["label"],dc=["label"],pc=["label"],hc=["label"];var bc=n(71),mc={mentions:["mention"],"likes+repeats":["repeat","like"],follows:["follow"],moves:["move"]},fc={data:function(){return{allowFollowingMove:this.$store.state.users.currentUser.allow_following_move,filterMode:mc.mentions}},methods:{onModeSwitch:function(e){this.filterMode=mc[e]}},components:{Notifications:fs.default,TabSwitcher:bc.a}};var Oc=Fn()(fc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("tab-switcher"),a=Object(wt.J)("Notifications");return Object(wt.D)(),Object(wt.j)("div",ac,[Object(wt.k)("div",cc,[Object(wt.k)("div",lc,Object(wt.O)(e.$t("nav.interactions")),1)]),Object(wt.m)(s,{ref:"tabSwitcher","on-switch":e.onModeSwitch},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"mentions",label:e.$t("nav.mentions")},null,8,uc),Object(wt.k)("span",{key:"likes+repeats",label:e.$t("interactions.favs_repeats")},null,8,dc),Object(wt.k)("span",{key:"follows",label:e.$t("interactions.follows")},null,8,pc),e.allowFollowingMove?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("span",{key:"moves",label:e.$t("interactions.moves")},null,8,hc))]),_:1},8,["on-switch"]),Object(wt.m)(a,{ref:"notifications","no-heading":!0,"minimal-mode":!0,"filter-mode":e.filterMode},null,8,["filter-mode"])])}]]);var jc={computed:{timeline:function(){return this.$store.state.statuses.timelines.dms}},components:{Timeline:Ya}};var gc=Fn()(jc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("Timeline");return Object(wt.D)(),Object(wt.h)(s,{title:e.$t("nav.dms"),timeline:e.timeline,"timeline-name":"dms"},null,8,["title","timeline"])}]]);const vc={key:0},yc={key:1,class:"chat-list panel panel-default"},wc={class:"panel-heading -sticky"},kc={class:"title"},_c={class:"panel-body"},Sc={key:0,class:"timeline"},Cc={key:1,class:"emtpy-chat-list-alert"};const Pc={class:"chat-list-item-left"},xc={class:"chat-list-item-center"},Dc={class:"heading"},Tc={key:0,class:"name-and-account-name"},Ic=Object(wt.k)("span",{class:"heading-right"},null,-1),$c={class:"time-wrapper"},zc={class:"chat-preview"},Mc={key:0,class:"badge badge-notification unread-chat-count"};var Uc=n(45),Fc=n(22),Ec=n(144),Lc=n(59);const Rc=["title"];var Ac=n(25),Nc={name:"ChatTitle",components:{UserAvatar:Fc.default,RichContent:Ac.a},props:["user","withAvatar"],computed:{title:function(){return this.user?this.user.screen_name_ui:""},htmlTitle:function(){return this.user?this.user.name_html:""}},methods:{getUserProfileLink:function(e){return Object(ji.a)(e.id,e.screen_name)}}};n(575);var Bc=Fn()(Nc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("RichContent");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-title",title:e.title},[e.withAvatar&&e.user?(Object(wt.D)(),Object(wt.h)(a,{key:0,class:"avatar-container",to:e.getUserProfileLink(e.user)},{default:Object(wt.V)(()=>[Object(wt.m)(s,{class:"titlebar-avatar",user:e.user},null,8,["user"])]),_:1},8,["to"])):Object(wt.i)("",!0),e.user?(Object(wt.D)(),Object(wt.h)(c,{key:1,class:"username",title:"@"+(e.user&&e.user.screen_name_ui),html:e.htmlTitle,emoji:e.user.emoji||[]},null,8,["title","html","emoji"])):Object(wt.i)("",!0)],8,Rc)}]]);function Vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Hc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vc(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var qc={name:"ChatListItem",props:["chat"],components:{UserAvatar:Fc.default,AvatarList:Ec.a,Timeago:Lc.a,ChatTitle:Bc,StatusBody:Uc.a},computed:Hc(Hc({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),{},{attachmentInfo:function(){if(0!==this.chat.lastMessage.attachments.length){var e=this.chat.lastMessage.attachments.map((function(e){return lt.a.fileType(e.mimetype)}));return e.includes("video")?this.$t("file_type.video"):e.includes("audio")?this.$t("file_type.audio"):e.includes("image")?this.$t("file_type.image"):this.$t("file_type.file")}},messageForStatusContent:function(){var e=this.chat.lastMessage,t=e?e.emojis:[],n=e&&e.account_id===this.currentUser.id,r=e?this.attachmentInfo||e.content:"",i=n?"<i>".concat(this.$t("chats.you"),"</i> ").concat(r):r;return{summary:"",emojis:t,raw_html:i,text:i,attachments:[]}}}),methods:{openChat:function(e){this.chat.id&&this.$router.push({name:"chat",params:{username:this.currentUser.screen_name,recipient_id:this.chat.account.id}})}}};n(576);var Jc=Fn()(qc,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("Timeago"),l=Object(wt.J)("StatusBody");return Object(wt.D)(),Object(wt.j)("div",{class:"chat-list-item",onClickCapture:t[0]||(t[0]=Object(wt.Y)((...t)=>e.openChat&&e.openChat(...t),["prevent"]))},[Object(wt.k)("div",Pc,[Object(wt.m)(s,{user:e.chat.account,height:"48px",width:"48px"},null,8,["user"])]),Object(wt.k)("div",xc,[Object(wt.k)("div",Dc,[e.chat.account?(Object(wt.D)(),Object(wt.j)("span",Tc,[Object(wt.m)(a,{user:e.chat.account},null,8,["user"])])):Object(wt.i)("",!0),Ic,Object(wt.k)("div",$c,[Object(wt.m)(c,{time:e.chat.updated_at,"auto-update":60},null,8,["time"])])]),Object(wt.k)("div",zc,[Object(wt.m)(l,{class:"chat-preview-body",status:e.messageForStatusContent,"single-line":!0},null,8,["status"]),e.chat.unread>0?(Object(wt.D)(),Object(wt.j)("div",Mc,Object(wt.O)(e.chat.unread),1)):Object(wt.i)("",!0)])])],32)}]]);const Wc={class:"panel-default panel chat-new"},Yc={ref:"header",class:"panel-heading"},Gc={class:"input-wrap"},Kc={class:"input-search"},Xc={class:"member-list"},Zc=["onClickCapture"];var Qc=n(53);function el(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?el(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):el(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.cb,In.o);var nl={components:{BasicUserCard:Qc.a,UserAvatar:Fc.default},data:function(){return{suggestions:[],userIds:[],loading:!1,query:""}},created:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.chats();case 2:n=t.sent,n.chats.forEach((function(t){return e.suggestions.push(t.account)}));case 5:case"end":return t.stop()}}),t)})))()},computed:tl(tl({users:function(){var e=this;return this.userIds.map((function(t){return e.findUser(t)}))},availableUsers:function(){return 0!==this.query.length?this.users:this.suggestions}},Object(a.e)({currentUser:function(e){return e.users.currentUser},backendInteractor:function(e){return e.api.backendInteractor}})),Object(a.c)(["findUser"])),methods:{goBack:function(){this.$emit("cancel")},goToChat:function(e){this.$router.push({name:"chat",params:{recipient_id:e.id}})},onInput:function(){this.search(this.query)},addUser:function(e){this.selectedUserIds.push(e.id),this.query=""},removeUser:function(e){this.selectedUserIds=this.selectedUserIds.filter((function(t){return t!==e}))},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts"}).then((function(e){t.loading=!1,t.userIds=e.accounts.map((function(e){return e.id}))}))):this.loading=!1}}};n(578);var rl=Fn()(nl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("BasicUserCard");return Object(wt.D)(),Object(wt.j)("div",Wc,[Object(wt.k)("div",Yc,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})])],512),Object(wt.k)("div",Gc,[Object(wt.k)("div",Kc,[Object(wt.m)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),Object(wt.W)(Object(wt.k)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=t=>e.query=t),placeholder:"Search people",onInput:t[2]||(t[2]=(...t)=>e.onInput&&e.onInput(...t))},null,544),[[wt.S,e.query]])]),Object(wt.k)("div",Xc,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.availableUsers,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.id,class:"member"},[Object(wt.k)("div",{onClickCapture:Object(wt.Y)(n=>e.goToChat(t),["prevent"])},[Object(wt.m)(a,{user:t},null,8,["user"])],40,Zc)]))),128))])])}]]);function il(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ol(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?il(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):il(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var sl={components:{ChatListItem:Jc,List:Bs.a,ChatNew:rl},computed:ol(ol({},Object(a.e)({currentUser:function(e){return e.users.currentUser}})),Object(a.c)(["sortedChatList"])),data:function(){return{isNew:!1}},created:function(){this.$store.dispatch("fetchChats",{latest:!0})},methods:{cancelNewChat:function(){this.isNew=!1,this.$store.dispatch("fetchChats",{latest:!0})},newChat:function(){this.isNew=!0}}};n(579);var al=Fn()(sl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("ChatNew"),a=Object(wt.J)("ChatListItem"),c=Object(wt.J)("List");return e.isNew?(Object(wt.D)(),Object(wt.j)("div",vc,[Object(wt.m)(s,{onCancel:e.cancelNewChat},null,8,["onCancel"])])):(Object(wt.D)(),Object(wt.j)("div",yc,[Object(wt.k)("div",wc,[Object(wt.k)("span",kc,Object(wt.O)(e.$t("chats.chats")),1),Object(wt.k)("button",{class:"button-default",onClick:t[0]||(t[0]=(...t)=>e.newChat&&e.newChat(...t))},Object(wt.O)(e.$t("chats.new")),1)]),Object(wt.k)("div",_c,[e.sortedChatList.length>0?(Object(wt.D)(),Object(wt.j)("div",Sc,[Object(wt.m)(c,{items:e.sortedChatList},{item:Object(wt.V)(({item:e})=>[(Object(wt.D)(),Object(wt.h)(a,{key:e.id,compact:!1,chat:e},null,8,["chat"]))]),_:1},8,["items"])])):(Object(wt.D)(),Object(wt.j)("div",Cc,[Object(wt.k)("span",null,Object(wt.O)(e.$t("chats.empty_chat_list_placeholder")),1)]))])]))}]]);const cl={class:"chat-view"},ll={class:"chat-view-inner"},ul={ref:"inner",class:"panel-default panel chat-view-body"},dl={ref:"header",class:"panel-heading -sticky chat-view-heading"},pl={class:"title text-center"},hl={key:1,class:"chat-loading-error"},bl={class:"alert error"},ml={ref:"footer",class:"panel-body footer"},fl={key:0,class:"badge badge-notification unread-chat-count unread-message-count"};const Ol={key:0,class:"avatar-wrapper"},jl={class:"chat-message-inner"},gl={class:"dropdown-menu"},vl=["title"],yl={class:"created-at"},wl={key:1,class:"chat-message-date-separator"};var kl=n(58),_l=n(78),Sl=n(142);var Cl=n(38),Pl={name:"Timeago",props:["date"],computed:{displayDate:function(){var e=new Date;return e.setHours(0,0,0,0),this.date.getTime()===e.getTime()?this.$t("display_date.today"):this.date.toLocaleDateString(Cl.a.internalToBrowserLocale(this.$i18n.locale),{day:"numeric",month:"long"})}}};var xl=Fn()(Pl,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("time",null,Object(wt.O)(o.displayDate),1)}]]);function Dl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dl(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb,In.w);var Il={name:"ChatMessage",props:["author","edited","noHeading","chatViewItem","hoveredMessageChain"],emits:["hover"],components:{Popover:co.default,Attachment:kl.a,StatusContent:Uc.a,UserAvatar:Fc.default,Gallery:_l.a,LinkPreview:Sl.a,ChatMessageDate:xl},computed:Tl(Tl({createdAt:function(){return this.chatViewItem.data.created_at.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit",hour12:!1})},isCurrentUser:function(){return this.message.account_id===this.currentUser.id},message:function(){return this.chatViewItem.data},userProfileLink:function(){return Object(ji.a)(this.author.id,this.author.screen_name,this.$store.state.instance.restrictedNicknames)},isMessage:function(){return"message"===this.chatViewItem.type},messageForStatusContent:function(){return{summary:"",emojis:this.message.emojis,raw_html:this.message.content||"",text:this.message.content||"",attachments:this.message.attachments}},hasAttachment:function(){return this.message.attachments.length>0}},Object(a.e)({betterShadow:function(e){return e.interface.browserSupport.cssFilter},currentUser:function(e){return e.users.currentUser},restrictedNicknames:function(e){return e.instance.restrictedNicknames}})),{},{popoverMarginStyle:function(){return this.isCurrentUser?{}:{left:50}}},Object(a.c)(["mergedConfig","findUser"])),data:function(){return{hovered:!1,menuOpened:!1}},methods:{onHover:function(e){this.$emit("hover",{isHovered:e,messageChainId:this.chatViewItem.messageChainId})},deleteMessage:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.confirm(e.$t("chats.delete_confirm"))){t.next=4;break}return t.next=4,e.$store.dispatch("deleteChatMessage",{messageId:e.chatViewItem.data.id,chatId:e.chatViewItem.data.chat_id});case 4:e.hovered=!1,e.menuOpened=!1;case 6:case"end":return t.stop()}}),t)})))()}}};n(580);var $l=Fn()(Il,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserAvatar"),a=Object(wt.J)("router-link"),c=Object(wt.J)("FAIcon"),l=Object(wt.J)("Popover"),u=Object(wt.J)("StatusContent"),d=Object(wt.J)("ChatMessageDate");return e.isMessage?(Object(wt.D)(),Object(wt.j)("div",{key:0,class:Object(wt.w)(["chat-message-wrapper",{"hovered-message-chain":e.hoveredMessageChain}]),onMouseover:t[5]||(t[5]=t=>e.onHover(!0)),onMouseleave:t[6]||(t[6]=t=>e.onHover(!1))},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message",[{outgoing:e.isCurrentUser,incoming:!e.isCurrentUser}]])},[e.isCurrentUser?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Ol,[e.chatViewItem.isHead?(Object(wt.D)(),Object(wt.h)(a,{key:0,to:e.userProfileLink},{default:Object(wt.V)(()=>[Object(wt.m)(s,{compact:!0,"better-shadow":e.betterShadow,user:e.author},null,8,["better-shadow","user"])]),_:1},8,["to"])):Object(wt.i)("",!0)])),Object(wt.k)("div",jl,[Object(wt.k)("div",{class:"status-body",style:Object(wt.x)({"min-width":e.message.attachment?"80%":""})},[Object(wt.k)("div",{class:Object(wt.w)(["media status",{"without-attachment":!e.hasAttachment,pending:e.chatViewItem.data.pending,error:e.chatViewItem.data.error}]),style:{position:"relative"},onMouseenter:t[3]||(t[3]=t=>e.hovered=!0),onMouseleave:t[4]||(t[4]=t=>e.hovered=!1)},[Object(wt.k)("div",{class:Object(wt.w)(["chat-message-menu",{visible:e.hovered||e.menuOpened}])},[Object(wt.m)(l,{trigger:"click",placement:"top","bound-to-selector":e.isCurrentUser?"":".scrollable-message-list","bound-to":{x:"container"},margin:e.popoverMarginStyle,onShow:t[1]||(t[1]=t=>e.menuOpened=!0),onClose:t[2]||(t[2]=t=>e.menuOpened=!1)},{content:Object(wt.V)(()=>[Object(wt.k)("div",gl,[Object(wt.k)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=(...t)=>e.deleteMessage&&e.deleteMessage(...t))},[Object(wt.m)(c,{icon:"times"}),Object(wt.l)(" "+Object(wt.O)(e.$t("chats.delete")),1)])])]),trigger:Object(wt.V)(()=>[Object(wt.k)("button",{class:"button-default menu-icon",title:e.$t("chats.more")},[Object(wt.m)(c,{icon:"ellipsis-h"})],8,vl)]),_:1},8,["bound-to-selector","margin"])],2),Object(wt.m)(u,{class:"message-content",status:e.messageForStatusContent,"full-content":!0},{footer:Object(wt.V)(()=>[Object(wt.k)("span",yl,Object(wt.O)(e.createdAt),1)]),_:1},8,["status"])],34)],4)])],2)],34)):(Object(wt.D)(),Object(wt.j)("div",wl,[Object(wt.m)(d,{date:e.chatViewItem.date},null,8,["date"])]))}]]),zl=function(){return{scrollTop:window.scrollY,scrollHeight:document.documentElement.scrollHeight,offsetHeight:window.innerHeight}};function Ml(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ul(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ml(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ml(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.n,In.o);var Fl={components:{ChatMessage:$l,ChatTitle:Bc,PostStatusForm:Or.a},data:function(){return{jumpToBottomButtonVisible:!1,hoveredMessageChainId:void 0,lastScrollPosition:{},scrollableContainerHeight:"100%",errorLoadingChat:!1,messageRetriers:{}}},created:function(){this.startFetching(),window.addEventListener("resize",this.handleResize)},mounted:function(){var e=this;window.addEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$nextTick((function(){e.handleResize()}))},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.dispatch("clearCurrentChat")},computed:Ul(Ul({recipient:function(){return this.currentChat&&this.currentChat.account},recipientId:function(){return this.$route.params.recipient_id},formPlaceholder:function(){return this.recipient?this.$t("chats.message_user",{nickname:this.recipient.screen_name_ui}):""},chatViewItems:function(){return $t.getView(this.currentChatMessageService)},newMessageCount:function(){return this.currentChatMessageService&&this.currentChatMessageService.newMessageCount},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===j.b.JOINED}},Object(a.c)(["currentChat","currentChatMessageService","findOpenedChatByRecipientId","mergedConfig"])),Object(a.e)({backendInteractor:function(e){return e.api.backendInteractor},mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus},mobileLayout:function(e){return"mobile"===e.interface.layoutType},currentUser:function(e){return e.users.currentUser}})),watch:{chatViewItems:function(){var e=this,t=this.bottomedOut(10);this.$nextTick((function(){t&&e.scrollDown()}))},$route:function(){this.startFetching()},mastoUserSocketStatus:function(e){e===j.b.JOINED&&this.fetchChat({isFirstFetch:!0})}},methods:{onMessageHover:function(e){var t=e.isHovered,n=e.messageChainId;this.hoveredMessageChainId=t?n:void 0},onFilesDropped:function(){var e=this;this.$nextTick((function(){e.handleResize()}))},handleVisibilityChange:function(){var e=this;this.$nextTick((function(){!document.hidden&&e.bottomedOut(10)&&e.scrollDown({forceRead:!0})}))},handleResize:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.expand,r=void 0!==n&&n,i=t.delayed,o=void 0!==i&&i;o?setTimeout((function(){e.handleResize(Ul(Ul({},t),{},{delayed:!1}))}),100):this.$nextTick((function(){var t=zl().offsetHeight,n=void 0===t?void 0:t,i=e.lastScrollPosition.offsetHeight-n;(0!==i||!e.bottomedOut()&&r)&&e.$nextTick((function(){window.scrollTo({top:window.scrollY+i})})),e.lastScrollPosition=zl()}))},scrollDown:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.behavior,n=void 0===t?"auto":t,r=e.forceRead,i=void 0!==r&&r;this.$nextTick((function(){window.scrollTo({top:document.documentElement.scrollHeight,behavior:n})})),i&&this.readChat()},readChat:function(){if(this.currentChatMessageService&&this.currentChatMessageService.maxId&&!document.hidden){var e=this.currentChatMessageService.maxId;this.$store.dispatch("readChat",{id:this.currentChat.id,lastReadId:e})}},bottomedOut:function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=window.scrollY+e,n=document.documentElement.scrollHeight-window.innerHeight;return n<=t}(e)},reachedTop:function(){return window.scrollY<=0},cullOlderCheck:function(){var e=this;window.setTimeout((function(){e.bottomedOut(10)&&e.$store.dispatch("cullOlderMessages",e.currentChatMessageService.chatId)}),5e3)},handleScroll:pa()((function(){var e=this;this.currentChat&&(this.reachedTop()?this.fetchChat({maxId:this.currentChatMessageService.minId}):this.bottomedOut(10)?(this.jumpToBottomButtonVisible=!1,this.cullOlderCheck(),this.newMessageCount>0&&window.setTimeout((function(){e.$el&&e.readChat()}),1500)):this.jumpToBottomButtonVisible=!0)}),200),handleScrollUp:function(e){var t,n,r=zl();window.scrollTo({top:(t=e,n=r,t.scrollTop+(n.scrollHeight-t.scrollHeight))})},fetchChat:function(e){var t=this,n=e.isFirstFetch,r=void 0!==n&&n,i=e.fetchLatest,o=void 0!==i&&i,s=e.maxId,a=this.currentChatMessageService;if(a&&(!o||!this.streamingEnabled)){var c=a.chatId,l=!!s,u=o&&a.maxId;return this.backendInteractor.chatMessages({id:c,maxId:s,sinceId:u}).then((function(e){r&&$t.clear(a);var n=zl();t.$store.dispatch("addChatMessages",{chatId:c,messages:e}).then((function(){t.$nextTick((function(){l&&t.handleScrollUp(n),!(document.documentElement.scrollHeight>window.innerHeight)&&e.length>0&&t.fetchChat({maxId:t.currentChatMessageService.minId})}))}))}))}},startFetching:function(){var e=this;return i()(s.a.mark((function t(){var n;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.findOpenedChatByRecipientId(e.recipientId)){t.next=12;break}return t.prev=2,t.next=5,e.backendInteractor.getOrCreateChat({accountId:e.recipientId});case 5:n=t.sent,t.next=12;break;case 8:t.prev=8,t.t0=t.catch(2),console.error("Error creating or getting a chat",t.t0),e.errorLoadingChat=!0;case 12:n&&(e.$nextTick((function(){e.scrollDown({forceRead:!0})})),e.$store.dispatch("addOpenedChat",{chat:n}),e.doStartFetching());case 13:case"end":return t.stop()}}),t,null,[[2,8]])})))()},doStartFetching:function(){var e=this;this.$store.dispatch("startFetchingCurrentChat",{fetcher:function(){return Object(je.a)((function(){return e.fetchChat({fetchLatest:!0})}),5e3)}}),this.fetchChat({isFirstFetch:!0})},handleAttachmentPosting:function(){var e=this;this.$nextTick((function(){e.handleResize(),e.scrollDown({forceRead:!0})}))},sendMessage:function(e){var t=this,n=e.status,r=e.media,i=e.idempotencyKey,o={id:this.currentChat.id,content:n,idempotencyKey:i};r[0]&&(o.mediaId=r[0].id);var s=function(e){var t=e.content,n=e.chatId,r=e.attachments,i=e.userId,o=e.idempotencyKey,s={content:t,chat_id:n,created_at:new Date,id:"".concat((new Date).getTime()),attachments:r,account_id:i,idempotency_key:o,emojis:[],pending:!0,isNormalized:!0};return r[0]&&(s.attachment=r[0]),s}({attachments:r,chatId:this.currentChat.id,content:n,userId:this.currentUser.id,idempotencyKey:i});return this.$store.dispatch("addChatMessages",{chatId:this.currentChat.id,messages:[s]}).then((function(){t.handleAttachmentPosting()})),this.doSendMessage({params:o,fakeMessage:s,retriesLeft:10})},doSendMessage:function(e){var t=this,n=e.params,r=e.fakeMessage,i=e.retriesLeft,o=void 0===i?10:i;if(!(o<=0))return this.backendInteractor.sendChatMessage(n).then((function(e){return t.$store.dispatch("addChatMessages",{chatId:t.currentChat.id,updateMaxId:!1,messages:[Ul(Ul({},e),{},{fakeId:r.id})]}),e})).catch((function(e){return console.error("Error sending message",e),t.$store.dispatch("handleMessageError",{chatId:t.currentChat.id,fakeId:r.id,isRetry:10!==o}),(e.statusCode>=500&&e.statusCode<600||"Failed to fetch"===e.message)&&(t.messageRetriers[r.id]=setTimeout((function(){t.doSendMessage({params:n,fakeMessage:r,retriesLeft:o-1})}),1e3*Math.pow(2,10-o))),{}})),Promise.resolve(r)},goBack:function(){this.$router.push({name:"chats",params:{username:this.currentUser.screen_name}})}}};n(581);var El=Fn()(Fl,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("ChatTitle"),c=Object(wt.J)("ChatMessage"),l=Object(wt.J)("PostStatusForm");return Object(wt.D)(),Object(wt.j)("div",cl,[Object(wt.k)("div",ll,[Object(wt.k)("div",ul,[Object(wt.k)("div",dl,[Object(wt.k)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=(...t)=>e.goBack&&e.goBack(...t))},[Object(wt.m)(s,{size:"lg",icon:"chevron-left"})]),Object(wt.k)("div",pl,[Object(wt.m)(a,{user:e.recipient,"with-avatar":!0},null,8,["user"])])],512),Object(wt.k)("div",{class:"message-list",style:Object(wt.x)({height:e.scrollableContainerHeight})},[e.errorLoadingChat?(Object(wt.D)(),Object(wt.j)("div",hl,[Object(wt.k)("div",bl,Object(wt.O)(e.$t("chats.error_loading_chat")),1)])):(Object(wt.D)(!0),Object(wt.j)(wt.a,{key:0},Object(wt.H)(e.chatViewItems,t=>(Object(wt.D)(),Object(wt.h)(c,{key:t.id,author:e.recipient,"chat-view-item":t,"hovered-message-chain":t.messageChainId===e.hoveredMessageChainId,onHover:e.onMessageHover},null,8,["author","chat-view-item","hovered-message-chain","onHover"]))),128))],4),Object(wt.k)("div",ml,[Object(wt.k)("div",{class:Object(wt.w)(["jump-to-bottom-button",{visible:e.jumpToBottomButtonVisible}]),onClick:t[1]||(t[1]=t=>e.scrollDown({behavior:"smooth"}))},[Object(wt.k)("span",null,[Object(wt.m)(s,{icon:"chevron-down"}),e.newMessageCount?(Object(wt.D)(),Object(wt.j)("div",fl,Object(wt.O)(e.newMessageCount),1)):Object(wt.i)("",!0)])],2),Object(wt.m)(l,{"disable-subject":!0,"disable-scope-selector":!0,"disable-notice":!0,"disable-lock-warning":!0,"disable-polls":!0,"disable-sensitivity-checkbox":!0,"disable-submit":e.errorLoadingChat||!e.currentChat,"disable-preview":!0,"optimistic-posting":!0,"post-handler":e.sendMessage,"submit-on-enter":!e.mobileLayout,"preserve-focus":!e.mobileLayout,"auto-focus":!e.mobileLayout,placeholder:e.formPlaceholder,"file-limit":1,"max-height":"160","emoji-picker-placement":"top",onResize:e.handleResize},null,8,["disable-submit","post-handler","submit-on-enter","preserve-focus","auto-focus","placeholder","onResize"])],512)],512)])])}]]);const Ll={key:0,class:"user-profile panel panel-default"},Rl={key:0,class:"user-profile-fields"},Al=["title"],Nl=["title"],Bl=["label","disabled"],Vl=["label","disabled"],Hl={key:1,class:"panel user-profile-placeholder"},ql={class:"panel-heading"},Jl={class:"title"},Wl={class:"panel-body"},Yl={key:0};const Gl={class:"follow-card-content-container"},Kl={key:0,class:"faint"},Xl={key:0,class:"follow-card-follow-button"};var Zl=n(143),Ql=n(140),eu={props:["user","noFollowsYou"],components:{BasicUserCard:Qc.a,RemoteFollow:Zl.a,FollowButton:Ql.a},computed:{isMe:function(){return this.$store.state.users.currentUser.id===this.user.id},loggedIn:function(){return this.$store.state.users.currentUser},relationship:function(){return this.$store.getters.relationship(this.user.id)}}};n(582);var tu=Fn()(eu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("RemoteFollow"),a=Object(wt.J)("FollowButton"),c=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(c,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",Gl,[e.isMe||!e.noFollowsYou&&e.relationship.followed_by?(Object(wt.D)(),Object(wt.j)("span",Kl,Object(wt.O)(e.isMe?e.$t("user_card.its_you"):e.$t("user_card.follows_you")),1)):Object(wt.i)("",!0),e.loggedIn?e.isMe?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.h)(a,{key:2,relationship:e.relationship,"label-following":e.$t("user_card.follow_unfollow"),class:"follow-card-follow-button",user:e.user},null,8,["relationship","label-following","user"])):(Object(wt.D)(),Object(wt.j)(wt.a,{key:1},[e.relationship.following?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("div",Xl,[Object(wt.m)(s,{user:e.user},null,8,["user"])]))],64))])]),_:1},8,["user"])}]]),nu=n(300),ru=n.n(nu),iu=n(301);n(583);function ou(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function su(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ou(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ou(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.r);var au=function(e){var t=e.fetch,n=e.select,r=e.unmounted,i=e.childPropName,o=void 0===i?"entries":i,s=e.additionalPropNames,a=void 0===s?[]:s;return function(e){return{props:Object.keys(Object(iu.a)(e)).filter((function(e){return e!==o})).concat(a),data:function(){return{loading:!1,bottomedOut:!1,error:!1,entries:[]}},created:function(){window.addEventListener("scroll",this.scrollLoad),0===this.entries.length&&this.fetchEntries()},unmounted:function(){window.removeEventListener("scroll",this.scrollLoad),r&&r(this.$props,this.$store)},methods:{updateEntries:function(){this.entries=n(this.$props,this.$store)||[]},fetchEntries:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(t){e.loading=!1,e.bottomedOut=ru()(t)})).catch((function(){e.loading=!1,e.error=!0})).finally((function(){e.updateEntries()})))},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.loading&&!1===this.bottomedOut&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchEntries()}},render:function(){var t,n=su(su({},this.$props),{},h()({},o,this.entries)),r=this.$slots;return Object(wt.m)("div",{class:"with-load-more"},[Object(wt.m)(e,n,(t=r,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!Object(wt.t)(t)?r:{default:function(){return[r]}})),Object(wt.m)("div",{class:"with-load-more-footer"},[this.error&&Object(wt.m)("button",{onClick:this.fetchEntries,class:"button-unstyled -link -fullwidth alert error"},[this.$t("general.generic_error")]),!this.error&&this.loading&&Object(wt.m)(sn.a,{spin:!0,icon:"circle-notch"},null),!this.error&&!this.loading&&!this.bottomedOut&&Object(wt.m)("a",{onClick:this.fetchEntries},[this.$t("general.more")])])])}}}};Tn.c.add(In.r);var cu=au({fetch:function(e,t){return t.dispatch("fetchFollowers",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"followerIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFollowers",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),lu=au({fetch:function(e,t){return t.dispatch("fetchFriends",e.userId)},select:function(e,t){return qt()(t.getters.findUser(e.userId),"friendIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFriends",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Bs.a),uu={data:function(){return{error:!1,userId:null,tab:"statuses",footerRef:null}},created:function(){var e=this.$route.params;this.load(e.name||e.id),this.tab=qt()(this.$route,"query.tab","statuses")},unmounted:function(){this.stopFetching()},computed:{timeline:function(){return this.$store.state.statuses.timelines.user},favorites:function(){return this.$store.state.statuses.timelines.favorites},media:function(){return this.$store.state.statuses.timelines.media},isUs:function(){return this.userId&&this.$store.state.users.currentUser.id&&this.userId===this.$store.state.users.currentUser.id},user:function(){return this.$store.getters.findUser(this.userId)},isExternal:function(){return"external-user-profile"===this.$route.name},followsTabVisible:function(){return this.isUs||!this.user.hide_follows},followersTabVisible:function(){return this.isUs||!this.user.hide_followers}},methods:{setFooterRef:function(e){this.footerRef=e},load:function(e){var t=this,n=function(e,n){n!==t.$store.state.statuses.timelines[e].userId&&t.$store.commit("clearTimeline",{timeline:e}),t.$store.dispatch("startFetchingTimeline",{timeline:e,userId:n})},r=function(e){t.userId=e,n("user",e),n("media",e),t.isUs&&n("favorites",e),t.$store.dispatch("fetchPinnedStatuses",e)};this.userId=null,this.error=!1;var i=this.$store.getters.findUser(e);i?r(i.id):this.$store.dispatch("fetchUser",e).then((function(e){var t=e.id;return r(t)})).catch((function(e){var n=qt()(e,"error.error");t.error="No user with such user_id"===n?t.$t("user_profile.profile_does_not_exist"):n||t.$t("user_profile.profile_loading_error")}))},stopFetching:function(){this.$store.dispatch("stopFetchingTimeline","user"),this.$store.dispatch("stopFetchingTimeline","favorites"),this.$store.dispatch("stopFetchingTimeline","media")},switchUser:function(e){this.stopFetching(),this.load(e)},onTabSwitch:function(e){this.tab=e,this.$router.replace({query:{tab:e}})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")}},watch:{"$route.params.id":function(e){e&&this.switchUser(e)},"$route.params.name":function(e){e&&this.switchUser(e)},"$route.query":function(e){this.tab=e.tab||"statuses"}},components:{UserCard:jr.a,Timeline:Ya,FollowerList:cu,FriendList:lu,FollowCard:tu,TabSwitcher:bc.a,Conversation:za,RichContent:Ac.a}};n(584);var du=Fn()(uu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("UserCard"),a=Object(wt.J)("RichContent"),c=Object(wt.J)("Timeline"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("FriendList"),d=Object(wt.J)("FollowerList"),p=Object(wt.J)("tab-switcher"),h=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",null,[e.user?(Object(wt.D)(),Object(wt.j)("div",Ll,[Object(wt.m)(s,{"user-id":e.userId,switcher:!0,selected:e.timeline.viewing,"allow-zooming-avatar":!0,rounded:"top"},null,8,["user-id","selected"]),e.user.fields_html&&e.user.fields_html.length>0?(Object(wt.D)(),Object(wt.j)("div",Rl,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.user.fields_html,(t,n)=>(Object(wt.D)(),Object(wt.j)("dl",{key:n,class:"user-profile-field"},[Object(wt.k)("dt",{title:e.user.fields_text[n].name,class:"user-profile-field-name"},[Object(wt.m)(a,{html:t.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,Al),Object(wt.k)("dd",{title:e.user.fields_text[n].value,class:"user-profile-field-value"},[Object(wt.m)(a,{html:t.value,emoji:e.user.emoji},null,8,["html","emoji"])],8,Nl)]))),128))])):Object(wt.i)("",!0),Object(wt.m)(p,{"active-tab":e.tab,"render-only-focused":!0,"on-switch":e.onTabSwitch},{default:Object(wt.V)(()=>[Object(wt.m)(c,{key:"statuses",label:e.$t("user_card.statuses"),count:e.user.statuses_count,embedded:!0,title:e.$t("user_profile.timeline_title"),timeline:e.timeline,"timeline-name":"user","user-id":e.userId,"pinned-status-ids":e.user.pinnedStatusIds,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","count","title","timeline","user-id","pinned-status-ids","footerSlipgate"]),e.followsTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followees",label:e.$t("user_card.followees"),disabled:!e.user.friends_count},[Object(wt.m)(u,{"user-id":e.userId},{item:Object(wt.V)(({item:e})=>[Object(wt.m)(l,{user:e},null,8,["user"])]),_:1},8,["user-id"])],8,Bl)):Object(wt.i)("",!0),e.followersTabVisible?(Object(wt.D)(),Object(wt.j)("div",{key:"followers",label:e.$t("user_card.followers"),disabled:!e.user.followers_count},[Object(wt.m)(d,{"user-id":e.userId},{item:Object(wt.V)(({item:t})=>[Object(wt.m)(l,{user:t,"no-follows-you":e.isUs},null,8,["user","no-follows-you"])]),_:1},8,["user-id"])],8,Vl)):Object(wt.i)("",!0),Object(wt.m)(c,{key:"media",label:e.$t("user_card.media"),disabled:!e.media.visibleStatuses.length,embedded:!0,title:e.$t("user_card.media"),"timeline-name":"media",timeline:e.media,"user-id":e.userId,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","user-id","footerSlipgate"]),e.isUs?(Object(wt.D)(),Object(wt.h)(c,{key:"favorites",label:e.$t("user_card.favorites"),disabled:!e.favorites.visibleStatuses.length,embedded:!0,title:e.$t("user_card.favorites"),"timeline-name":"favorites",timeline:e.favorites,"in-profile":!0,footerSlipgate:e.footerRef},null,8,["label","disabled","title","timeline","footerSlipgate"])):Object(wt.i)("",!0)]),_:1},8,["active-tab","on-switch"]),Object(wt.k)("div",{class:"panel-footer",ref:e.setFooterRef},null,512)])):(Object(wt.D)(),Object(wt.j)("div",Hl,[Object(wt.k)("div",ql,[Object(wt.k)("div",Jl,Object(wt.O)(e.$t("settings.profile_tab")),1)]),Object(wt.k)("div",Wl,[e.error?(Object(wt.D)(),Object(wt.j)("span",Yl,Object(wt.O)(e.error),1)):(Object(wt.D)(),Object(wt.h)(h,{key:1,spin:"",icon:"circle-notch"}))])]))])}]]);const pu={class:"panel panel-default"},hu={class:"panel-heading"},bu={class:"title"},mu={class:"search-input-container"},fu=["placeholder"],Ou={key:0,class:"text-center loading-icon"},ju={key:1},gu={class:"search-nav-heading"},vu=["label"],yu=["label"],wu=["label"],ku={class:"panel-body"},_u={key:0},Su={key:0,class:"search-result-heading"},Cu={key:1},Pu={key:0,class:"search-result-heading"},xu={key:2},Du={key:0,class:"search-result-heading"},Tu={class:"hashtag"},Iu={key:0},$u={key:0},zu={key:1},Mu={key:0,class:"count"},Uu=Object(wt.k)("div",{class:"search-result-footer text-center panel-footer faint"},null,-1);Tn.c.add(In.r,In.cb);var Fu={components:{FollowCard:tu,Conversation:za,Status:Ns.default,TabSwitcher:bc.a},props:["query"],data:function(){return{loaded:!1,loading:!1,searchTerm:this.query||"",userIds:[],statuses:[],hashtags:[],currenResultTab:"statuses"}},computed:{users:function(){var e=this;return this.userIds.map((function(t){return e.$store.getters.findUser(t)}))},visibleStatuses:function(){var e=this.$store.state.statuses.allStatusesObject;return this.statuses.filter((function(t){return e[t.id]&&!e[t.id].deleted}))}},mounted:function(){this.search(this.query)},watch:{query:function(e){this.searchTerm=e,this.search(e)}},methods:{newQuery:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.statuses=[],this.hashtags=[],this.$refs.searchInput.blur(),this.$store.dispatch("search",{q:e,resolve:!0}).then((function(e){t.loading=!1,t.userIds=he()(e.accounts,"id"),t.statuses=e.statuses,t.hashtags=e.hashtags,t.currenResultTab=t.getActiveTab(),t.loaded=!0}))):this.loading=!1},resultCount:function(e){var t=this[e].length;return 0===t?"":" (".concat(t,")")},onResultTabSwitch:function(e){this.currenResultTab=e},getActiveTab:function(){return this.visibleStatuses.length>0?"statuses":this.users.length>0?"people":this.hashtags.length>0?"hashtags":"statuses"},lastHistoryRecord:function(e){return e.history&&e.history[0]}}};n(585);var Eu=Fn()(Fu,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FAIcon"),a=Object(wt.J)("tab-switcher"),c=Object(wt.J)("Status"),l=Object(wt.J)("FollowCard"),u=Object(wt.J)("router-link");return Object(wt.D)(),Object(wt.j)("div",pu,[Object(wt.k)("div",hu,[Object(wt.k)("div",bu,Object(wt.O)(e.$t("nav.search")),1)]),Object(wt.k)("div",mu,[Object(wt.W)(Object(wt.k)("input",{ref:"searchInput","onUpdate:modelValue":t[0]||(t[0]=t=>e.searchTerm=t),class:"search-input",placeholder:e.$t("nav.search"),onKeyup:t[1]||(t[1]=Object(wt.X)(t=>e.newQuery(e.searchTerm),["enter"]))},null,40,fu),[[wt.S,e.searchTerm]]),Object(wt.k)("button",{class:"btn button-default search-button",type:"submit",onClick:t[2]||(t[2]=t=>e.newQuery(e.searchTerm))},[Object(wt.m)(s,{icon:"search"})])]),e.loading?(Object(wt.D)(),Object(wt.j)("div",Ou,[Object(wt.m)(s,{icon:"circle-notch",spin:"",size:"lg"})])):e.loaded?(Object(wt.D)(),Object(wt.j)("div",ju,[Object(wt.k)("div",gu,[Object(wt.m)(a,{ref:"tabSwitcher","on-switch":e.onResultTabSwitch,"active-tab":e.currenResultTab},{default:Object(wt.V)(()=>[Object(wt.k)("span",{key:"statuses",label:e.$t("user_card.statuses")+e.resultCount("visibleStatuses")},null,8,vu),Object(wt.k)("span",{key:"people",label:e.$t("search.people")+e.resultCount("users")},null,8,yu),Object(wt.k)("span",{key:"hashtags",label:e.$t("search.hashtags")+e.resultCount("hashtags")},null,8,wu)]),_:1},8,["on-switch","active-tab"])])])):Object(wt.i)("",!0),Object(wt.k)("div",ku,["statuses"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",_u,[0===e.visibleStatuses.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Su,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.visibleStatuses,e=>(Object(wt.D)(),Object(wt.h)(c,{key:e.id,collapsable:!1,expandable:!1,compact:!1,class:"search-result",statusoid:e,"no-heading":!1},null,8,["statusoid"]))),128))])):"people"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",Cu,[0===e.users.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Pu,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(l,{key:e.id,user:e,class:"list-item search-result"},null,8,["user"]))),128))])):"hashtags"===e.currenResultTab?(Object(wt.D)(),Object(wt.j)("div",xu,[0===e.hashtags.length&&!e.loading&&e.loaded?(Object(wt.D)(),Object(wt.j)("div",Du,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("search.no_results")),1)])):Object(wt.i)("",!0),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.hashtags,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.url,class:"status trend search-result"},[Object(wt.k)("div",Tu,[Object(wt.m)(u,{to:{name:"tag-timeline",params:{tag:t.name}}},{default:Object(wt.V)(()=>[Object(wt.l)(" #"+Object(wt.O)(t.name),1)]),_:2},1032,["to"]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Iu,[1==e.lastHistoryRecord(t).accounts?(Object(wt.D)(),Object(wt.j)("span",$u,Object(wt.O)(e.$t("search.person_talking",{count:e.lastHistoryRecord(t).accounts})),1)):(Object(wt.D)(),Object(wt.j)("span",zu,Object(wt.O)(e.$t("search.people_talking",{count:e.lastHistoryRecord(t).accounts})),1))])):Object(wt.i)("",!0)]),e.lastHistoryRecord(t)?(Object(wt.D)(),Object(wt.j)("div",Mu,Object(wt.O)(e.lastHistoryRecord(t).uses),1)):Object(wt.i)("",!0)]))),128))])):Object(wt.i)("",!0)]),Uu])}]]);const Lu={class:"settings panel panel-default"},Ru={class:"panel-heading"},Au={class:"panel-body"},Nu={class:"container"},Bu={class:"text-fields"},Vu={class:"form--label",for:"sign-up-username"},Hu=["disabled","placeholder"],qu={key:0,class:"form-error"},Ju={key:0},Wu={class:"form--label",for:"sign-up-fullname"},Yu=["disabled","placeholder"],Gu={key:1,class:"form-error"},Ku={key:0},Xu={class:"form--label",for:"email"},Zu=["disabled"],Qu={key:2,class:"form-error"},ed={key:0},td={class:"form-group"},nd={class:"form--label",for:"bio"},rd=["disabled","placeholder"],id={class:"form--label",for:"sign-up-password"},od=["disabled"],sd={key:3,class:"form-error"},ad={key:0},cd={class:"form--label",for:"sign-up-password-confirmation"},ld=["disabled"],ud={key:4,class:"form-error"},dd={key:0},pd={key:1},hd={key:5,class:"form-group"},bd={class:"form--label",for:"reason"},md=["disabled","placeholder"],fd={key:6,id:"captcha-group",class:"form-group"},Od={class:"form--label",for:"captcha-label"},jd=["src"],gd=["disabled"],vd={key:7,class:"form-group"},yd={for:"token"},wd={class:"form-group"},kd=["disabled"],_d=["innerHTML"],Sd={key:0,class:"form-group"},Cd={class:"alert error"};var Pd=n(333),xd=n(62);function Dd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Td(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Id={setup:function(){return{v$:Object(Pd.a)()}},data:function(){return{user:{email:"",fullname:"",username:"",password:"",confirm:"",reason:"",language:""},captcha:{}}},components:{InterfaceLanguageSwitcher:n(174).a},validations:function(){var e=this;return{user:{email:{required:Object(xd.b)((function(){return e.accountActivationRequired}))},username:{required:xd.a},fullname:{required:xd.a},password:{required:xd.a},confirm:{required:xd.a,sameAs:Object(xd.c)(this.user.password)},reason:{required:Object(xd.b)((function(){return e.accountApprovalRequired}))},language:{}}}},created:function(){(!this.registrationOpen&&!this.token||this.signedIn)&&this.$router.push({name:"root"}),this.setCaptcha()},computed:Td({token:function(){return this.$route.params.token},bioPlaceholder:function(){return this.replaceNewlines(this.$t("registration.bio_placeholder"))},reasonPlaceholder:function(){return this.replaceNewlines(this.$t("registration.reason_placeholder"))}},Object(a.e)({registrationOpen:function(e){return e.instance.registrationOpen},signedIn:function(e){return!!e.users.currentUser},isPending:function(e){return e.users.signUpPending},serverValidationErrors:function(e){return e.users.signUpErrors},termsOfService:function(e){return e.instance.tos},accountActivationRequired:function(e){return e.instance.accountActivationRequired},accountApprovalRequired:function(e){return e.instance.accountApprovalRequired}})),methods:Td(Td({},Object(a.b)(["signUp","getCaptcha"])),{},{submit:function(){var e=this;return i()(s.a.mark((function t(){return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.user.nickname=e.user.username,e.user.token=e.token,e.user.captcha_solution=e.captcha.solution,e.user.captcha_token=e.captcha.token,e.user.captcha_answer_data=e.captcha.answer_data,e.user.language&&(e.user.language=Cl.a.internalToBackendLocale(e.user.language)),e.v$.$touch(),e.v$.$invalid){t.next=18;break}return t.prev=8,t.next=11,e.signUp(e.user);case 11:e.$router.push({name:"friends"}),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(8),console.warn("Registration failed: ",t.t0),e.setCaptcha();case 18:case"end":return t.stop()}}),t,null,[[8,14]])})))()},setCaptcha:function(){var e=this;this.getCaptcha().then((function(t){e.captcha=t}))},replaceNewlines:function(e){return e.replace(/\s*\n\s*/g," \n")}})};n(587);var $d=Fn()(Id,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("interface-language-switcher");return Object(wt.D)(),Object(wt.j)("div",Lu,[Object(wt.k)("div",Ru,Object(wt.O)(e.$t("registration.registration")),1),Object(wt.k)("div",Au,[Object(wt.k)("form",{class:"registration-form",onSubmit:t[10]||(t[10]=Object(wt.Y)(t=>e.submit(e.user),["prevent"]))},[Object(wt.k)("div",Nu,[Object(wt.k)("div",Bu,[Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.username.$error}])},[Object(wt.k)("label",Vu,Object(wt.O)(e.$t("login.username")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-username","onUpdate:modelValue":t[0]||(t[0]=t=>e.v$.user.username.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.username_placeholder")},null,8,Hu),[[wt.S,e.v$.user.username.$model,void 0,{trim:!0}]])],2),e.v$.user.username.$dirty?(Object(wt.D)(),Object(wt.j)("div",qu,[Object(wt.k)("ul",null,[e.v$.user.username.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ju,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.username_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.fullname.$error}])},[Object(wt.k)("label",Wu,Object(wt.O)(e.$t("registration.fullname")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-fullname","onUpdate:modelValue":t[1]||(t[1]=t=>e.v$.user.fullname.$model=t),disabled:e.isPending,class:"form-control",placeholder:e.$t("registration.fullname_placeholder")},null,8,Yu),[[wt.S,e.v$.user.fullname.$model,void 0,{trim:!0}]])],2),e.v$.user.fullname.$dirty?(Object(wt.D)(),Object(wt.j)("div",Gu,[Object(wt.k)("ul",null,[e.v$.user.fullname.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",Ku,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.fullname_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.email.$error}])},[Object(wt.k)("label",Xu,Object(wt.O)(e.$t("registration.email")),1),Object(wt.W)(Object(wt.k)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=t=>e.v$.user.email.$model=t),disabled:e.isPending,class:"form-control",type:"email"},null,8,Zu),[[wt.S,e.v$.user.email.$model]])],2),e.v$.user.email.$dirty?(Object(wt.D)(),Object(wt.j)("div",Qu,[Object(wt.k)("ul",null,[e.v$.user.email.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ed,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.email_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",td,[Object(wt.k)("label",nd,Object(wt.O)(e.$t("registration.bio"))+" ("+Object(wt.O)(e.$t("general.optional"))+")",1),Object(wt.W)(Object(wt.k)("textarea",{id:"bio","onUpdate:modelValue":t[3]||(t[3]=t=>e.user.bio=t),disabled:e.isPending,class:"form-control",placeholder:e.bioPlaceholder},null,8,rd),[[wt.S,e.user.bio]])]),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.password.$error}])},[Object(wt.k)("label",id,Object(wt.O)(e.$t("login.password")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password","onUpdate:modelValue":t[4]||(t[4]=t=>e.user.password=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,od),[[wt.S,e.user.password]])],2),e.v$.user.password.$dirty?(Object(wt.D)(),Object(wt.j)("div",sd,[Object(wt.k)("ul",null,[e.v$.user.password.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",ad,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_required")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.confirm.$error}])},[Object(wt.k)("label",cd,Object(wt.O)(e.$t("registration.password_confirm")),1),Object(wt.W)(Object(wt.k)("input",{id:"sign-up-password-confirmation","onUpdate:modelValue":t[5]||(t[5]=t=>e.user.confirm=t),disabled:e.isPending,class:"form-control",type:"password"},null,8,ld),[[wt.S,e.user.confirm]])],2),e.v$.user.confirm.$dirty?(Object(wt.D)(),Object(wt.j)("div",ud,[Object(wt.k)("ul",null,[e.v$.user.confirm.required?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",dd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_required")),1)])),e.v$.user.confirm.sameAsPassword?Object(wt.i)("",!0):(Object(wt.D)(),Object(wt.j)("li",pd,[Object(wt.k)("span",null,Object(wt.O)(e.$t("registration.validations.password_confirmation_match")),1)]))])])):Object(wt.i)("",!0),Object(wt.k)("div",{class:Object(wt.w)(["form-group",{"form-group--error":e.v$.user.language.$error}])},[Object(wt.m)(s,{for:"email-language","prompt-text":e.$t("registration.email_language"),language:e.v$.user.language.$model,"set-language":t=>e.v$.user.language.$model=t},null,8,["prompt-text","language","set-language"])],2),e.accountApprovalRequired?(Object(wt.D)(),Object(wt.j)("div",hd,[Object(wt.k)("label",bd,Object(wt.O)(e.$t("registration.reason")),1),Object(wt.W)(Object(wt.k)("textarea",{id:"reason","onUpdate:modelValue":t[6]||(t[6]=t=>e.user.reason=t),disabled:e.isPending,class:"form-control",placeholder:e.reasonPlaceholder},null,8,md),[[wt.S,e.user.reason]])])):Object(wt.i)("",!0),"none"!=e.captcha.type?(Object(wt.D)(),Object(wt.j)("div",fd,[Object(wt.k)("label",Od,Object(wt.O)(e.$t("registration.captcha")),1),["kocaptcha","native"].includes(e.captcha.type)?(Object(wt.D)(),Object(wt.j)(wt.a,{key:0},[Object(wt.k)("img",{src:e.captcha.url,onClick:t[7]||(t[7]=(...t)=>e.setCaptcha&&e.setCaptcha(...t))},null,8,jd),Object(wt.k)("sub",null,Object(wt.O)(e.$t("registration.new_captcha")),1),Object(wt.W)(Object(wt.k)("input",{id:"captcha-answer","onUpdate:modelValue":t[8]||(t[8]=t=>e.captcha.solution=t),disabled:e.isPending,class:"form-control",type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},null,8,gd),[[wt.S,e.captcha.solution]])],64)):Object(wt.i)("",!0)])):Object(wt.i)("",!0),e.token?(Object(wt.D)(),Object(wt.j)("div",vd,[Object(wt.k)("label",yd,Object(wt.O)(e.$t("registration.token")),1),Object(wt.W)(Object(wt.k)("input",{id:"token","onUpdate:modelValue":t[9]||(t[9]=t=>e.token=t),disabled:"true",class:"form-control",type:"text"},null,512),[[wt.S,e.token]])])):Object(wt.i)("",!0),Object(wt.k)("div",wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default"},Object(wt.O)(e.$t("registration.register")),9,kd)])]),Object(wt.k)("div",{class:"terms-of-service",innerHTML:e.termsOfService},null,8,_d)]),e.serverValidationErrors.length?(Object(wt.D)(),Object(wt.j)("div",Sd,[Object(wt.k)("div",Cd,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.serverValidationErrors,e=>(Object(wt.D)(),Object(wt.j)("span",{key:e},Object(wt.O)(e),1))),128))])])):Object(wt.i)("",!0)],32)])])}]]);const zd={class:"settings panel panel-default"},Md={class:"panel-heading"},Ud={class:"panel-body"},Fd={class:"container"},Ed={key:0},Ld={key:0},Rd={key:1},Ad={key:1},Nd={key:0},Bd={class:"form-group text-center"},Vd={key:2},Hd={key:0,class:"password-reset-required error"},qd={class:"form-group"},Jd=["disabled","placeholder"],Wd={class:"form-group"},Yd=["disabled"],Gd={key:3,class:"alert error notice-dismissible"};var Kd=function(e){var t=e.instance,n={email:e.email},r=De()(n,(function(e,t,n){var r="".concat(n,"=").concat(encodeURIComponent(t));return"".concat(e,"&").concat(r)}),""),i="".concat(t).concat("/auth/password","?").concat(r);return window.fetch(i,{method:"POST"})};function Xd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Zd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xd(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Tn.c.add(In.rb);var Qd={data:function(){return{user:{email:""},isPending:!1,success:!1,throttled:!1,error:null}},computed:Zd(Zd({},Object(a.e)({signedIn:function(e){return!!e.users.currentUser},instance:function(e){return e.instance}})),{},{mailerEnabled:function(){return this.instance.mailerEnabled}}),created:function(){this.signedIn&&this.$router.push({name:"root"})},props:{passwordResetRequested:{default:!1,type:Boolean}},methods:{dismissError:function(){this.error=null},submit:function(){var e=this;this.isPending=!0;var t=this.user.email,n=this.instance.server;Kd({instance:n,email:t}).then((function(t){var n=t.status;e.isPending=!1,e.user.email="",204===n?(e.success=!0,e.error=null):429===n&&(e.throttled=!0,e.error=e.$t("password_reset.too_many_requests"))})).catch((function(){e.isPending=!1,e.user.email="",e.error=e.$t("general.generic_error")}))}}};n(588);var ep=Fn()(Qd,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("router-link"),a=Object(wt.J)("FAIcon");return Object(wt.D)(),Object(wt.j)("div",zd,[Object(wt.k)("div",Md,Object(wt.O)(e.$t("password_reset.password_reset")),1),Object(wt.k)("div",Ud,[Object(wt.k)("form",{class:"password-reset-form",onSubmit:t[2]||(t[2]=Object(wt.Y)((...t)=>e.submit&&e.submit(...t),["prevent"]))},[Object(wt.k)("div",Fd,[e.mailerEnabled?e.success||e.throttled?(Object(wt.D)(),Object(wt.j)("div",Ad,[e.success?(Object(wt.D)(),Object(wt.j)("p",Nd,Object(wt.O)(e.$t("password_reset.check_email")),1)):Object(wt.i)("",!0),Object(wt.k)("div",Bd,[Object(wt.m)(s,{to:{name:"root"}},{default:Object(wt.V)(()=>[Object(wt.l)(Object(wt.O)(e.$t("password_reset.return_home")),1)]),_:1})])])):(Object(wt.D)(),Object(wt.j)("div",Vd,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Hd,Object(wt.O)(e.$t("password_reset.password_reset_required")),1)):Object(wt.i)("",!0),Object(wt.k)("p",null,Object(wt.O)(e.$t("password_reset.instruction")),1),Object(wt.k)("div",qd,[Object(wt.W)(Object(wt.k)("input",{ref:"email","onUpdate:modelValue":t[0]||(t[0]=t=>e.user.email=t),disabled:e.isPending,placeholder:e.$t("password_reset.placeholder"),class:"form-control",type:"input"},null,8,Jd),[[wt.S,e.user.email]])]),Object(wt.k)("div",Wd,[Object(wt.k)("button",{disabled:e.isPending,type:"submit",class:"btn button-default btn-block"},Object(wt.O)(e.$t("settings.save")),9,Yd)])])):(Object(wt.D)(),Object(wt.j)("div",Ed,[e.passwordResetRequested?(Object(wt.D)(),Object(wt.j)("p",Ld,Object(wt.O)(e.$t("password_reset.password_reset_required_but_mailer_is_disabled")),1)):(Object(wt.D)(),Object(wt.j)("p",Rd,Object(wt.O)(e.$t("password_reset.password_reset_disabled")),1))])),e.error?(Object(wt.D)(),Object(wt.j)("p",Gd,[Object(wt.k)("span",null,Object(wt.O)(e.error),1),Object(wt.k)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=Object(wt.Y)(t=>e.dismissError(),["prevent"]))},[Object(wt.m)(a,{icon:"times"})])])):Object(wt.i)("",!0)])],32)])])}]]);const tp={class:"settings panel panel-default"},np={class:"panel-heading"},rp={class:"title"},ip={class:"panel-body"};const op={class:"follow-request-card-content-container"};var sp={props:["user"],components:{BasicUserCard:Qc.a},methods:{findFollowRequestNotificationId:function(){var e=this,t=Object(W.e)(this.$store).find((function(t){return t.from_profile.id===e.user.id&&"follow_request"===t.type}));return t&&t.id},approveUser:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user);var e=this.findFollowRequestNotificationId();this.$store.dispatch("markSingleNotificationAsSeen",{id:e}),this.$store.dispatch("updateNotification",{id:e,updater:function(e){e.type="follow"}})},denyUser:function(){var e=this,t=this.findFollowRequestNotificationId();this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:t}),e.$store.dispatch("removeFollowRequest",e.user)}))}}};n(589);var ap={components:{FollowRequestCard:Fn()(sp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.h)(s,{user:e.user},{default:Object(wt.V)(()=>[Object(wt.k)("div",op,[Object(wt.k)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(...t)=>e.approveUser&&e.approveUser(...t))},Object(wt.O)(e.$t("user_card.approve")),1),Object(wt.k)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(...t)=>e.denyUser&&e.denyUser(...t))},Object(wt.O)(e.$t("user_card.deny")),1)])]),_:1},8,["user"])}]])},computed:{requests:function(){return this.$store.state.api.followRequests}}};var cp=Fn()(ap,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowRequestCard");return Object(wt.D)(),Object(wt.j)("div",tp,[Object(wt.k)("div",np,[Object(wt.k)("div",rp,Object(wt.O)(e.$t("nav.friend_requests")),1)]),Object(wt.k)("div",ip,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.requests,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);var lp={props:["code"],mounted:function(){var e=this;if(this.code){var t=this.$store.state.oauth,n=t.clientId,r=t.clientSecret;ze.getToken({clientId:n,clientSecret:r,instance:this.$store.state.instance.server,code:this.code}).then((function(t){e.$store.commit("setToken",t.access_token),e.$store.dispatch("loginUser",t.access_token),e.$router.push({name:"friends"})}))}}};var up=Fn()(lp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("h1",null,"...")}]]);const dp={class:"panel panel-default"},pp={class:"panel-heading"},hp={class:"panel-body"};var bp={components:{FollowCard:tu},data:function(){return{users:[]}},mounted:function(){this.getWhoToFollow()},methods:{showWhoToFollow:function(e){var t=this;e.forEach((function(e,n){t.$store.state.api.backendInteractor.fetchUser({id:e.acct}).then((function(e){e.error||(t.$store.commit("addNewUsers",[e]),t.users.push(e))}))}))},getWhoToFollow:function(){var e=this,t=this.$store.state.users.currentUser.credentials;t&&j.c.suggestions({credentials:t}).then((function(t){e.showWhoToFollow(t)}))}}};var mp=Fn()(bp,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("FollowCard");return Object(wt.D)(),Object(wt.j)("div",dp,[Object(wt.k)("div",pp,Object(wt.O)(e.$t("who_to_follow.who_to_follow")),1),Object(wt.k)("div",hp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"]))),128))])])}]]);const fp={class:"column-inner"};const Op={class:"panel panel-default"},jp={class:"panel-body"},gp=["innerHTML"];var vp={computed:{content:function(){return this.$store.state.instance.tos}}};n(590);var yp=Fn()(vp,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",null,[Object(wt.k)("div",Op,[Object(wt.k)("div",jp,[Object(wt.k)("div",{class:"tos-content",innerHTML:e.content},null,8,gp)])])])}]]);const wp={class:"staff-panel"},kp={class:"panel panel-default base01-background"},_p={class:"panel-heading timeline-heading base02-background"},Sp={class:"title"},Cp={class:"panel-body"};var Pp=n(334),xp=n.n(Pp);function Dp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dp(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ip={created:function(){var e=this;this.$store.state.instance.staffAccounts.forEach((function(t){return e.$store.dispatch("fetchUserIfMissing",t)}))},components:{BasicUserCard:Qc.a},computed:Tp(Tp({groupedStaffAccounts:function(){var e=he()(this.staffAccounts,this.findUser).filter((function(e){return e})),t=xp()(e,"role");return[{role:"admin",users:t.admin},{role:"moderator",users:t.moderator}].filter((function(e){return e.users}))}},Object(a.c)(["findUser"])),Object(a.e)({staffAccounts:function(e){return e.instance.staffAccounts}}))};n(591);var $p=Fn()(Ip,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("basic-user-card");return Object(wt.D)(),Object(wt.j)("div",wp,[Object(wt.k)("div",kp,[Object(wt.k)("div",_p,[Object(wt.k)("div",Sp,Object(wt.O)(e.$t("about.staff")),1)]),Object(wt.k)("div",Cp,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.groupedStaffAccounts,t=>(Object(wt.D)(),Object(wt.j)("div",{key:t.role,class:"staff-group"},[Object(wt.k)("h4",null,Object(wt.O)(e.$t("general.role."+t.role)),1),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(t.users,e=>(Object(wt.D)(),Object(wt.h)(s,{key:e.screen_name,user:e},null,8,["user"]))),128))]))),128))])])])}]]);const zp={key:0,class:"mrf-transparency-panel"},Mp={class:"panel panel-default base01-background"},Up={class:"panel-heading timeline-heading base02-background"},Fp={class:"title"},Ep={class:"panel-body"},Lp={class:"mrf-section"},Rp=["textContent"],Ap={key:0},Np={key:1},Bp={key:0},Vp={key:1},Hp={key:2},qp={key:0},Jp={key:1},Wp={key:3},Yp={key:0},Gp={key:1},Kp={key:4},Xp={key:0},Zp={key:1},Qp={key:5},eh={key:0},th={key:1},nh={key:6},rh={key:0},ih={key:1},oh={key:7},sh={key:8},ah=["textContent"],ch={key:9},lh=["textContent"],uh={key:10};function dh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ph(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var hh=function(e,t,n){return e.map((function(e){return t[n]&&t[n][e]&&t[n][e].reason?{instance:e,reason:t[n][e].reason}:{instance:e,reason:""}}))},bh={computed:ph(ph({},Object(a.e)({federationPolicy:function(e){return qt()(e,"instance.federationPolicy")},mrfPolicies:function(e){return qt()(e,"instance.federationPolicy.mrf_policies",[])},quarantineInstances:function(e){return hh(qt()(e,"instance.federationPolicy.quarantined_instances",[]),qt()(e,"instance.federationPolicy.quarantined_instances_info",[]),"quarantined_instances")},acceptInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.accept",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"accept")},rejectInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.reject",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"reject")},ftlRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.federated_timeline_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"federated_timeline_removal")},mediaNsfwInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_nsfw",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_nsfw")},mediaRemovalInstances:function(e){return hh(qt()(e,"instance.federationPolicy.mrf_simple.media_removal",[]),qt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_removal")},keywordsFtlRemoval:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.federated_timeline_removal",[])},keywordsReject:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.reject",[])},keywordsReplace:function(e){return qt()(e,"instance.federationPolicy.mrf_keyword.replace",[])}})),{},{hasInstanceSpecificPolicies:function(){return this.quarantineInstances.length||this.acceptInstances.length||this.rejectInstances.length||this.ftlRemovalInstances.length||this.mediaNsfwInstances.length||this.mediaRemovalInstances.length},hasKeywordPolicies:function(){return this.keywordsFtlRemoval.length||this.keywordsReject.length||this.keywordsReplace.length}})};n(592);var mh={components:{InstanceSpecificPanel:Yr,FeaturesPanel:ai,TermsOfServicePanel:yp,StaffPanel:$p,MRFTransparencyPanel:Fn()(bh,[["render",function(e,t,n,r,i,o){return e.federationPolicy?(Object(wt.D)(),Object(wt.j)("div",zp,[Object(wt.k)("div",Mp,[Object(wt.k)("div",Up,[Object(wt.k)("div",Fp,Object(wt.O)(e.$t("about.mrf.federation")),1)]),Object(wt.k)("div",Ep,[Object(wt.k)("div",Lp,[Object(wt.k)("h2",null,Object(wt.O)(e.$t("about.mrf.mrf_policies")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.mrf_policies_desc")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mrfPolicies,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,Rp))),128))]),e.hasInstanceSpecificPolicies?(Object(wt.D)(),Object(wt.j)("h2",Ap,Object(wt.O)(e.$t("about.mrf.simple.simple_policies")),1)):Object(wt.i)("",!0),e.acceptInstances.length?(Object(wt.D)(),Object(wt.j)("div",Np,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.accept")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.accept_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.acceptInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_accept"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Bp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Vp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.rejectInstances.length?(Object(wt.D)(),Object(wt.j)("div",Hp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.reject")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.reject_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.rejectInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_reject"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",qp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Jp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.quarantineInstances.length?(Object(wt.D)(),Object(wt.j)("div",Wp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.quarantine_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.quarantineInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_quarantine"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Yp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Gp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.ftlRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",Kp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.ftl_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.ftlRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_ftl_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",Xp,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",Zp,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaNsfwInstances.length?(Object(wt.D)(),Object(wt.j)("div",Qp,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_nsfw_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaNsfwInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_nsfw"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",eh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",th,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.mediaRemovalInstances.length?(Object(wt.D)(),Object(wt.j)("div",nh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal")),1),Object(wt.k)("p",null,Object(wt.O)(e.$t("about.mrf.simple.media_removal_desc")),1),Object(wt.k)("table",null,[Object(wt.k)("tr",null,[Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.instance")),1),Object(wt.k)("th",null,Object(wt.O)(e.$t("about.mrf.simple.reason")),1)]),(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.mediaRemovalInstances,t=>(Object(wt.D)(),Object(wt.j)("tr",{key:t.instance+"_media_removal"},[Object(wt.k)("td",null,Object(wt.O)(t.instance),1),""===t.reason?(Object(wt.D)(),Object(wt.j)("td",rh,Object(wt.O)(e.$t("about.mrf.simple.not_applicable")),1)):(Object(wt.D)(),Object(wt.j)("td",ih,Object(wt.O)(t.reason),1))]))),128))])])):Object(wt.i)("",!0),e.hasKeywordPolicies?(Object(wt.D)(),Object(wt.j)("h2",oh,Object(wt.O)(e.$t("about.mrf.keyword.keyword_policies")),1)):Object(wt.i)("",!0),e.keywordsFtlRemoval.length?(Object(wt.D)(),Object(wt.j)("div",sh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.ftl_removal")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsFtlRemoval,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,ah))),128))])])):Object(wt.i)("",!0),e.keywordsReject.length?(Object(wt.D)(),Object(wt.j)("div",ch,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.reject")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReject,e=>(Object(wt.D)(),Object(wt.j)("li",{key:e,textContent:Object(wt.O)(e)},null,8,lh))),128))])])):Object(wt.i)("",!0),e.keywordsReplace.length?(Object(wt.D)(),Object(wt.j)("div",uh,[Object(wt.k)("h4",null,Object(wt.O)(e.$t("about.mrf.keyword.replace")),1),Object(wt.k)("ul",null,[(Object(wt.D)(!0),Object(wt.j)(wt.a,null,Object(wt.H)(e.keywordsReplace,t=>(Object(wt.D)(),Object(wt.j)("li",{key:t},Object(wt.O)(t.pattern)+" "+Object(wt.O)(e.$t("about.mrf.keyword.is_replaced_by"))+" "+Object(wt.O)(t.replacement),1))),128))])])):Object(wt.i)("",!0)])])])])):Object(wt.i)("",!0)}]])},computed:{showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent}}};var fh=Fn()(mh,[["render",function(e,t,n,r,i,o){const s=Object(wt.J)("instance-specific-panel"),a=Object(wt.J)("staff-panel"),c=Object(wt.J)("terms-of-service-panel"),l=Object(wt.J)("MRFTransparencyPanel"),u=Object(wt.J)("features-panel");return Object(wt.D)(),Object(wt.j)("div",fp,[e.showInstanceSpecificPanel?(Object(wt.D)(),Object(wt.h)(s,{key:0})):Object(wt.i)("",!0),Object(wt.m)(a),Object(wt.m)(c),Object(wt.m)(l),e.showFeaturesPanel?(Object(wt.D)(),Object(wt.h)(u,{key:1})):Object(wt.i)("",!0)])}]]);const Oh={class:"panel panel-default"},jh={class:"panel-heading"},gh={class:"panel-body"},vh={key:0};var yh={data:function(){return{error:!1}},mounted:function(){this.redirect()},methods:{redirect:function(){var e=this,t=this.$route.params.username+"@"+this.$route.params.hostname;this.$store.state.api.backendInteractor.fetchUser({id:t}).then((function(t){if(t.error)e.error=!0;else{e.$store.commit("addNewUsers",[t]);var n=t.id;e.$router.replace({name:"external-user-profile",params:{id:n}})}})).catch((function(){e.error=!0}))}}};var wh,kh,_h=Fn()(yh,[["render",function(e,t,n,r,i,o){return Object(wt.D)(),Object(wt.j)("div",Oh,[Object(wt.k)("div",jh,Object(wt.O)(e.$t("remote_user_resolver.remote_user_resolver")),1),Object(wt.k)("div",gh,[Object(wt.k)("p",null,Object(wt.O)(e.$t("remote_user_resolver.searching_for"))+" @"+Object(wt.O)(e.$route.params.username)+"@"+Object(wt.O)(e.$route.params.hostname),1),e.error?(Object(wt.D)(),Object(wt.j)("p",vh,Object(wt.O)(e.$t("remote_user_resolver.error")),1)):Object(wt.i)("",!0)])])}]]),Sh=function(e){var t=function(t,n,r){e.state.users.currentUser?r():r(e.state.instance.redirectRootNoLogin||"/main/all")},n=[{name:"root",path:"/",redirect:function(t){return(e.state.users.currentUser?e.state.instance.redirectRootLogin:e.state.instance.redirectRootNoLogin)||"/main/all"}},{name:"public-external-timeline",path:"/main/all",component:Za},{name:"public-timeline",path:"/main/public",component:Ka},{name:"friends",path:"/main/friends",component:ec,beforeEnter:t},{name:"tag-timeline",path:"/tag/:tag",component:nc},{name:"bookmarks",path:"/bookmarks",component:ic},{name:"conversation",path:"/notice/:id",component:sc,meta:{dontScroll:!0}},{name:"remote-user-profile-acct",path:"/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)",component:_h,beforeEnter:t},{name:"remote-user-profile",path:"/remote-users/:hostname/:username",component:_h,beforeEnter:t},{name:"external-user-profile",path:"/users/:id",component:du},{name:"interactions",path:"/users/:username/interactions",component:Oc,beforeEnter:t},{name:"dms",path:"/users/:username/dms",component:gc,beforeEnter:t},{name:"registration",path:"/registration",component:$d},{name:"password-reset",path:"/password-reset",component:ep,props:!0},{name:"registration-token",path:"/registration/:token",component:$d},{name:"friend-requests",path:"/friend-requests",component:cp,beforeEnter:t},{name:"notifications",path:"/:username/notifications",component:fs.default,props:function(){return{disableTeleport:!0}},beforeEnter:t},{name:"login",path:"/login",component:fr},{name:"shout-panel",path:"/shout-panel",component:Fi,props:function(){return{floating:!1}}},{name:"oauth-callback",path:"/oauth-callback",component:up,props:function(e){return{code:e.query.code}}},{name:"search",path:"/search",component:Eu,props:function(e){return{query:e.query.query}}},{name:"who-to-follow",path:"/who-to-follow",component:mp,beforeEnter:t},{name:"about",path:"/about",component:fh},{name:"user-profile",path:"/:_(users)?/:name",component:du}];return e.state.instance.pleromaChatMessagesAvailable&&(n=n.concat([{name:"chat",path:"/users/:username/chats/:recipient_id",component:El,meta:{dontScroll:!1},beforeEnter:t},{name:"chats",path:"/users/:username/chats",component:al,meta:{dontScroll:!1},beforeEnter:t}])),n},Ch=n(170),Ph=new Set([]),xh=function(e){var t=window.innerWidth-document.documentElement.clientWidth;Ch.disableBodyScroll(e,{reserveScrollBarGap:!0}),Ph.add(e),setTimeout((function(){if(Ph.size<=1){if(void 0===wh){var e=document.getElementById("nav");wh=window.getComputedStyle(e).getPropertyValue("padding-right"),e.style.paddingRight=wh?"calc(".concat(wh," + ").concat(t,"px)"):"".concat(t,"px")}if(void 0===kh){var n=document.getElementById("app_bg_wrapper");kh=window.getComputedStyle(n).getPropertyValue("right"),n.style.right=kh?"calc(".concat(kh," + ").concat(t,"px)"):"".concat(t,"px")}document.body.classList.add("scroll-locked")}}))},Dh=function(e){Ph.delete(e),setTimeout((function(){0===Ph.size&&(void 0!==wh&&(document.getElementById("nav").style.paddingRight=wh,wh=void 0),void 0!==kh&&(document.getElementById("app_bg_wrapper").style.right=kh,kh=void 0),document.body.classList.remove("scroll-locked"))})),Ch.enableBodyScroll(e)},Th={mounted:function(e,t){t.value&&xh(e)},updated:function(e,t){t.oldValue!==t.value&&(t.value?xh(e):Dh(e))},unmounted:function(e){Dh(e)}},Ih=function(e){e.directive("body-scroll-lock",Th)},$h=n(101);function zh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Mh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zh(Object(n),!0).forEach((function(t){h()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Uh,Fh,Eh,Lh,Rh,Ah,Nh,Bh,Vh,Hh,qh,Jh,Wh,Yh=null,Gh=function(e){var t=atob(e),n=Uint8Array.from(d()(t).map((function(e){return e.charCodeAt(0)})));return(new TextDecoder).decode(n)},Kh=(Uh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=document.getElementById("initial-results")?(Yh||(Yh=JSON.parse(document.getElementById("initial-results").textContent)),Yh):null)&&n[t]){e.next=3;break}return e.abrupt("return",window.fetch(t));case 3:return r=Gh(n[t]),i=JSON.parse(r),e.abrupt("return",{ok:!0,json:function(){return i},text:function(){return i}});case 6:case"end":return e.stop()}}),e)}))),function(e){return Uh.apply(this,arguments)}),Xh=(Fh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/api/v1/instance");case 4:if(!(r=e.sent).ok){e.next=16;break}return e.next=8,r.json();case 8:i=e.sent,o=i.max_toot_chars,a=i.pleroma.vapid_public_key,n.dispatch("setInstanceOption",{name:"textlimit",value:o}),n.dispatch("setInstanceOption",{name:"accountApprovalRequired",value:i.approval_required}),a&&n.dispatch("setInstanceOption",{name:"vapidPublicKey",value:a}),e.next=17;break;case 16:throw r;case 17:e.next=23;break;case 19:e.prev=19,e.t0=e.catch(1),console.error("Could not load instance config, potentially fatal"),console.error(e.t0);case 23:case"end":return e.stop()}}),e,null,[[1,19]])}))),function(e){return Fh.apply(this,arguments)}),Zh=(Eh=i()(s.a.mark((function e(t){var n,r;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.store,e.prev=1,e.next=4,window.fetch("/api/pleroma/frontend_configurations");case 4:if(!(n=e.sent).ok){e.next=12;break}return e.next=8,n.json();case 8:return r=e.sent,e.abrupt("return",r.pleroma_fe);case 12:throw n;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("Could not load backend-provided frontend config, potentially fatal"),console.error(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Eh.apply(this,arguments)}),Qh=(Lh=i()(s.a.mark((function e(){var t;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,window.fetch("/static/config.json");case 3:if(!(t=e.sent).ok){e.next=8;break}return e.abrupt("return",t.json());case 8:throw t;case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(0),console.warn("Failed to load static/config.json, continuing without it."),console.warn(e.t0),e.abrupt("return",{});case 16:case"end":return e.stop()}}),e,null,[[0,11]])}))),function(){return Lh.apply(this,arguments)}),eb=(Rh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.apiConfig,r=t.staticConfig,i=t.store,o=window.___pleromafe_dev_overrides||{},a=window.___pleromafe_mode.NODE_ENV,c={},o.staticConfigPreference&&"development"===a?(console.warn("OVERRIDING API CONFIG WITH STATIC CONFIG"),c=Object.assign({},n,r)):c=Object.assign({},r,n),(l=function(e){i.dispatch("setInstanceOption",{name:e,value:c[e]})})("nsfwCensorImage"),l("background"),l("hidePostStats"),l("hideBotIndication"),l("hideUserStats"),l("hideFilteredStatuses"),l("logo"),i.dispatch("setInstanceOption",{name:"logoMask",value:void 0===c.logoMask||c.logoMask}),i.dispatch("setInstanceOption",{name:"logoMargin",value:void 0===c.logoMargin?0:c.logoMargin}),l("logoLeft"),i.commit("authFlow/setInitialStrategy",c.loginMethod),l("redirectRootNoLogin"),l("redirectRootLogin"),l("showInstanceSpecificPanel"),l("minimalScopesMode"),l("hideMutedPosts"),l("collapseMessageWithSubject"),l("scopeCopy"),l("subjectLineBehavior"),l("postContentType"),l("alwaysShowSubjectInput"),l("showFeaturesPanel"),l("hideSitename"),l("sidebarRight"),e.abrupt("return",i.dispatch("setTheme",c.theme));case 31:case"end":return e.stop()}}),e)}))),function(e){return Rh.apply(this,arguments)}),tb=(Ah=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/terms-of-service.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"tos",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load TOS"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Ah.apply(this,arguments)}),nb=(Nh=i()(s.a.mark((function e(t){var n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/instance/panel.html");case 4:if(!(r=e.sent).ok){e.next=12;break}return e.next=8,r.text();case 8:i=e.sent,n.dispatch("setInstanceOption",{name:"instanceSpecificPanelContent",value:i}),e.next=13;break;case 12:throw r;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load instance panel"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])}))),function(e){return Nh.apply(this,arguments)}),rb=(Bh=i()(s.a.mark((function e(t){var n,r,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/stickers.json");case 4:if(!(r=e.sent).ok){e.next=15;break}return e.next=8,r.json();case 8:return o=e.sent,e.next=11,Promise.all(Object.entries(o).map(function(){var e=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=m()(t,2),r=n[0],i=n[1],e.next=3,window.fetch(i+"pack.json");case 3:if(o=e.sent,a={},!o.ok){e.next=9;break}return e.next=8,o.json();case 8:a=e.sent;case 9:return e.abrupt("return",{pack:r,path:i,meta:a});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:a=e.sent.sort((function(e,t){return e.meta.title.localeCompare(t.meta.title)})),n.dispatch("setInstanceOption",{name:"stickers",value:a}),e.next=16;break;case 15:throw r;case 16:e.next=22;break;case 18:e.prev=18,e.t0=e.catch(1),console.warn("Can't load stickers"),console.warn(e.t0);case 22:case"end":return e.stop()}}),e,null,[[1,18]])}))),function(e){return Bh.apply(this,arguments)}),ib=(Vh=i()(s.a.mark((function e(t){var n,r,i,o,a;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=n.state,i=n.commit,o=r.oauth,a=r.instance,e.abrupt("return",Ie(Mh(Mh({},o),{},{instance:a.server,commit:i})).then((function(e){return $e(Mh(Mh({},e),{},{instance:a.server}))})).then((function(e){i("setAppToken",e.access_token),i("setBackendInteractor",Se(n.getters.getToken()))})));case 4:case"end":return e.stop()}}),e)}))),function(e){return Vh.apply(this,arguments)}),ob=function(e){var t=e.store,n=e.accounts.map((function(e){return e.split("/").pop()}));t.dispatch("setInstanceOption",{name:"staffAccounts",value:n})},sb=(Hh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p,h,b,m;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Kh("/nodeinfo/2.0.json");case 4:if(!(r=e.sent).ok){e.next=49;break}return e.next=8,r.json();case 8:i=e.sent,o=i.metadata,a=o.features,n.dispatch("setInstanceOption",{name:"name",value:o.nodeName}),n.dispatch("setInstanceOption",{name:"registrationOpen",value:i.openRegistrations}),n.dispatch("setInstanceOption",{name:"mediaProxyAvailable",value:a.includes("media_proxy")}),n.dispatch("setInstanceOption",{name:"safeDM",value:a.includes("safe_dm_mentions")}),n.dispatch("setInstanceOption",{name:"shoutAvailable",value:a.includes("chat")}),n.dispatch("setInstanceOption",{name:"pleromaChatMessagesAvailable",value:a.includes("pleroma_chat_messages")}),n.dispatch("setInstanceOption",{name:"gopherAvailable",value:a.includes("gopher")}),n.dispatch("setInstanceOption",{name:"pollsAvailable",value:a.includes("polls")}),n.dispatch("setInstanceOption",{name:"pollLimits",value:o.pollLimits}),n.dispatch("setInstanceOption",{name:"mailerEnabled",value:o.mailerEnabled}),c=o.uploadLimits,n.dispatch("setInstanceOption",{name:"uploadlimit",value:parseInt(c.general)}),n.dispatch("setInstanceOption",{name:"avatarlimit",value:parseInt(c.avatar)}),n.dispatch("setInstanceOption",{name:"backgroundlimit",value:parseInt(c.background)}),n.dispatch("setInstanceOption",{name:"bannerlimit",value:parseInt(c.banner)}),n.dispatch("setInstanceOption",{name:"fieldsLimits",value:o.fieldsLimits}),n.dispatch("setInstanceOption",{name:"restrictedNicknames",value:o.restrictedNicknames}),n.dispatch("setInstanceOption",{name:"postFormats",value:o.postFormats}),l=o.suggestions,n.dispatch("setInstanceOption",{name:"suggestionsEnabled",value:l.enabled}),n.dispatch("setInstanceOption",{name:"suggestionsWeb",value:l.web}),u=i.software,n.dispatch("setInstanceOption",{name:"backendVersion",value:u.version}),n.dispatch("setInstanceOption",{name:"pleromaBackend",value:"pleroma"===u.name}),d=o.private,n.dispatch("setInstanceOption",{name:"private",value:d}),p=window.___pleromafe_commit_hash,n.dispatch("setInstanceOption",{name:"frontendVersion",value:p}),h=o.federation,n.dispatch("setInstanceOption",{name:"tagPolicyAvailable",value:void 0!==h.mrf_policies&&o.federation.mrf_policies.includes("TagPolicy")}),n.dispatch("setInstanceOption",{name:"federationPolicy",value:h}),n.dispatch("setInstanceOption",{name:"federating",value:void 0===h.enabled||h.enabled}),b=o.accountActivationRequired,n.dispatch("setInstanceOption",{name:"accountActivationRequired",value:b}),m=o.staffAccounts,ob({store:n,accounts:m}),e.next=50;break;case 49:throw r;case 50:e.next=56;break;case 52:e.prev=52,e.t0=e.catch(1),console.warn("Could not load nodeinfo"),console.warn(e.t0);case 56:case"end":return e.stop()}}),e,null,[[1,52]])}))),function(e){return Hh.apply(this,arguments)}),ab=(qh=i()(s.a.mark((function e(t){var n,r,i,o;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.next=3,Promise.all([Zh({store:n}),Qh()]);case 3:return r=e.sent,i=r[0],o=r[1],e.next=8,eb({store:n,apiConfig:i,staticConfig:o}).then(ib({store:n}));case 8:case"end":return e.stop()}}),e)}))),function(e){return qh.apply(this,arguments)}),cb=(Jh=i()(s.a.mark((function e(t){var n;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.abrupt("return",new Promise(function(){var e=i()(s.a.mark((function e(t,r){return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.getters.getUserToken()){e.next=9;break}return e.prev=1,e.next=4,n.dispatch("loginUser",n.getters.getUserToken());case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error(e.t0);case 9:t();case 10:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),function(e){return Jh.apply(this,arguments)}),lb=(Wh=i()(s.a.mark((function e(t){var n,r,i,o,a,c,l,u,d,p;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,r=t.i18n,n.dispatch("setLayoutWidth",Ce()),n.dispatch("setLayoutHeight",Pe()),$h.a.initFaviconService(),i=window.___pleromafe_dev_overrides||{},o=void 0!==i.target?i.target:window.location.origin,n.dispatch("setInstanceOption",{name:"server",value:o}),e.next=9,ab({store:n});case 9:return a=n.state.config,c=a.customTheme,l=a.customThemeSource,u=n.state.instance.theme,l||c?l&&l.themeEngineVersion===O.a?Object(f.b)(l):Object(f.b)(c):u||console.error("Failed to load any theme!"),e.next=15,Promise.all([cb({store:n}),nb({store:n}),sb({store:n}),Xh({store:n})]);case 15:return n.dispatch("fetchMutes"),tb({store:n}),rb({store:n}),d=Object(nn.a)({history:Object(nn.b)(),routes:Sh(n),scrollBehavior:function(e,t,n){return!e.matched.some((function(e){return e.meta.dontScroll}))&&(n||{left:0,top:0})}}),(p=Object(wt.g)(ra)).use(d),p.use(n),p.use(r),p.use(on.a),p.use(Ih),p.component("FAIcon",sn.a),p.component("FALayers",sn.b),p.mount("#app"),e.abrupt("return",p);case 29:case"end":return e.stop()}}),e)}))),function(e){return Wh.apply(this,arguments)}),ub=(window.navigator.language||"en").split("-")[0],db=Object(Rt.a)({locale:"en",fallbackLocale:"en",messages:tn.a.default});tn.a.setLanguage(db,ub);var pb={paths:["config","users.lastLoginName","oauth"]};i()(s.a.mark((function e(){var t,n,r,i;return s.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,n=[en],e.prev=2,e.next=5,Qt(pb);case 5:r=e.sent,n.push(r),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),t=!0;case 13:i=Object(a.a)({modules:{i18n:{getters:{i18n:function(){return db.global}}},interface:l,instance:w,users:Ge,statuses:oe,api:rt,config:g.a,serverSideConfig:it.a,shout:ot,oauth:st,authFlow:ct,mediaViewer:dt,oauthTokens:pt,reports:mt,polls:ft,postStatus:Ot,chats:Lt},plugins:n,strict:!1}),t&&i.dispatch("pushGlobalNotice",{messageKey:"errors.storage_unavailable",level:"error"}),lb({store:i,i18n:db});case 16:case"end":return e.stop()}}),e,null,[[2,9]])})))(),window.___pleromafe_mode=Object({NODE_ENV:"production"}),window.___pleromafe_commit_hash="36309ebe\n",window.___pleromafe_dev_overrides=void 0}]);
+//# sourceMappingURL=app.ac6a5ffb0464738cd624.js.map
\ No newline at end of file
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue?05a8","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue?a425","webpack:///./src/components/popover/popover.vue","webpack:///./src/services/html_converter/utility.service.js","webpack:///./src/services/html_converter/html_line_converter.service.js","webpack:///./src/components/hashtag_link/hashtag_link.vue","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/hashtag_link/hashtag_link.js","webpack:///./src/components/hashtag_link/hashtag_link.vue?ad7e","webpack:///./src/components/rich_content/rich_content.jsx","webpack:///./src/services/html_converter/html_tree_converter.service.js","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue?f429","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue?c274","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue?68d2","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue?0fda","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue?6374","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue?8218","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue?d286","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?89e7","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue?0825","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue?bfc4","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue?fef6","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue?870d","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue?8f79","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/locale/locale.service.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue?3ce0","webpack:///./src/components/status_body/status_body.vue","webpack:///./src/components/mention_link/mention_link.js","webpack:///./src/components/mfm_content/mfm_content.jsx","webpack:///./src/components/status_body/status_body.js","webpack:///./src/components/status_body/status_body.vue?c2f1","webpack:///./src/components/status_content/status_content.js","webpack:///./src/components/status_content/status_content.vue?12ff","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue?a7d9","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?0c6b","webpack:///./src/components/select/select.vue","webpack:///./src/components/select/select.js","webpack:///./src/components/select/select.vue?5aac","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue?bd50","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue?d084","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue?6c37","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue?da99","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue?0cf8","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?882d","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?42b1","webpack:///./src/i18n/messages.js","webpack:///./src/components/tab_switcher/tab_switcher.jsx","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue?6df6","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue?712d","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue?9c64","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue?6d5a","webpack:///./src/components/mention_link/mention_link.vue","webpack:///./src/components/mention_link/mention_link.vue?b783","webpack:///./src/components/mentions_line/mentions_line.vue","webpack:///./src/components/mentions_line/mentions_line.js","webpack:///./src/components/mentions_line/mentions_line.vue?d40c","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?97a4","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/export_import/export_import.js","webpack:///./src/components/flash/flash.vue","webpack:///./src/services/ruffle_service/ruffle_service.js","webpack:///./src/components/flash/flash.js","webpack:///./src/components/flash/flash.vue?1944","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue?49fe","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue?354d","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue?b794","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue?c74d","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue?046a","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue?4062","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue?a29e","webpack:///./src/modules/serverSideConfig.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue?c405","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue?23b7","webpack:///./src/assets/nsfw.png","webpack:///./src/i18n/en.json","webpack:///./src/components/login_form/login_form.vue?111a","webpack:///./src/components/media_upload/media_upload.vue?84d2","webpack:///./src/components/scope_selector/scope_selector.vue?757e","webpack:///./src/components/checkbox/checkbox.vue?0dde","webpack:///./src/components/emoji_picker/emoji_picker.scss?9675","webpack:///./src/components/emoji_input/emoji_input.vue?4146","webpack:///./src/components/select/select.vue?b0ab","webpack:///./src/components/poll/poll_form.vue?0f5d","webpack:///./src/components/still-image/still-image.vue?2909","webpack:///./src/components/flash/flash.vue?c9e5","webpack:///./src/components/attachment/attachment.scss?c40a","webpack:///./src/components/gallery/gallery.vue?3caa","webpack:///./src/components/user_avatar/user_avatar.vue?dd13","webpack:///./src/components/mention_link/mention_link.scss?a876","webpack:///./src/components/mentions_line/mentions_line.scss?57df","webpack:///./src/components/hashtag_link/hashtag_link.scss?6cb8","webpack:///./src/components/poll/poll.vue?cc4e","webpack:///./src/components/status_body/status_body.scss?962f","webpack:///./src/components/link-preview/link-preview.vue?cabf","webpack:///./src/components/status_content/status_content.vue?bc1c","webpack:///./src/components/post_status_form/post_status_form.vue?2849","webpack:///./src/components/remote_follow/remote_follow.vue?18f9","webpack:///./src/components/dialog_modal/dialog_modal.vue?6ce2","webpack:///./src/components/popover/popover.vue?c6ad","webpack:///./src/components/moderation_tools/moderation_tools.vue?3620","webpack:///./src/components/account_actions/account_actions.vue?8a6d","webpack:///./src/components/user_card/user_card.scss?64aa","webpack:///./src/components/user_panel/user_panel.vue?29ef","webpack:///./src/components/nav_panel/nav_panel.vue?d57b","webpack:///./src/components/features_panel/features_panel.vue?194b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?089d","webpack:///./src/components/shout_panel/shout_panel.vue?de26","webpack:///./src/components/modal/modal.vue?1080","webpack:///./src/components/panel_loading/panel_loading.vue?f355","webpack:///./src/components/async_component_error/async_component_error.vue?a2f0","webpack:///./src/components/settings_modal/settings_modal.scss?db40","webpack:///./src/components/media_modal/media_modal.vue?b6f2","webpack:///./src/components/side_drawer/side_drawer.vue?5b8c","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?002e","webpack:///./src/components/reply_button/reply_button.vue?0c63","webpack:///./src/components/favorite_button/favorite_button.vue?a96a","webpack:///./src/components/react_button/react_button.vue?2715","webpack:///./src/components/retweet_button/retweet_button.vue?e9ee","webpack:///./src/components/extra_buttons/extra_buttons.vue?23e8","webpack:///./src/components/avatar_list/avatar_list.vue?d80a","webpack:///./src/components/status_popover/status_popover.vue?0634","webpack:///./src/components/user_list_popover/user_list_popover.vue?4785","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?492e","webpack:///./src/components/status/status.scss?b11c","webpack:///./src/components/notification/notification.scss?b266","webpack:///./src/components/notifications/notification_filters.vue?52ff","webpack:///./src/components/notifications/notifications.scss?5aa9","webpack:///./src/components/mobile_nav/mobile_nav.vue?3d7f","webpack:///./src/components/search_bar/search_bar.vue?5a40","webpack:///./src/components/desktop_nav/desktop_nav.scss?62ee","webpack:///./src/components/list/list.vue?dfc3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?c333","webpack:///./src/components/post_status_modal/post_status_modal.vue?17bc","webpack:///./src/components/global_notice_list/global_notice_list.vue?8dbf","webpack:///./src/App.scss?eeaf","webpack:///./src/components/thread_tree/thread_tree.vue?acd6","webpack:///./src/components/conversation/conversation.vue?7fec","webpack:///./src/components/timeline_menu/timeline_menu.vue?733c","webpack:///./src/components/timeline/timeline_quick_settings.vue?3988","webpack:///./src/components/timeline/timeline.scss?7ad3","webpack:///./src/components/chat_title/chat_title.vue?c884","webpack:///./src/components/chat_list_item/chat_list_item.vue?f11c","webpack:///./src/components/basic_user_card/basic_user_card.vue?b898","webpack:///./src/components/chat_new/chat_new.vue?536c","webpack:///./src/components/chat_list/chat_list.vue?336c","webpack:///./src/components/chat_message/chat_message.vue?2759","webpack:///./src/components/chat/chat.vue?8ca4","webpack:///./src/components/follow_card/follow_card.vue?180e","webpack:///./src/components/user_profile/user_profile.vue?fc91","webpack:///./src/components/search/search.vue?2a52","webpack:///./src/components/registration/registration.vue?d0e0","webpack:///./src/components/password_reset/password_reset.vue?9146","webpack:///./src/components/follow_request_card/follow_request_card.vue?b6a6","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?5d2e","webpack:///./src/components/staff_panel/staff_panel.vue?831d","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?0dbc","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/shout.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/App.vue","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue?f908","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue?2543","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue?64d5","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue?ea63","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?c7d7","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue?7f8f","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?cc9d","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue?bedc","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?eaa9","webpack:///./src/components/shout_panel/shout_panel.vue","webpack:///./src/components/shout_panel/shout_panel.js","webpack:///./src/components/shout_panel/shout_panel.vue?cee7","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?1e91","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue?239d","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?ebf7","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/settings_modal/settings_modal.vue?3d91","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/pinch_zoom/pinch_zoom.js","webpack:///./src/components/pinch_zoom/pinch_zoom.vue?54a1","webpack:///./src/components/pinch_zoom/pinch_zoom.vue","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/swipe_click/swipe_click.js","webpack:///./src/components/swipe_click/swipe_click.vue?9d87","webpack:///./src/components/swipe_click/swipe_click.vue","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue?5a55","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue?ab18","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7726","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue?8378","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue?c288","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue?595f","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?5d89","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue?c824","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue?fb63","webpack:///./src/App.js","webpack:///./src/App.vue?7993","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/thread_tree/thread_tree.vue","webpack:///./src/components/thread_tree/thread_tree.js","webpack:///./src/components/thread_tree/thread_tree.vue?b0db","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue?3296","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue?de29","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue?0f6c","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue?9ad1","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue?842c","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?cee7","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue?56f4","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue?8a33","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?dc49","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue?a77d","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue?3506","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue?b9c3","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue?67d1","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue?af05","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue?9c2e","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue?fbc3","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?36ca","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue?5926","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue?b039","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue?2d42","webpack:///./src/hocs/with_load_more/with_load_more.jsx","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue?21f3","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue?2a31","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue?a608","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue?f2e7","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?eec7","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_requests/follow_requests.vue?18ee","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue?7dba","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue?42e6","webpack:///./src/components/about/about.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?1a66","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue?fa50","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?2867","webpack:///./src/components/about/about.js","webpack:///./src/components/about/about.vue?596d","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?ec00","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/boot/routes.js","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","_original","screen_name","acct","statusnet_profile_url","url","emoji","emojis","escape","display_name","name_html","name_unescaped","description","note","description_html","fields","fields_html","map","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","parseStatus","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","raw_html","content","text","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","akkoma","mediaType","mfm_content","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","options","title_html","title","pinned","status","is_post_verb","uri","match","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","seen","is_seen","isStatusNotification","action","from_profile","emoji_url","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","opts","flakeId","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","reduce","errs","k","acc","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","headers","encodeURIComponent","authHeaders","json","ok","accessToken","fetchFriends","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","replyVisibility","isNotifications","public","friends","dms","notifications","media","favorites","bookmarks","queryString","param","statusText","pagination","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","bookmarkStatus","unbookmarkStatus","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","setMediaDescription","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateProfileImages","avatarName","banner","background","updateProfile","importMutes","file","importBlocks","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchMascot","updateMascot","mascot","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchKnownDomains","fetchDomainMutes","muteDomain","domain","unmuteDomain","chats","getOrCreateChat","accountId","chatMessages","sendChatMessage","mediaId","readChat","lastReadId","deleteChatMessage","rgb2hex","g","b","Math","ceil","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","library","add","faRobot","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__exports__","class","compact","betterShadow","alt","image-load-error","icon","isExternal","generateProfileLink","restrictedNicknames","complicated","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","unmounted","removeEventListener","ref","style","getTagName","getAttrs","innertag","substring","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","processTextForEmoji","buffer","textBuffer","char","found","shortcode","HashtagLink","required","default","link","generateTagLink","$router","open","MentionsLine","html","handleLinks","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","closer","Tag","mentionsLinePadding","linkData","getLinkData","notifying","MENTIONS_LIMIT","renderMention","updatedLink","updatedChildren","child","renderLink","pass2","reverse","processItemReverse","renderHashtag","newChildren","textContent","stripTags","greentextHandle","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","convertHtmlToLines","string","every","cleanedString","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","polls","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","unseenNotificationsFromStore","i18nString","notifObj","image","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","backgroundColor","highlightClass","fileType","fileTypeService","fileMatchesSomeType","faReply","ReplyButton","computed","loggedIn","currentUser","replying","$t","faStar","faStarRegular","FavoriteButton","animated","dispatch","mapGetters","spin","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","customEmoji","indexOfFilterWord","indexOf","flat","getters","bound-to","remove-padding","size","placeholder","$event","imageUrl","faRetweet","RetweetButton","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faExternalLinkAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","reportStatus","canDelete","ownStatus","canPin","canMute","fixed-width","faCircleNotch","StatusPopover","allStatuses","statusId","Status","defineAsyncComponent","enter","popover-class","is-preview","statusoid","UserListPopover","RichContent","usersCapped","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","faChevronUp","faChevronDown","faAngleDoubleRight","list","camelCase","charAt","toUpperCase","controlledOrUncontrolledSet","obj","camelized","set","uncontrolledName","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","MentionLink","uncontrolledReplying","unmuted","userExpanded","uncontrolledMediaPlaying","suspendable","headTailLinks","res","toggle","controlledName","$data","$props","showReasonMutedThread","inConversation","repeaterClass","userClass","deleted","repeaterStyle","highlight","userStyle","noHeading","userProfileLink","generateUserProfileLink","replyProfileLink","isReply","findUser","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","rtBotStatus","botStatus","botIndicator","hideBotIndication","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","muteBotStatuses","shouldNotMute","relationshipReblog","inProfile","profileUserId","hideMutedUsers","hideMutedPosts","hideMutedThreads","hideFilteredStatuses","hideWordFilteredPosts","hideStatus","isFocused","focused","replyToName","replySubject","decodedSummary","behavior","subjectLineBehavior","startsWithRe","concat","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","browserSupport","cssFilter","isSuspendable","mediaPlaying","inThreadForest","controlledThreadDisplayStatus","threadShowing","visibilityLocalized","$i18n","visibilityIcon","showError","clearError","toggleReplying","controlledOrUncontrolledToggle","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","toggleThreadDisplay","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","scrollBy","watch","num","inlineExpanded","isPreview","to","highlighted","better-shadow","data-tags","user-id","rounded","bordered","time","auto-update","expandable","replies","simpleTree","aria-expanded","dive","status-id","aria-label","flip","user-screen-name","no-heading","controlled-showing-tall","controlledShowingTall","controlled-expanding-subject","controlledExpandingSubject","controlled-showing-long-subject","controlledShowingLongSubject","controlled-toggle-showing-tall","controlledToggleShowingTall","controlled-toggle-expanding-subject","controlledToggleExpandingSubject","controlled-toggle-showing-long-subject","controlledToggleShowingLongSubject","showOtherRepliesAsButton","$tc","numReplies","reply","emojiReactionsOnTimeline","logged-in","reply-to","replied-user","copy-message-scope","subject","DialogModal","darkOverlay","onCancel","Function","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","toggleTag","api","backendInteractor","commit","toggleRight","toggleActivationStatus","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","on-cancel","footer","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","recipient_id","mapState","pleromaChatMessagesAvailable","showing_reblogs","faRss","faBell","faSearchPlus","faEdit","followRequestInProgress","classes","isOtherUser","subscribeUrl","serverUrl","URL","protocol","host","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","Select","refetchRelationship","setProfileView","switcher","linkClicked","openProfileTab","zoomAvatar","mentionUser","replyTo","repliedUser","hideBio","hideUserStats","subscribing","click","disabled","handle-links","LAYERS","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","specialLanguageCodes","internalToBrowserLocale","getLanguageName","languageName","ISO6391","getNativeName","browserLocale","toLocaleUpperCase","languages","languagesObject","localeCompare","localeService","internalToBackendLocale","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","getColors","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","computeDynamicColor","variableSlot","composePreset","getThemes","cache","themes","statePositionAcc","position","getOpacitySlot","getPreset","isV1","setPreset","promiseInterval","promiseCall","interval","stopped","func","stop","loading","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","querySelectorAll","clickedElement","checked","element","optionId","voters_count","scope","keypath","now-threshold","faAt","findUserByUrl","isYou","userName","userNameFullUi","serverName","instanceDomain","userNameFull","highlightType","classnames","shouldBoldenYou","useAtIcon","isRemote","shouldShowFullUserName","conf","mentionLinkDisplay","shouldShowTooltip","mentionLinkShowTooltip","shouldShowAvatar","mentionLinkShowAvatar","shouldShowYous","mentionLinkShowYous","mentionLinkBoldenYou","shouldFadeDomain","mentionLinkFadeDomain","MFM_TAGS","defineComponent","ast","mfm","fnNameList","validTime","h","genEl","xss","speed","direction","alternate","anime","serif","monospace","cursive","fantasy","math","MkSparkle","degrees","deg","random","log","mention","userScreenName","hashtag","hash","lang","inline","nowrap","static_url","faFile","faMusic","faImage","faLink","faPollH","renderMisskeyMarkdown","postLength","parseReadyDone","localCollapseSubjectDefault","collapseMessageWithSubject","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","expandingSubject","hideTallStatus","showingTall","showingMore","attachmentTypes","MFMContent","mounted","onParseReady","handle","toggleShowMore","toggleShowingTall","toggleExpandingSubject","showingLongSubject","toggleShowingLongSubject","fullContent","uncontrolledShowingTall","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","hideAttachments","hideAttachmentsInConv","nsfwClickthrough","attachmentSize","maxThumbnails","Attachment","Poll","Gallery","LinkPreview","StatusBody","setMedia","galleryAttachments","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject","base-poll","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","stopGifs","appendPx","str","test","onLoad","imageLoadHandler","canvas","naturalWidth","naturalHeight","getContext","drawImage","onError","referrerpolicy","emits","indeterminate","modelValue","$slots","unstyled","BasicUserCard","CURRENT_VERSION","getLayersArray","parent","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","sourceOpacity","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","maxlength","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","allAttentions","attention","buildMentionsString","copyMessageScope","postContentType","sensitiveByDefault","sensitiveIfSubject","dropFiles","uploadingFiles","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","stopPropagation","preventDefault","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","autocomplete","disableLockWarning","disableSubject","enable-emoji-picker","suggest","emojiPickerPlacement","hide-emoji-button","newline-on-ctrl-enter","enable-sticker-picker","rows","cols","disableScopeSelector","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","drop-files","grid","descriptions","set-media","editable","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment","disableSensitivityCheckbox","faVideo","faPlayCircle","faStop","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","flashLoaded","showDescription","Flash","VideoAttachment","classNames","edit","useContainFit","usePlaceholder","placeholderName","placeholderIconClass","mediaProxyAvailable","isEmpty","oembed","useModal","modalTypes","playVideosInModal","videoTag","newVal","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","toggleHidden","useOneClickNsfw","onImageLoad","hideDescription","image-load-handler","controls","thumb_url","oembedHTML","localeDateString","toLocaleString","refreshRelativeTimeObject","longFormat","autoUpdate","datetime","items","getKey","empty","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","en","require","setLanguage","language","setLocaleMessage","findFirstUsable","slots","findIndex","renderOnlyFocused","onSwitch","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","activeIndex","slot","isActive","tabName","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","Fragment","contents","tabs","classesTab","classesWrapper","label","fullHeight","renderSlot","showImmediately","noIdUpdate","faCheck","faUserPlus","faUser","faSuitcaseRolling","Notification","getUser","usersObject","updater","targetUser","targetUserProfileLink","needMute","faFilter","filters","toggleNotificationFilter","Notifications","NotificationFilters","minimalMode","filterMode","disableTeleport","bottomedOut","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","unreadChatCount","layoutType","teleportTarget","wide","mobile","notificationsToDisplay","FaviconService","drawFaviconBadge","clearFaviconBadge","markAsSeen","fetchOlderNotifications","seenCount","notificationsFetcher","fetchAndUpdate","older","notifs","sizes","hidingLong","minimal","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","onNaturalSizeLoad","rowStyle","itemStyle","total","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","removeAttachment","shift-up","shiftUpAttachment","shift-dn","shiftDnAttachment","hide-description","number","expanded","mentionsComputed","extraMentions","manyMentions","exponent","units","toFixed","timelineData","POSITIVE_INFINITY","fetchNotifications","readNotifsIds","update","messageKey","messageArgs","startFetching","boundFetchAndUpdate","favicons","isImageLoaded","initFaviconService","favcanvas","favimg","Image","crossOrigin","favcontext","clearRect","toDataURL","badgeColor","getPropertyValue","fillStyle","beginPath","arc","faviconWidth","PI","fill","progress","defaultState","expertLevel","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideShoutbox","padEmoji","loopVideo","loopVideoSilentOnly","streaming","alwaysShowNewPostButton","autohideFloatingPostButton","pauseOnUnfocused","thirdColumnMode","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","sidebarRight","disableStickyHeaders","showScrollbars","virtualScrolling","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","actions","loadSettings","knownKeys","presentKeys","intersection","Cookies","statusSummary","muteWord","desktopNotificationOpts","permission","desktopNotificationSilence","desktopNotification","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","newExporter","filename","getExportedObject","exportData","stringified","btoa","display","newImporter","onImport","onImportFailure","validator","importData","filePicker","reader","FileReader","parsed","validationResult","readAsText","ruffleInstance","RuffleService","getRuffle","RufflePlayer","polyfills","publicPath","onabort","oncancel","faExclamationTriangle","player","loaded","openPlayer","ruffle","newest","createPlayer","letterbox","container","load","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","newImg","provider_name","slicedUsers","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","for","promptText","controlledLanguage","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","showLocal","css","selected","unlisted","private","direct","userDefault","onScopeChange","defaultApi","path","notificationsApi","oldValue","settingsMap","serverSideConfig","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","setCurrentUser","setServerSideOption","logout","getComponentProps","Component","isFunction","getComponentOptions","addPositionToWords","words","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","root","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","newValue","newWord","firstchar","matchedSuggestions","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","ctrlKey","shiftKey","panelBody","offsetBottom","setPlacement","overflowsBottom","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","_list","plural","_plural","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setLayoutType","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","newNotice","normalOrMobile","registrationOpen","vapidPublicKey","defaultBanner","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","shoutAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","hostname","getStaticEmoji","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","idStore","conversationsObject","timelines","publicAndExternal","mergeOrAdd","arr","oldItem","new","prepareStatus","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","timelineObject","minNew","maxNew","newer","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","numStatusesBeforeFetch","ccTimeline","timelineFetcher","followRequestFetcher","requests","backendInteractorService","startFetchingTimeline","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","windowWidth","documentElement","windowHeight","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","favourite","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","predictedRelationship","relationships","loggingIn","lastLoginName","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","mascotUrl","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","oauthApi","userToken","loginUser","requestPermission","latest","maybeShowChatNotification","currentChatId","account_id","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSED","CLOSING","STARTING_INITIAL","STARTING","disableMastoSockets","DISABLED","startMastoUserSocket","ERROR","JOINED","closeEvent","ignoreCodes","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","shout","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","supportedTypes","mediaViewer","currentIndex","activated","setCurrentMedia","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","updateMaxId","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","getView","currentMessageChainId","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","deleteMessage","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","_value","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","mapActions","submit","submitToken","submitPassword","identifier","passwordResetRequested","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","UserPanel","signedIn","hide-bio","faUsers","faHome","TimelineMenuContent","privateMode","federating","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","followRequestCount","InstanceSpecificPanel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","getWhoToFollow","usersToFollow","toFollow","shuffled","externalUser","showWhoToFollow","WhoToFollowPanel","oldUser","faBullhorn","shoutPanel","currentMessage","collapsed","togglePanel","scrollEl","floating","author","isOpen","noBackground","retry","getResettableAsyncComponent","asyncComponent","asyncComponentFactory","loader","observe","shallowReactive","onResetAsyncComponent","faWindowMinimize","faFileUpload","faFileDownload","SettingsModal","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","Modal","SettingsModalContent","loadingComponent","PanelLoading","errorComponent","AsyncComponentError","delay","closeModal","peekModal","_pleroma_settings_version","major","minor","fileMajor","feMajor","restore","backup","backupWithTheme","sample","ignoreList","clone","modalOpenedOnce","modalPeeked","is-open","no-background","model-value","setTransform","scale","PinchZoom","$attrs","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","pointerId","coord","sign","isPositive","pointerType","SwipeClick","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","offsets","faChevronLeft","faChevronRight","MediaModal","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","currentMedia","canNavigate","getType","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","selector","reach-min-scale-strategy","stop-propagate-handled","allow-pan-min-scale","min-scale","reset-to-min-scale-limit","faSignInAlt","faSignOutAlt","faSearch","faTachometerAlt","faCog","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","isPersistent","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","active-class","SearchBar","searchTerm","route","searchInput","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","onSearchBarToggled","UserReportingModal","List","statusIdsToReport","processing","remoteInstance","isChecked","toggleStatus","in-conversation","PostStatusModal","resettingForm","isFormVisible","oldVal","GlobalNoticeList","notices","closeNotice","ShoutPanel","DesktopNav","mobileActivePanel","updateMobileState","reverseLayout","noSticky","newPostButtonShown","userBackground","instanceBackground","bgStyle","isChats","shoutboxPosition","reverseSetting","faAngleDoubleDown","ThreadTree","depth","collapsable","isExpanded","pinnedStatusIdsObject","getReplies","simple","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","inline-expanded","show-pinned","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-replying","controlled-media-playing","controlled-toggle-replying","controlled-set-media-playing","replyStatus","is-expanded","pinned-status-ids-object","get-replies","set-highlight","toggle-expanded","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","numStatus","faAngleDoubleLeft","idA","idB","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","maxDepthToShowByDefault","maxDepth","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","walk","forest","topLevel","processed","cur","replyIds","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","isReplying","maybeHighlight","newConversationId","oldConversationId","resetDisplayState","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","show-other-replies-as-button","TimelineMenu","openMenu","blockOpen","timelineName","i18nkey","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","Timeline","paused","unfocused","virtualScrollIndex","blockingClicks","Conversation","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","rootClasses","embedded","statusesToDisplay","statusesPerSide","nonPinnedIndex","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","virtual-hidden","footerSlipgate","PublicTimeline","timeline-name","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","Bookmarks","conversationPage","is-page","tabModeDict","Interactions","allowFollowingMove","onModeSwitch","TabSwitcher","on-switch","minimal-mode","filter-mode","DMs","htmlTitle","getUserProfileLink","withAvatar","ChatListItem","ChatTitle","attachmentInfo","messageForStatusContent","messageEmojis","messagePreview","_e","chatNew","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","ChatList","ChatNew","isNew","cancelNewChat","newChat","displayDate","today","toLocaleDateString","day","month","ChatMessage","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","hoveredMessageChain","bound-to-selector","full-content","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","expand","diff","totalHeight","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","positionBeforeUpdate","doStartFetching","handleAttachmentPosting","sendMessage","buildFakeMessage","doSendMessage","retriesLeft","with-avatar","chat-view-item","hovered-message-chain","disable-subject","disable-scope-selector","disable-notice","disable-lock-warning","disable-polls","disable-sensitivity-checkbox","disable-submit","disable-preview","optimistic-posting","post-handler","submit-on-enter","preserve-focus","auto-focus","file-limit","max-height","emoji-picker-placement","FollowCard","isMe","noFollowsYou","label-following","withLoadMore","select","childPropName","additionalPropNames","WrappedComponent","fetchEntries","updateEntries","newEntries","FollowerList","destroy","FriendList","UserProfile","footerRef","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","setFooterRef","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","hashtags","currenResultTab","newQuery","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","uses","setup","v$","useVuelidate","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","$error","$model","bio","sameAsPassword","prompt-text","set-language","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","WhoToFollow","TermsOfServicePanel","StaffPanel","staffAccounts","groupedStaffAccounts","groupBy","toInstanceReasonObject","instances","info","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","previousNavPaddingRight","previousAppBgWrapperRight","validateAuthenticatedRoute","routes","_to","component","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","OAuthCallback","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","paddingRight","appBgWrapperEl","enableBodyScroll","directive","binding","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","general","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","FontAwesomeIcon","FontAwesomeLayers","mount","currentLocale","createI18n","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","global","interfaceModule","instanceModule","usersModule","statusesModule","apiModule","configModule","serverSideConfigModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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AC,WAC5E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAC5E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAC5E,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAE7E,aAAgB,CACd,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,c,oFC37BhF,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,mGCEA,IAEE,IAAIz+D,YAEJ,MAAOnW,GACP6E,OAAOsR,YAAci/D,ICPvB,IA+JeC,EA1IM,CACnBzvD,MAtBmB,CACnB81C,mBAAoB,SACpB4Z,qBAAqB,EACrBC,uBAAwB,KACxBn0D,SAAU,CACRo0D,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1Bn1C,eAAgB,CACdC,UAAW37B,OAAO8wE,KAAO9wE,OAAO8wE,IAAIC,WAClC/wE,OAAO8wE,IAAIC,SAAS,SAAU,qBAC9B/wE,OAAO8wE,IAAIC,SAA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","file":"static/js/app.e8949b9a3c7cfdab2e4c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"55d5f2926c7b22177236\",\"3\":\"6817af5c7ddbbd72fbf1\",\"4\":\"927a84e2225924985925\",\"5\":\"bbbe2165b2726754babd\",\"6\":\"c6e50a831e6b09d426c7\",\"7\":\"7a9d3de7e3eb6affa8fa\",\"8\":\"6e10d130a82421e5de97\",\"9\":\"4c310a18d1e30d64ab78\",\"10\":\"b67f1d16d8fdcd03f775\",\"11\":\"88732498617afe7ab4fa\",\"12\":\"21fb2f8c9787acc40766\",\"13\":\"bd887f6f8965a89629f1\",\"14\":\"8d076150d2d32a70c85c\",\"15\":\"458ea2a090159a1c312d\",\"16\":\"b026bc770b996a75ab86\",\"17\":\"37f97cc3eab74f285530\",\"18\":\"5e155da6b34cb233975a\",\"19\":\"4449616295c79e9feb82\",\"20\":\"c3c9f56f752974bf19cf\",\"21\":\"13590b4f67813801857e\",\"22\":\"af3b6f25635a9809f6e8\",\"23\":\"27002d630c581d75786b\",\"24\":\"17fecccd566085bc7273\",\"25\":\"d92131b48359fae551a4\",\"26\":\"8e2b950cad8e4bb7145f\",\"27\":\"b70f29d1c24421eeb8e0\",\"28\":\"3eeac63a0c7d7ca9f57e\",\"29\":\"a9703e50212c8482b1b8\",\"30\":\"ccdf2a34d5a00135f6b7\",\"31\":\"079c61206f2e6ac69873\",\"32\":\"2c5f6af0c5d2d87ad611\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"4\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"4e6541aa0979ab5fe8ab\",\"3\":\"2f4099421df47087d7d1\",\"4\":\"10e378d3da0e7f32661d\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([593,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.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 const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n let unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n unicodeDomain = '🌏' + unicodeDomain\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !data.hasOwnProperty('oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n if (data.akkoma) {\n const { akkoma } = data\n if (akkoma && akkoma.source && akkoma.source.mediaType === 'text/x.misskeymarkdown') {\n output.mfm_content = akkoma.source.content\n }\n } else {\n output.mfm_content = null\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 return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n 'favourite': 'like',\n 'reblog': 'repeat'\n }\n const masto = !data.hasOwnProperty('ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n output.emoji_url = data.emoji_url\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","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n let message = val.reduce((acc, message) => {\n let key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_MASCOT_URL = '/api/v1/pleroma/mascot'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(NOTIFICATION_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, 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 let url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n let url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n let url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n let url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n let url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n let url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers: headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers: headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all'\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n 'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n let status = ''\n let statusText = ''\n\n let pagination = {}\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.errors) {\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.status = status\n data.statusText = statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n let postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst fetchMascot = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_MASCOT_URL, credentials })\n}\n\nconst updateMascot = ({ mascot, credentials }) => {\n const form = new FormData()\n form.append('file', mascot)\n return fetch(MASTODON_MASCOT_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices: choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n 'account_id': userId,\n 'status_ids': statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n let url = MASTODON_SEARCH_2\n let params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n params.push(['with_relationships', true])\n\n let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n 'JOINED': 1,\n 'CLOSED': 2,\n 'ERROR': 3,\n 'DISABLED': 4,\n 'STARTING': 5,\n 'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n 'content': content\n }\n\n if (mediaId) {\n payload['media_id'] = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload: payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n 'last_read_id': lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n fetchUser,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n fetchFollowRequests,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchMascot,\n updateMascot,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRobot\n)\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact',\n 'bot'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=764c87f9\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"Avatar\"\n :class=\"{ '-compact': compact }\"\n >\n <StillImage\n v-if=\"user\"\n class=\"avatar\"\n :alt=\"user.screen_name_ui\"\n :title=\"user.screen_name_ui\"\n :src=\"imgSrc(user.profile_image_url_original)\"\n :image-load-error=\"imageLoadError\"\n :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n />\n <div\n v-else\n class=\"avatar -placeholder\"\n :class=\"{ '-compact': compact }\"\n />\n <FAIcon\n v-if=\"bot\"\n icon=\"robot\"\n class=\"bot-indicator\"\n />\n </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgba(127, 127, 127, 0.5);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n\n}\n</style>\n","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","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // Either 'top' or 'bottom'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean\n },\n data () {\n return {\n hidden: true,\n styles: { opacity: 0 },\n oldSize: { width: 0, height: 0 }\n }\n },\n methods: {\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {\n opacity: 0\n }\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one v-slot:trigger.\n const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const screenBox = anchorEl.getBoundingClientRect()\n // Screen position of the origin point for popover\n const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n const content = this.$refs.content\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentBounds = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n min: parentBounds.left + (margin.left || 0),\n max: parentBounds.right - (margin.right || 0)\n } : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n min: parentBounds.top + (margin.top || 0),\n max: parentBounds.bottom - (margin.bottom || 0)\n } : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n\n // If overflowing from left, move it so that it doesn't\n if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n }\n\n // If overflowing from right, move it so that it doesn't\n if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n }\n\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n let vPadding = 0\n if (this.removePadding && usingTop) {\n const anchorStyle = getComputedStyle(anchorEl)\n vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n }\n\n const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n : yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n // Note, separate translateX and translateY avoids blurry text on chromium,\n // single translate or translate3d resulted in blurry text.\n this.styles = {\n opacity: 1,\n transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n }\n },\n showPopover () {\n const wasHidden = this.hidden\n this.hidden = false\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.styles = { opacity: 0 }\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') this.showPopover()\n },\n onMouseleave (e) {\n if (this.trigger === 'hover') this.hidePopover()\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.hidden) return\n if (this.$el.contains(e.target)) return\n this.hidePopover()\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n created () {\n document.addEventListener('click', this.onClickOutside)\n },\n unmounted () {\n document.removeEventListener('click', this.onClickOutside)\n this.hidePopover()\n }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=24420bf0\"\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=24420bf0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n >\n <button\n ref=\"trigger\"\n class=\"button-unstyled popover-trigger-button\"\n type=\"button\"\n @click=\"onClick\"\n >\n <slot name=\"trigger\" />\n </button>\n <div\n v-if=\"!hidden\"\n ref=\"content\"\n :style=\"styles\"\n class=\"popover\"\n :class=\"popoverClass || 'popover-default'\"\n >\n <slot\n name=\"content\"\n class=\"popover-inner\"\n :close=\"hidePopover\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: 500;\n position: absolute;\n min-width: 0;\n}\n\n.popover-default {\n transition: opacity 0.3s;\n\n &:after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: .5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: 200;\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: .5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0px;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon)\n }\n }\n\n &:active, &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0px;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0px 0px 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: '✓';\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: '•';\n }\n }\n }\n\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=icon-] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n</style>\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n * attributes without values represented as boolean true\n */\nexport const getAttrs = tag => {\n const innertag = tag\n .substring(1, tag.length - 1)\n .replace(new RegExp('^' + getTagName(tag)), '')\n .replace(/\\/?$/, '')\n .trim()\n const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n .map(([trash, key, value]) => [key, value])\n .map(([k, v]) => {\n if (!v) return [k, true]\n return [k, v.substring(1, v.length - 1)]\n })\n return Object.fromEntries(attrs)\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 (let 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 (let 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 let buffer = [] // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n 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","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const regex = /tag[s]*\\/(\\w+)$/g\n const result = regex.exec(url)\n if (!result) {\n return false\n }\n return result[1]\n}\n","import { 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","import { render } from \"./hashtag_link.vue?vue&type=template&id=c545d9d6\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n * of where they are (beginning/middle/end), even single mentions are converted\n * to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n * proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n * possible in vue. Current solution is to emit 'parseReady' event when parsing\n * is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n name: 'RichContent',\n components: {\n MentionsLine,\n HashtagLink\n },\n props: {\n // Original html content\n html: {\n required: true,\n type: String\n },\n attentions: {\n required: false,\n default: () => []\n },\n // Emoji object, as in status.emojis, note the \"s\" at the end...\n emoji: {\n required: true,\n type: Array\n },\n // Whether to handle links or not (posts: yes, everything else: no)\n handleLinks: {\n required: false,\n type: Boolean,\n default: false\n },\n // Meme arrows\n greentext: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n // NEVER EVER TOUCH DATA INSIDE RENDER\n render () {\n // Pre-process HTML\n const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n let currentMentions = null // Current chain of mentions, we group all mentions together\n // This is used to recover spacing removed when parsing mentions\n let lastSpacing = ''\n\n const lastTags = [] // Tags that appear at the end of post body\n const writtenMentions = [] // All mentions that appear in post body\n const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n // to collapse too many mentions in a row\n const writtenTags = [] // All tags that appear in post body\n // unique index for vue \"tag\" property\n let mentionIndex = 0\n let tagsIndex = 0\n\n const renderImage = (tag) => {\n return <StillImage\n {...getAttrs(tag)}\n class=\"img\"\n />\n }\n\n const renderHashtag = (attrs, children, encounteredTextReverse) => {\n const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n writtenTags.push(linkData)\n if (!encounteredTextReverse) {\n lastTags.push(linkData)\n }\n const { url, tag, content } = linkData\n return <HashtagLink url={url} tag={tag} content={content}/>\n }\n\n const renderMention = (attrs, children) => {\n const linkData = getLinkData(attrs, children, mentionIndex++)\n linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n writtenMentions.push(linkData)\n if (currentMentions === null) {\n currentMentions = []\n }\n currentMentions.push(linkData)\n if (currentMentions.length > MENTIONS_LIMIT) {\n invisibleMentions.push(linkData)\n }\n if (currentMentions.length === 1) {\n return <MentionsLine mentions={ currentMentions } />\n } else {\n return ''\n }\n }\n\n const renderLink = (attrs, children) => {\n const updatedLink = attrs['href'].replace(/&/g, '&')\n const updatedChildren = children.map(child => {\n if (typeof child === 'string') {\n return child.replace(attrs['href'], updatedLink)\n }\n if (child[0] === '<span>') {\n return <span>\n { child[1] }\n </span>\n }\n return child[1]\n })\n return <a {...{ attrs }} href={updatedLink}>\n { ...updatedChildren }\n </a>\n }\n // Processor to use with html_tree_converter\n const processItem = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (item.includes('\\n')) {\n currentMentions = null\n }\n if (emptyText) {\n // don't include spaces when processing mentions - we'll include them\n // in MentionsLine\n lastSpacing = item\n // Don't remove last space in a container (fixes poast mentions)\n return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n }\n\n currentMentions = null\n if (item.includes(':')) {\n item = ['', processTextForEmoji(\n item,\n this.emoji,\n ({ shortcode, url }) => {\n return <StillImage\n class=\"emoji img\"\n src={url}\n title={`:${shortcode}:`}\n alt={`:${shortcode}:`}\n />\n }\n )]\n }\n return item\n }\n\n // Handle tag nodes\n if (Array.isArray(item)) {\n const [opener, children, closer] = item\n const Tag = getTagName(opener)\n const attrs = getAttrs(opener)\n const previouslyMentions = currentMentions !== null\n /* During grouping of mentions we trim all the empty text elements\n * This padding is added to recover last space removed in case\n * we have a tag right next to mentions\n */\n const mentionsLinePadding =\n // Padding is only needed if we just finished parsing mentions\n previouslyMentions &&\n // Don't add padding if content is string and has padding already\n !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n ? lastSpacing\n : ''\n switch (Tag) {\n case 'br':\n currentMentions = null\n break\n case 'img': // replace images with StillImage\n return ['', [mentionsLinePadding, renderImage(opener)], '']\n case 'a': // replace mentions with MentionLink\n if (!this.handleLinks) break\n if (attrs['class'] && attrs['class'].includes('mention')) {\n // Handling mentions here\n return renderMention(attrs, children)\n } else {\n currentMentions = null\n if (attrs['href']) {\n return renderLink(attrs, children)\n }\n break\n }\n case 'span':\n if (this.handleLinks && attrs['class'] && attrs['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 attrs = getAttrs(opener)\n // should only be this\n if (\n (attrs['class'] && attrs['class'].includes('hashtag')) || // Pleroma style\n (attrs['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 case '':\n return [...children].reverse().map(processItemReverse).reverse()\n }\n\n // Render tag as is\n if (children !== undefined) {\n const newChildren = Array.isArray(children)\n ? [...children].reverse().map(processItemReverse).reverse()\n : children\n return <Tag {...getAttrs(opener)}>\n { newChildren }\n </Tag>\n } else {\n return <Tag/>\n }\n }\n return item\n }\n\n const pass1 = convertHtmlToTree(html).map(processItem)\n const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n // DO NOT USE SLOTS they cause a re-render feedback loop here.\n // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n // at least until vue3?\n const result = <span class=\"RichContent\">\n { pass2 }\n </span>\n\n const event = {\n lastTags,\n writtenMentions,\n writtenTags,\n invisibleMentions\n }\n\n // DO NOT MOVE TO UPDATE. BAD IDEA.\n this.$emit('parseReady', event)\n\n return result\n }\n}\n\nconst getLinkData = (attrs, children, index) => {\n const stripTags = (item) => {\n if (typeof item === 'string') {\n return item\n } else {\n return item[1].map(stripTags).join('')\n }\n }\n const textContent = children.map(stripTags).join('')\n return {\n index,\n url: attrs.href,\n tag: attrs['data-tag'],\n content: flattenDeep(children).join(''),\n textContent\n }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n const greentextHandle = new Set(['p', 'div'])\n\n const lines = convertHtmlToLines(html)\n const newHtml = lines.reverse().map((item, index, array) => {\n if (!item.text) return item\n const string = item.text\n\n // Greentext stuff\n if (\n // Only if greentext is engaged\n greentext &&\n // Only handle p's and divs. Don't want to affect blockquotes, code etc\n item.level.every(l => greentextHandle.has(l)) &&\n // Only if line begins with '>' or '<'\n (string.includes('>') || string.includes('<'))\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('>')) {\n return `<span class='greentext'>${string}</span>`\n } else if (cleanedString.startsWith('<')) {\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","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","import { 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","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/flash/)) {\n return 'flash'\n }\n\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","<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 <router-link :to=\"userProfileLink\">\n {{ status.user.screen_name_ui }}\n </router-link>\n </small>\n <small\n v-if=\"showReasonMutedThread\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted') }}\n </small>\n <small\n v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted_and_words') }}\n </small>\n <small\n class=\"mute-words\"\n :title=\"muteWordHits.join(', ')\"\n >\n {{ muteWordHits.join(', ') }}\n </small>\n <button\n class=\"unmute button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n icon=\"eye-slash\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"showPinned\"\n class=\"pin\"\n >\n <FAIcon\n icon=\"thumbtack\"\n class=\"faint\"\n />\n <span class=\"faint\">{{ $t('status.pinned') }}</span>\n </div>\n <div\n v-if=\"retweet && !noHeading && !inConversation\"\n :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n :style=\"[repeaterStyle]\"\n class=\"status-container repeat-info\"\n >\n <UserAvatar\n v-if=\"retweet\"\n class=\"left-side repeater-avatar\"\n :bot=\"rtBotIndicator\"\n :better-shadow=\"betterShadow\"\n :user=\"statusoid.user\"\n />\n <div class=\"right-side faint\">\n <span\n class=\"status-username repeater-name\"\n :title=\"retweeter\"\n >\n <router-link\n v-if=\"retweeterHtml\"\n :to=\"retweeterProfileLink\"\n >\n <RichContent\n :html=\"retweeterHtml\"\n :emoji=\"retweeterUser.emoji\"\n />\n </router-link>\n <router-link\n v-else\n :to=\"retweeterProfileLink\"\n >{{ retweeter }}</router-link>\n </span>\n {{ ' ' }}\n <FAIcon\n icon=\"retweet\"\n class=\"repeat-icon\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ $t('timeline.repeated') }}\n </div>\n </div>\n\n <div\n v-if=\"!deleted\"\n :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n :style=\"[ userStyle ]\"\n class=\"status-container\"\n :data-tags=\"tags\"\n >\n <div\n v-if=\"!noHeading\"\n class=\"left-side\"\n >\n <a\n :href=\"$router.resolve(userProfileLink).href\"\n @click.stop.prevent.capture=\"toggleUserExpanded\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"compact\"\n :better-shadow=\"betterShadow\"\n :user=\"status.user\"\n />\n </a>\n </div>\n <div class=\"right-side\">\n <UserCard\n v-if=\"userExpanded\"\n :user-id=\"status.user.id\"\n :rounded=\"true\"\n :bordered=\"true\"\n class=\"usercard\"\n />\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 <router-link\n class=\"account-name\"\n :title=\"status.user.screen_name_ui\"\n :to=\"userProfileLink\"\n >\n {{ status.user.screen_name_ui }}\n </router-link>\n <img\n v-if=\"!!(status.user && status.user.favicon)\"\n class=\"status-favicon\"\n :src=\"status.user.favicon\"\n >\n </div>\n\n <span class=\"heading-right\">\n <router-link\n class=\"timeago faint-link\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n >\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"60\"\n />\n </router-link>\n <span\n v-if=\"status.visibility\"\n class=\"visibility-icon\"\n :title=\"visibilityLocalized\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"visibilityIcon(status.visibility)\"\n />\n </span>\n <button\n v-if=\"expandable && !isPreview\"\n class=\"button-unstyled\"\n :title=\"$t('status.expand')\"\n @click.prevent=\"toggleExpanded\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"plus-square\"\n />\n </button>\n <button\n v-if=\"unmuted\"\n class=\"button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n class=\"fa-scale-110\"\n />\n </button>\n <button\n v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n @click.prevent=\"toggleThreadDisplay\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <button\n v-if=\"dive && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"$t('status.show_only_conversation_under_this')\"\n @click.prevent=\"dive\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"'angle-double-right'\"\n />\n </button>\n </span>\n </div>\n <div\n v-if=\"isReply || hasMentionsLine\"\n class=\"heading-reply-row\"\n >\n <span\n v-if=\"isReply\"\n class=\"glued-label reply-glued-label\"\n >\n <StatusPopover\n v-if=\"!isPreview\"\n :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n class=\"reply-to-popover\"\n style=\"min-width: 0\"\n :class=\"{ '-strikethrough': !status.parent_visible }\"\n >\n <button\n class=\"button-unstyled reply-to\"\n :aria-label=\"$t('tool_tip.reply')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n flip=\"horizontal\"\n />\n {{ ' ' }}\n <span\n class=\"reply-to-text\"\n >\n {{ $t('status.reply_to') }}\n </span>\n </button>\n </StatusPopover>\n\n <span\n v-else\n class=\"reply-to-no-popover\"\n >\n <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n </span>\n <MentionLink\n :content=\"replyToName\"\n :url=\"replyProfileLink\"\n :user-id=\"status.in_reply_to_user_id\"\n :user-screen-name=\"status.in_reply_to_screen_name\"\n />\n </span>\n\n <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n <!-- \"Mentions\" label to the first mention -->\n <span\n v-if=\"hasMentionsLine\"\n class=\"glued-label\"\n >\n <span\n class=\"mentions\"\n :aria-label=\"$t('tool_tip.mentions')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <span\n class=\"mentions-text\"\n >\n {{ $t('status.mentions') }}\n </span>\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(0, 1)\"\n class=\"mentions-line-first\"\n />\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(1)\"\n class=\"mentions-line\"\n />\n </div>\n </div>\n\n <StatusContent\n ref=\"content\"\n :status=\"status\"\n :no-heading=\"noHeading\"\n :highlight=\"highlight\"\n :focused=\"isFocused\"\n :controlled-showing-tall=\"controlledShowingTall\"\n :controlled-expanding-subject=\"controlledExpandingSubject\"\n :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n @mediaplay=\"addMediaPlaying($event)\"\n @mediapause=\"removeMediaPlaying($event)\"\n @parseReady=\"setHeadTailLinks\"\n />\n\n <div\n v-if=\"inConversation && !isPreview && replies && replies.length\"\n class=\"replies\"\n >\n <button\n v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n class=\"button-unstyled -link faint\"\n :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n @click.prevent=\"dive\"\n >\n {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n </button>\n <span\n v-else\n class=\"faint\"\n >\n {{ $t('status.replies_list') }}\n </span>\n <StatusPopover\n v-for=\"reply in replies\"\n :key=\"reply.id\"\n :status-id=\"reply.id\"\n >\n <button\n class=\"button-unstyled -link reply-link\"\n @click.prevent=\"gotoOriginal(reply.id)\"\n >\n {{ reply.name }}\n </button>\n </StatusPopover>\n </div>\n\n <transition name=\"fade\">\n <div\n v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n class=\"favs-repeated-users\"\n >\n <div class=\"stats\">\n <UserListPopover\n v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n :users=\"statusFromGlobalRepository.rebloggedBy\"\n >\n <div class=\"stat-count\">\n <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.rebloggedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <UserListPopover\n v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n :users=\"statusFromGlobalRepository.favoritedBy\"\n >\n <div\n class=\"stat-count\"\n >\n <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.favoritedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <div class=\"avatar-row\">\n <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n </div>\n </div>\n </div>\n </transition>\n\n <EmojiReactions\n v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n :status=\"status\"\n />\n\n <div\n v-if=\"!noHeading && !isPreview\"\n class=\"status-actions\"\n >\n <reply-button\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n <retweet-button\n :visibility=\"status.visibility\"\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <favorite-button\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <ReactButton\n v-if=\"loggedIn\"\n :status=\"status\"\n />\n <extra-buttons\n :status=\"status\"\n @onError=\"showError\"\n @onSuccess=\"clearError\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"gravestone\"\n >\n <div class=\"left-side\">\n <UserAvatar\n class=\"post-avatar\"\n :compact=\"compact\"\n :bot=\"botIndicator\"\n />\n </div>\n <div class=\"right-side\">\n <div class=\"deleted-text\">\n {{ $t('status.status_deleted') }}\n </div>\n <reply-button\n v-if=\"replying\"\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n </div>\n </div>\n <div\n v-if=\"replying\"\n class=\"status-container reply-form\"\n >\n <PostStatusForm\n class=\"reply-body\"\n :reply-to=\"status.id\"\n :attentions=\"status.attentions\"\n :replied-user=\"status.user\"\n :copy-message-scope=\"status.visibility\"\n :subject=\"replySubject\"\n @posted=\"toggleReplying\"\n />\n </div>\n </template>\n </div>\n</template>\n\n<script src=\"./status.js\" ></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"ReplyButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"{'-active': replying}\"\n :title=\"$t('tool_tip.reply')\"\n @click.prevent=\"$emit('toggle')\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n />\n </button>\n <span v-else>\n <FAIcon\n icon=\"reply\"\n class=\"fa-scale-110 fa-old-padding\"\n :title=\"$t('tool_tip.reply')\"\n />\n </span>\n <span\n v-if=\"status.replies_count > 0\"\n class=\"action-counter\"\n >\n {{ status.replies_count }}\n </span>\n </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=56f413c0\"\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=56f413c0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n :spin=\"animated\"\n />\n </button>\n <span v-else>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :title=\"$t('tool_tip.favorite')\"\n :icon=\"['far', 'star']\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n class=\"action-counter\"\n >\n {{ status.fave_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./favorite_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=21f861d8\"\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=21f861d8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"ReactButton\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n @show=\"focusInput\"\n >\n <template v-slot:content=\"{close}\">\n <div class=\"reaction-picker-filter\">\n <input\n v-model=\"filterWord\"\n size=\"1\"\n :placeholder=\"$t('emoji.search_emoji')\"\n >\n </div>\n <div class=\"reaction-picker\">\n <span\n v-for=\"emoji in commonEmojis\"\n :key=\"emoji.replacement\"\n class=\"emoji-button\"\n :title=\"emoji.displayText\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n {{ emoji.replacement }}\n </span>\n <div class=\"reaction-picker-divider\" />\n <span\n v-for=\"(emoji, key) in emojis\"\n :key=\"key\"\n class=\"emoji-button\"\n :title=\"emoji.displayText\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n <img\n v-if=\"emoji.imageUrl !== false\"\n :src=\"emoji.imageUrl\"\n width=\"30px\"\n class=\"custom-reaction\"\n >\n <span v-else>\n {{ emoji.replacement }}\n </span>\n </span>\n <div class=\"reaction-bottom-fader\" />\n </div>\n </template>\n <template v-slot:trigger>\n <button\n class=\"button-unstyled popover-trigger\"\n :title=\"$t('tool_tip.add_reaction')\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"['far', 'smile-beam']\"\n />\n </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./react_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.custom-reaction {\n width: 30px !important;\n}\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n\n mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n /* override of popover internal stuff */\n .popover-trigger-button {\n width: auto;\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: ''\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n focusInput () {\n this.$nextTick(() => {\n const input = this.$el.querySelector('input')\n if (input) input.focus()\n })\n }\n },\n computed: {\n commonEmojis () {\n return [\n { displayText: 'thumbsup', replacement: '👍' },\n { displayText: 'angry', replacement: '😠' },\n { displayText: 'eyes', replacement: '👀' },\n { displayText: 'joy', replacement: '😂' },\n { displayText: 'fire', replacement: '🔥' }\n ]\n },\n emojis () {\n if (this.filterWord !== '') {\n const filterWordLowercase = this.filterWord.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]) {\n if (emoji.replacement === this.filterWord) return [emoji]\n\n const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n if (indexOfFilterWord > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n orderedEmojiList[indexOfFilterWord] = []\n }\n orderedEmojiList[indexOfFilterWord].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ] || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=0101edf8\"\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=0101edf8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"retweet\"\n :spin=\"animated\"\n />\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 <span v-else>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"retweet\"\n :title=\"$t('tool_tip.repeat')\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n class=\"no-event\"\n >\n {{ status.repeat_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./retweet_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=46fe49c4\"\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=46fe49c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n class=\"ExtraButtons\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template v-slot:content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n v-if=\"canMute && !status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"muteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.mute_conversation\") }}</span>\n </button>\n <button\n v-if=\"canMute && status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unmuteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n </button>\n <button\n v-if=\"!status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"pinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.pin\") }}</span>\n </button>\n <button\n v-if=\"status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unpinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.unpin\") }}</span>\n </button>\n <button\n v-if=\"!status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"bookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'bookmark']\"\n /><span>{{ $t(\"status.bookmark\") }}</span>\n </button>\n <button\n v-if=\"status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unbookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"bookmark\"\n /><span>{{ $t(\"status.unbookmark\") }}</span>\n </button>\n <button\n v-if=\"canDelete\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"deleteStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n /><span>{{ $t(\"status.delete\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"copyLink\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"share-alt\"\n /><span>{{ $t(\"status.copy_link\") }}</span>\n </button>\n <a\n v-if=\"!status.is_local\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n title=\"Source\"\n :href=\"status.external_url\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n icon=\"external-link-alt\"\n /><span>{{ $t(\"status.external_source\") }}</span>\n </a>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"reportStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'flag']\"\n /><span>{{ $t(\"user_card.report\") }}</span>\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled popover-trigger\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"ellipsis-h\"\n />\n </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ExtraButtons {\n /* override of popover internal stuff */\n .popover-trigger-button {\n width: auto;\n }\n\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag\n)\n\nconst ExtraButtons = {\n props: [ 'status' ],\n components: { Popover },\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n }\n }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=3a956a44\"\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=3a956a44&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 popover-class=\"popover-default status-popover\"\n :bound-to=\"{ x: 'container' }\"\n @show=\"enter\"\n >\n <template v-slot:trigger>\n <slot />\n </template>\n <template v-slot:content>\n <Status\n v-if=\"status\"\n :is-preview=\"true\"\n :statusoid=\"status\"\n :compact=\"true\"\n />\n <div\n v-else-if=\"error\"\n class=\"status-preview-no-content faint\"\n >\n {{ $t('status.status_unavailable') }}\n </div>\n <div\n v-else\n class=\"status-preview-no-content\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"2x\"\n />\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./status_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);\n box-shadow: var(--popupShadow);\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}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=fa4a5d94\"\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=fa4a5d94&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 v-slot:trigger>\n <slot />\n </template>\n <template v-slot: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>\n </div>\n </div>\n </template>\n <template v-else>\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n </template>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\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 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=3dc0c2d4\"\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=3dc0c2d4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"emoji-reactions\">\n <UserListPopover\n v-for=\"(reaction) in emojiReactions\"\n :key=\"reaction.name\"\n :users=\"accountsForEmoji[reaction.name]\"\n >\n <button\n class=\"emoji-reaction btn button-default\"\n :class=\"{ 'picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n @click=\"emojiOnClick(reaction.name, $event)\"\n @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n >\n <span\n v-if=\"reaction.url !== null\"\n >\n <img\n :src=\"reaction.url\"\n :title=\"reaction.name\"\n class=\"reaction-emoji\"\n width=\"2.55em\"\n >\n {{ reaction.count }}\n </span>\n <span v-else>\n <span class=\"reaction-emoji unicode-emoji\">\n {{ reaction.name }}\n </span>\n <span>{{ reaction.count }}</span>\n </span>\n </button>\n </UserListPopover>\n <a\n v-if=\"tooManyReactions\"\n class=\"emoji-reaction-expand faint\"\n href=\"javascript:void(0)\"\n @click=\"toggleShowAll\"\n >\n {{ showAll ? $t('general.show_less') : showMoreString }}\n </a>\n </div>\n</template>\n\n<script src=\"./emoji_reactions.js\" ></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-reactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n}\n\n.unicode-emoji {\n font-size: 210%;\n}\n\n.emoji-reaction {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n .reaction-emoji {\n width: 2.55em !important;\n margin-right: 0.25em;\n }\n &:focus {\n outline: none;\n }\n\n &.not-clickable {\n cursor: default;\n &:hover {\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n }\n }\n}\n\n.emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n &:hover {\n text-decoration: underline;\n }\n}\n\n.picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: calc(0.5em - 1px);\n}\n\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=1bf35779\"\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=1bf35779&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n const camelized = camelCase(name)\n const set = `controlledSet${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[set]) {\n obj[set](val)\n } else {\n obj[uncontrolledName] = val\n }\n}\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserCard,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent,\n RichContent,\n MentionLink,\n MentionsLine\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId',\n\n 'simpleTree',\n 'controlledThreadDisplayStatus',\n 'controlledToggleThreadDisplay',\n 'showOtherRepliesAsButton',\n\n 'controlledShowingTall',\n 'controlledToggleShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject',\n 'controlledReplying',\n 'controlledToggleReplying',\n 'controlledMediaPlaying',\n 'controlledSetMediaPlaying',\n 'dive'\n ],\n data () {\n return {\n uncontrolledReplying: false,\n unmuted: false,\n userExpanded: false,\n uncontrolledMediaPlaying: [],\n suspendable: true,\n error: null,\n headTailLinks: null\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n // FIXME Why user not found sometimes???\n return user ? user.statusnet_profile_url : 'NOT_FOUND'\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeterUser () { return this.statusoid.user },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n retweeterHtml () { return this.statusoid.user.name },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n rtBotStatus () {\n return this.statusoid.user.bot\n },\n botStatus () {\n return this.status.user.bot\n },\n botIndicator () {\n return this.botStatus && !this.hideBotIndication\n },\n rtBotIndicator () {\n return this.rtBotStatus && !this.hideBotIndication\n },\n mentionsLine () {\n if (!this.headTailLinks) return []\n const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n return this.status.attentions.filter(attn => {\n // no reply user\n return attn.id !== this.status.in_reply_to_user_id &&\n // no self-replies\n attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n // don't include if mentions is written\n !writtenSet.has(attn.statusnet_profile_url)\n }).map(attn => ({\n url: attn.statusnet_profile_url,\n content: attn.screen_name,\n userId: attn.id\n }))\n },\n hasMentionsLine () {\n return this.mentionsLine.length > 0\n },\n muted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const reasonsToMute = this.userIsMuted ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0 ||\n // bot status\n (this.muteBotStatuses && this.botStatus && !this.compact)\n return !this.unmuted && !this.shouldNotMute && reasonsToMute\n },\n userIsMuted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n return status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting)\n },\n shouldNotMute () {\n const { status } = this\n const { reblog } = status\n return (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n },\n hideMutedUsers () {\n return this.mergedConfig.hideMutedPosts\n },\n hideMutedThreads () {\n return this.mergedConfig.hideMutedThreads\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideWordFilteredPosts () {\n return this.mergedConfig.hideWordFilteredPosts\n },\n hideStatus () {\n return (!this.shouldNotMute) && (\n (this.muted && this.hideFilteredStatuses) ||\n (this.userIsMuted && this.hideMutedUsers) ||\n (this.status.thread_muted && this.hideMutedThreads) ||\n (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n )\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n muteBotStatuses () {\n return this.mergedConfig.muteBotStatuses\n },\n hideBotIndication () {\n return this.mergedConfig.hideBotIndication\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n },\n inThreadForest () {\n return !!this.controlledThreadDisplayStatus\n },\n threadShowing () {\n return this.controlledThreadDisplayStatus === 'showing'\n },\n visibilityLocalized () {\n return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n }\n },\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 case 'local':\n return 'users'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n controlledOrUncontrolledToggle(this, 'replying')\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n },\n removeMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n },\n setHeadTailLinks (headTailLinks) {\n this.headTailLinks = headTailLinks\n },\n toggleThreadDisplay () {\n this.controlledToggleThreadDisplay()\n },\n scrollIfHighlighted (highlightId) {\n const id = highlightId\n if (this.status.id === id) {\n let rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n }\n },\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=7387c01f\"\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 \"/home/hannah/personal/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-card\"\n :class=\"classes\"\n >\n <div\n :class=\"{ 'hide-bio': hideBio }\"\n :style=\"style\"\n class=\"background-image\"\n />\n <div class=\"panel-heading -flexible-height\">\n <div class=\"user-info\">\n <div class=\"container\">\n <a\n v-if=\"allowZoomingAvatar\"\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 <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 <RichContent\n :title=\"user.name\"\n class=\"user-name\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\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 </div>\n <div class=\"bottom-line\">\n <router-link\n class=\"user-screen-name\"\n :title=\"user.screen_name_ui\"\n :to=\"userProfileLink(user)\"\n >\n @{{ user.screen_name_ui }}\n </router-link>\n <template v-if=\"!hideBio\">\n <span\n v-if=\"user.deactivated\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.deactivated') }}\n </span>\n <span\n v-if=\"!!visibleRole\"\n class=\"alert user-role\"\n >\n {{ $t(`general.role.${visibleRole}`) }}\n </span>\n <span\n v-if=\"user.bot\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.bot') }}\n </span>\n </template>\n <span v-if=\"user.locked\">\n <FAIcon\n class=\"lock-icon\"\n icon=\"lock\"\n size=\"sm\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n class=\"dailyAvg\"\n >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n </div>\n </div>\n </div>\n <div class=\"user-meta\">\n <div\n v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n class=\"following\"\n >\n {{ $t('user_card.follows_you') }}\n </div>\n <div\n v-if=\"isOtherUser && (loggedIn || !switcher)\"\n class=\"highlighter\"\n >\n <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColorTx'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightText\"\n type=\"text\"\n >\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColor'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightCl\"\n type=\"color\"\n >\n {{ ' ' }}\n <Select\n :id=\"'userHighlightSel'+user.id\"\n v-model=\"userHighlightType\"\n class=\"userHighlightSel\"\n >\n <option value=\"disabled\">\n {{ $t('user_card.highlight.disabled') }}\n </option>\n <option value=\"solid\">\n {{ $t('user_card.highlight.solid') }}\n </option>\n <option value=\"striped\">\n {{ $t('user_card.highlight.striped') }}\n </option>\n <option value=\"side\">\n {{ $t('user_card.highlight.side') }}\n </option>\n </Select>\n </div>\n </div>\n <div\n v-if=\"loggedIn && isOtherUser\"\n class=\"user-interactions\"\n >\n <div class=\"btn-group\">\n <FollowButton\n :relationship=\"relationship\"\n :user=\"user\"\n />\n <template v-if=\"relationship.following\">\n <ProgressButton\n v-if=\"!relationship.subscribing\"\n class=\"btn button-default\"\n :click=\"subscribeUser\"\n :title=\"$t('user_card.subscribe')\"\n >\n <FAIcon icon=\"bell\" />\n </ProgressButton>\n <ProgressButton\n v-else\n class=\"btn button-default toggled\"\n :click=\"unsubscribeUser\"\n :title=\"$t('user_card.unsubscribe')\"\n >\n <FALayers>\n <FAIcon\n icon=\"rss\"\n transform=\"left-5 shrink-6 up-3 rotate-20\"\n flip=\"horizontal\"\n />\n <FAIcon\n icon=\"rss\"\n transform=\"right-5 shrink-6 up-3 rotate-20\"\n />\n <FAIcon icon=\"bell\" />\n </FALayers>\n </ProgressButton>\n </template>\n </div>\n <div>\n <button\n v-if=\"relationship.muting\"\n class=\"btn button-default btn-block toggled\"\n :disabled=\"user.deactivated\"\n @click=\"unmuteUser\"\n >\n {{ $t('user_card.muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"muteUser\"\n >\n {{ $t('user_card.mute') }}\n </button>\n </div>\n <div>\n <button\n v-if=\"relationship.domain_blocking\"\n class=\"btn button-default btn-block toggled\"\n @click=\"unmuteDomain\"\n >\n {{ $t('user_card.domain_muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n @click=\"muteDomain\"\n >\n {{ $t('user_card.mute_domain') }}\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=\"loggedIn.role === "admin"\"\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 </div>\n </div>\n <div\n v-if=\"!hideBio\"\n class=\"panel-body\"\n >\n <div\n v-if=\"!mergedConfig.hideUserStats && switcher\"\n class=\"user-counts\"\n >\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('statuses')\"\n >\n <h5>{{ $t('user_card.statuses') }}</h5>\n <span>{{ user.statuses_count }} <br></span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('friends')\"\n >\n <h5>{{ $t('user_card.followees') }}</h5>\n <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('followers')\"\n >\n <h5>{{ $t('user_card.followers') }}</h5>\n <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n </div>\n </div>\n <RichContent\n v-if=\"!hideBio\"\n class=\"user-card-bio\"\n :html=\"user.description_html\"\n :emoji=\"user.emoji\"\n :handle-links=\"true\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n <div>\n <Popover\n trigger=\"click\"\n class=\"moderation-tools-popover\"\n placement=\"bottom\"\n :offset=\"{ y: 5 }\"\n @show=\"setToggled(true)\"\n @close=\"setToggled(false)\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <span v-if=\"user.is_local\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight("admin")\"\n >\n {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight("moderator")\"\n >\n {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </span>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleActivationStatus()\"\n >\n {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"deleteUserDialog(true)\"\n >\n {{ $t('user_card.admin_menu.delete_account') }}\n </button>\n <div\n v-if=\"hasTagPolicy\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <span v-if=\"hasTagPolicy\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_NSFW)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n />\n {{ $t('user_card.admin_menu.force_nsfw') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.STRIP_MEDIA)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n />\n {{ $t('user_card.admin_menu.strip_media') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n />\n {{ $t('user_card.admin_menu.force_unlisted') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.SANDBOX)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n />\n {{ $t('user_card.admin_menu.sandbox') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_any_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.QUARANTINE)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n />\n {{ $t('user_card.admin_menu.quarantine') }}\n </button>\n </span>\n </div>\n </template>\n <template v-slot: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 v-slot:header>\n {{ $t('user_card.admin_menu.delete_user') }}\n </template>\n <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n <template v-slot:footer>\n <button\n class=\"btn button-default\"\n @click=\"deleteUserDialog(false)\"\n >\n {{ $t('general.cancel') }}\n </button>\n <button\n class=\"btn button-default danger\"\n @click=\"deleteUser()\"\n >\n {{ $t('user_card.admin_menu.delete_user') }}\n </button>\n </template>\n </DialogModal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.moderation-tools-popover {\n height: 100%;\n .trigger {\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,i {\n font-size: 0.8em;\n }\n}\n</style>\n","<template>\n <span\n :class=\"{ 'dark-overlay': darkOverlay }\"\n @click.self.stop=\"onCancel()\"\n >\n <div\n class=\"dialog-modal panel panel-default\"\n @click.stop=\"\"\n >\n <div class=\"panel-heading dialog-modal-heading\">\n <div class=\"title\">\n <slot name=\"header\" />\n </div>\n </div>\n <div class=\"dialog-modal-content\">\n <slot name=\"default\" />\n </div>\n <div class=\"dialog-modal-footer user-interactions panel-footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgba(27,31,35,.5);\n z-index: 99;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 999;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: .5em .5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: .5rem;\n }\n }\n}\n\n</style>\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=202a26c4\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n hasTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=0ae1f97e\"\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=0ae1f97e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 v-slot:content>\n <div class=\"dropdown-menu\">\n <template v-if=\"relationship.following\">\n <button\n v-if=\"relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"hideRepeats\"\n >\n {{ $t('user_card.hide_repeats') }}\n </button>\n <button\n v-if=\"!relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"showRepeats\"\n >\n {{ $t('user_card.show_repeats') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </template>\n <button\n v-if=\"relationship.blocking\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"unblockUser\"\n >\n {{ $t('user_card.unblock') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"blockUser\"\n >\n {{ $t('user_card.block') }}\n </button>\n <button\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"reportUser\"\n >\n {{ $t('user_card.report') }}\n </button>\n <button\n v-if=\"pleromaChatMessagesAvailable\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"openChat\"\n >\n {{ $t('user_card.message') }}\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled ellipsis-button\">\n <FAIcon\n class=\"icon\"\n icon=\"ellipsis-v\"\n />\n </button>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton,\n Popover\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n })\n }\n },\n computed: {\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=cbff36f6\"\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=cbff36f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport Select from '../select/select.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit\n)\n\nexport default {\n props: [\n 'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n return {\n backgroundImage: [\n `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton,\n Select,\n RichContent\n },\n methods: {\n refetchRelationship () {\n return this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n muteUser () {\n this.$store.dispatch('muteUser', this.user.id)\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n muteDomain () {\n this.$store.dispatch('muteDomain', this.user.screen_name.split('@')[1])\n .then(() => this.refetchRelationship())\n },\n unmuteDomain () {\n this.$store.dispatch('unmuteDomain', this.user.screen_name.split('@')[1])\n .then(() => this.refetchRelationship())\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrentMedia', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n }\n }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=3cf2819d\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n 'ja_easy': 'ja',\n 'zh_Hant': 'zh-HANT',\n 'zh': 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\n\nconst getLanguageName = (code) => {\n const specialLanguageNames = {\n 'ja_easy': 'やさしいにほんご',\n 'zh': '简体中文',\n 'zh_Hant': '繁體中文'\n }\n const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n const browserLocale = internalToBrowserLocale(code)\n return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code: code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n internalToBrowserLocale,\n internalToBackendLocale,\n languages,\n getLanguageName\n}\n\nexport default localeService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","\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","<template>\n <div\n class=\"StatusContent\"\n :class=\"{ '-compact': compact }\"\n >\n <slot name=\"header\" />\n <StatusBody\n :status=\"status\"\n :compact=\"compact\"\n :single-line=\"singleLine\"\n :showing-tall=\"showingTall\"\n :expanding-subject=\"expandingSubject\"\n :showing-long-subject=\"showingLongSubject\"\n :toggle-showing-tall=\"toggleShowingTall\"\n :toggle-expanding-subject=\"toggleExpandingSubject\"\n :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n @parseReady=\"$emit('parseReady', $event)\"\n >\n <div v-if=\"status.poll && status.poll.options && !compact\">\n <Poll\n :base-poll=\"status.poll\"\n :emoji=\"status.emojis\"\n />\n </div>\n\n <div v-else-if=\"status.poll && status.poll.options && compact\">\n <FAIcon\n icon=\"poll-h\"\n size=\"2x\"\n />\n </div>\n\n <gallery\n v-if=\"status.attachments.length !== 0\"\n class=\"attachments media-body\"\n :nsfw=\"nsfwClickthrough\"\n :attachments=\"status.attachments\"\n :limit=\"compact ? 1 : 0\"\n :size=\"attachmentSize\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n\n <div\n v-if=\"status.card && !noHeading && !compact\"\n class=\"link-preview media-body\"\n >\n <link-preview\n :card=\"status.card\"\n :size=\"attachmentSize\"\n :nsfw=\"nsfwClickthrough\"\n />\n </div>\n </StatusBody>\n <slot name=\"footer\" />\n </div>\n</template>\n\n<script src=\"./status_content.js\" ></script>\n<style lang=\"scss\">\n.StatusContent {\n flex: 1;\n min-width: 0;\n\n img, video {\n &.emoji {\n width: 50px;\n height: 50px;\n }\n }\n}\n</style>\n","<template>\n <div\n class=\"poll\"\n :class=\"containerClass\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div\n v-if=\"showResults\"\n :title=\"resultTitle(option)\"\n class=\"option-result\"\n >\n <div class=\"option-result-label\">\n <span class=\"result-percentage\">\n {{ percentageForOption(option.votes_count) }}%\n </span>\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </div>\n <div\n class=\"result-fill\"\n :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n />\n </div>\n <div\n v-else\n @click=\"activateOption(index)\"\n >\n <input\n v-if=\"poll.multiple\"\n type=\"checkbox\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <input\n v-else\n type=\"radio\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <label class=\"option-vote\">\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </label>\n </div>\n </div>\n <div class=\"footer faint\">\n <button\n v-if=\"!showResults\"\n class=\"btn button-default poll-vote-button\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"vote\"\n >\n {{ $t('polls.vote') }}\n </button>\n <div class=\"total\">\n <template v-if=\"typeof poll.voters_count === 'number'\">\n {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }} · \n </template>\n <template v-else>\n {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }} · \n </template>\n </div>\n <span>\n <i18n-t\n scope=\"global\"\n :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n >\n <Timeago\n :time=\"expiresAt\"\n :auto-update=\"60\"\n :now-threshold=\"0\"\n />\n </i18n-t>\n </span>\n </div>\n </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n .poll-option {\n margin: 0.75em 0.5em;\n }\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n .option-vote {\n display: flex;\n align-items: center;\n }\n input {\n width: 3.5em;\n }\n .footer {\n display: flex;\n align-items: center;\n }\n &.loading * {\n cursor: progress;\n }\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll', 'emoji'],\n components: {\n Timeago,\n RichContent\n },\n data () {\n return {\n loading: false,\n choices: []\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n unmounted () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=5e9dea28\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusBody\"\n :class=\"{ '-compact': compact }\"\n >\n <div class=\"body\">\n <div\n v-if=\"status.summary_raw_html\"\n class=\"summary-wrapper\"\n :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n >\n <RichContent\n class=\"media-body summary\"\n :html=\"status.summary_raw_html\"\n :emoji=\"status.emojis\"\n />\n <button\n v-show=\"longSubject && showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.hide_full_subject\") }}\n </button>\n <button\n v-show=\"longSubject && !showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.show_full_subject\") }}\n </button>\n </div>\n <div\n :class=\"{'-tall-status': hideTallStatus}\"\n class=\"text-wrapper\"\n >\n <button\n v-show=\"hideTallStatus\"\n class=\"button-unstyled -link tall-status-hider\"\n :class=\"{ '-focused': focused }\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <div\n v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n >\n <MFMContent\n v-if=\"renderMisskeyMarkdown && status.mfm_content\"\n class=\"RichContent text media-body mfm-post-content\"\n :status=\"status\"\n />\n <RichContent\n v-else\n :class=\"{ '-single-line': singleLine }\"\n class=\"text media-body\"\n :html=\"status.raw_html\"\n :emoji=\"status.emojis\"\n :handle-links=\"true\"\n :greentext=\"mergedConfig.greentext\"\n :attentions=\"status.attentions\"\n @parseReady=\"onParseReady\"\n />\n </div>\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 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 { 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 },\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 methods: {\n onClick () {\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 },\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 },\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 && this.mergedConfig.mentionLinkDisplay === 'short' && this.isRemote\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 { defineComponent, h } from 'vue'\nimport * as mfm from 'mfm-js'\nimport MentionLink from '../mention_link/mention_link.vue'\nimport mention_link from '../mention_link/mention_link'\n\nfunction concat (xss) {\n return ([]).concat(...xss)\n}\n\nexport const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'font', 'blur', 'rainbow', 'sparkle', 'rotate']\n\nexport default defineComponent({\n props: {\n status: {\n type: Object,\n required: true\n }\n },\n\n render () {\n if (!this.status) return null\n const ast = mfm.parse(this.status.mfm_content, { fnNameList: MFM_TAGS })\n const validTime = (t) => {\n if (t == null) return null\n return t.match(/^[0-9.]+s$/) ? t : null\n }\n\n const genEl = (ast) => concat(ast.map((token) => {\n switch (token.type) {\n case 'text': {\n const text = token.props.text.replace(/(\\r\\n|\\n|\\r)/g, '\\n')\n\n const res = []\n for (const t of text.split('\\n')) {\n res.push(h('br'))\n res.push(t)\n }\n res.shift()\n return res\n }\n\n case 'bold': {\n return [h('b', genEl(token.children))]\n }\n\n case 'strike': {\n return [h('del', genEl(token.children))]\n }\n\n case 'italic': {\n return h('i', {\n style: 'font-style: oblique;'\n }, genEl(token.children))\n }\n\n case 'fn': {\n // TODO: CSSを文字列で組み立てていくと token.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる\n let style\n switch (token.props.name) {\n case 'tada': {\n style = `font-size: 150%;` + 'animation: tada 1s linear infinite both;'\n break\n }\n case 'jelly': {\n const speed = validTime(token.props.args.speed) || '1s'\n style = `animation: mfm-rubberBand ${speed} linear infinite both;`\n break\n }\n case 'twitch': {\n const speed = validTime(token.props.args.speed) || '0.5s'\n style = `animation: mfm-twitch ${speed} ease infinite;`\n break\n }\n case 'shake': {\n const speed = validTime(token.props.args.speed) || '0.5s'\n style = `animation: mfm-shake ${speed} ease infinite;`\n break\n }\n case 'spin': {\n const direction =\n token.props.args.left ? 'reverse'\n : token.props.args.alternate ? 'alternate'\n : 'normal'\n const anime =\n token.props.args.x ? 'mfm-spinX'\n : token.props.args.y ? 'mfm-spinY'\n : 'mfm-spin'\n const speed = validTime(token.props.args.speed) || '1.5s'\n style = `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};`\n break\n }\n case 'jump': {\n style = 'animation: mfm-jump 0.75s linear infinite;'\n break\n }\n case 'bounce': {\n style = 'animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;'\n break\n }\n case 'flip': {\n const transform =\n (token.props.args.h && token.props.args.v) ? 'scale(-1, -1)'\n : token.props.args.v ? 'scaleY(-1)'\n : 'scaleX(-1)'\n style = `transform: ${transform};`\n break\n }\n case 'x2': {\n style = `font-size: 200%;`\n break\n }\n case 'x3': {\n style = `font-size: 400%;`\n break\n }\n case 'x4': {\n style = `font-size: 600%;`\n break\n }\n case 'font': {\n const family =\n token.props.args.serif ? 'serif'\n : token.props.args.monospace ? 'monospace'\n : token.props.args.cursive ? 'cursive'\n : token.props.args.fantasy ? 'fantasy'\n : token.props.args.emoji ? 'emoji'\n : token.props.args.math ? 'math'\n : null\n if (family) style = `font-family: ${family};`\n break\n }\n case 'blur': {\n return h('span', {\n class: '_mfm_blur_'\n }, genEl(token.children))\n }\n case 'rainbow': {\n style = 'animation: mfm-rainbow 1s linear infinite;'\n break\n }\n case 'sparkle': {\n return h(MkSparkle, {}, genEl(token.children))\n }\n case 'rotate': {\n const degrees = parseInt(token.props.args.deg) || '90'\n style = `transform: rotate(${degrees}deg); transform-origin: center center;`\n break\n }\n }\n if (style == null) {\n return h('span', {}, ['$[', token.props.name, ' ', ...genEl(token.children), ']'])\n } else {\n return h('span', {\n style: 'display: inline-block;' + style\n }, genEl(token.children))\n }\n }\n\n case 'small': {\n return [h('small', {\n style: 'opacity: 0.7;'\n }, genEl(token.children))]\n }\n\n case 'center': {\n return [h('div', {\n style: 'text-align:center;'\n }, genEl(token.children))]\n }\n\n case 'url': {\n return [h('a', {\n key: Math.random(),\n href: token.props.url,\n rel: 'nofollow noopener'\n }, token.props.url)]\n }\n\n case 'link': {\n console.log(token.props)\n return [h('a', {\n key: Math.random(),\n href: token.props.url,\n rel: 'nofollow noopener'\n }, genEl(token.children))]\n }\n\n case 'mention': {\n const user = this.status.attentions.find((mention) => `@${mention.screen_name}` === token.props.acct || mention.screen_name === token.props.username)\n if (user) {\n return [h(MentionLink, {\n url: user.statusnet_profile_url,\n content: token.props.acct,\n userScreenName: token.props.acct\n })]\n }\n return null\n }\n\n case 'hashtag': {\n return [h('a', {\n rel: 'noopener noreferrer',\n target: '_blank',\n key: token.props.hashtag,\n href: this.status.tags.find((hash) => hash.name === token.props.hashtag).url\n }, `#${token.props.hashtag}`)]\n }\n\n case 'blockCode': {\n return [h('pre', {\n key: Math.random(),\n lang: token.props.lang\n }, token.props.code)]\n }\n\n case 'inlineCode': {\n return [h('pre', {\n key: Math.random(),\n code: token.props.code,\n inline: true\n })]\n }\n\n case 'quote': {\n if (!this.nowrap) {\n return [h('div', {\n class: 'quote'\n }, genEl(token.children))]\n } else {\n return [h('span', {\n class: 'quote'\n }, genEl(token.children))]\n }\n }\n\n case 'emojiCode': {\n return [h('div', {\n class: 'still-image emoji img'\n },\n [h('img', {\n key: Math.random(),\n title: token.props.name,\n alt: token.props.name,\n src: this.status.emojis.find((emoji) => emoji.shortcode === token.props.name).static_url\n })]\n )]\n }\n\n case 'unicodeEmoji': {\n return token.props.emoji\n }\n\n case 'math': {\n return [h('pre', {\n key: Math.random(),\n code: token.props.code\n })]\n }\n\n case 'mathInline': {\n return [h('pre', {\n key: Math.random(),\n code: token.props.code,\n inline: true\n })]\n }\n\n default: {\n console.error('unrecognized ast type:', token.type)\n\n return []\n }\n }\n }))\n\n // Parse ast to DOM\n return h('span', genEl(ast))\n }\n})\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport MFMContent from 'src/components/mfm_content/mfm_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 const { renderMisskeyMarkdown } = this.$store.getters.mergedConfig\n return {\n postLength: this.status.text.length,\n parseReadyDone: false,\n renderMisskeyMarkdown\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 MFMContent\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=591ec5b8\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'compact',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'controlledShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleShowingTall',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject'\n ],\n data () {\n return {\n uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n uncontrolledShowingLongSubject: false,\n // not as computed because it sets the initial state which will be changed later\n uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n attachmentSize () {\n if (this.compact) {\n return 'small'\n } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n }\n return 'normal'\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview,\n StatusBody\n },\n methods: {\n toggleShowingTall () {\n controlledOrUncontrolledToggle(this, 'showingTall')\n },\n toggleExpandingSubject () {\n controlledOrUncontrolledToggle(this, 'expandingSubject')\n },\n toggleShowingLongSubject () {\n controlledOrUncontrolledToggle(this, 'showingLongSubject')\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=475fea91\"\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=475fea91&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n let r = { num: round(d / YEAR), key: 'time.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.months'\n }\n // Remove plural form when singular\n if (r.num === 1) r.key = r.key.slice(0, -1)\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n","<template>\n <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=\"src\"\n :alt=\"alt\"\n :title=\"alt\"\n :src=\"src\"\n :referrerpolicy=\"referrerpolicy\"\n @load=\"onLoad\"\n @error=\"onError\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: 'gif';\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgba(127, 127, 127, 0.5);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n</style>\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt',\n 'height',\n 'width'\n ],\n data () {\n return {\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n },\n 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 onLoad () {\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=4da90e4a\"\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=4da90e4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"checkbox\"\n :class=\"{ disabled, indeterminate }\"\n >\n <input\n type=\"checkbox\"\n :disabled=\"disabled\"\n :checked=\"modelValue\"\n :indeterminate=\"indeterminate\"\n @change=\"$emit('update:modelValue', $event.target.checked)\"\n >\n <i class=\"checkbox-indicator\" />\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'indeterminate',\n 'disabled'\n ]\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: '✓';\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0px 0px 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: .5;\n }\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=checkbox] {\n display: none;\n\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: '–';\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n }\n\n & > span {\n margin-left: .5em;\n }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=deb5bfe6\"\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=deb5bfe6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"Select input\"\n :class=\"{ disabled, unstyled }\"\n >\n <select\n :disabled=\"disabled\"\n :value=\"modelValue\"\n @change=\"$emit('update:modelValue', $event.target.value)\"\n >\n <slot />\n </select>\n {{ ' ' }}\n <FAIcon\n class=\"select-down-icon\"\n icon=\"chevron-down\"\n />\n </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 .2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown\n)\n\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'disabled',\n 'unstyled',\n 'kind'\n ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=099d3e32\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 :to=\"userProfileLink(user)\">\n <UserAvatar\n class=\"avatar\"\n :user=\"user\"\n @click.prevent=\"toggleUserExpanded\"\n />\n </router-link>\n <div\n v-if=\"userExpanded\"\n class=\"basic-user-card-expanded-content\"\n >\n <UserCard\n :user-id=\"user.id\"\n :rounded=\"true\"\n :bordered=\"true\"\n />\n </div>\n <div\n v-else\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 <router-link\n class=\"basic-user-card-screen-name\"\n :to=\"userProfileLink(user)\"\n >\n @{{ user.screen_name_ui }}\n </router-link>\n </div>\n <slot />\n </div>\n </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n &-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 UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.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 data () {\n return {\n userExpanded: false\n }\n },\n components: {\n UserCard,\n UserAvatar,\n RichContent\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=dd332bac\"\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=dd332bac&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n let array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","<template>\n <div\n ref=\"form\"\n class=\"post-status-form\"\n >\n <form\n autocomplete=\"off\"\n @submit.prevent\n @dragover.prevent=\"fileDrag\"\n >\n <div class=\"form-group\">\n <i18n-t\n v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n keypath=\"post_status.account_not_locked_warning\"\n tag=\"p\"\n class=\"visibility-notice\"\n scope=\"global\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openProfileTab\"\n >\n {{ $t('post_status.account_not_locked_warning_link') }}\n </button>\n </i18n-t>\n <p\n v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.public') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.private') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"newStatus.visibility === 'direct'\"\n class=\"visibility-notice\"\n >\n <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n </p>\n <div\n v-if=\"!disablePreview\"\n class=\"preview-heading faint\"\n >\n <a\n class=\"preview-toggle faint\"\n @click.stop.prevent=\"togglePreview\"\n >\n {{ $t('post_status.preview') }}\n <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n </a>\n <div\n v-show=\"previewLoading\"\n class=\"preview-spinner\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <div\n v-if=\"showPreview\"\n class=\"preview-container\"\n >\n <div\n v-if=\"!preview\"\n class=\"preview-status\"\n >\n {{ $t('general.loading') }}\n </div>\n <div\n v-else-if=\"preview.error\"\n class=\"preview-status preview-error\"\n >\n {{ preview.error }}\n </div>\n <StatusContent\n v-else\n :status=\"preview\"\n class=\"preview-status\"\n />\n </div>\n <EmojiInput\n v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n v-model=\"newStatus.spoilerText\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n class=\"form-control\"\n >\n <input\n v-model=\"newStatus.spoilerText\"\n type=\"text\"\n :placeholder=\"$t('post_status.content_warning')\"\n :disabled=\"posting && !optimisticPosting\"\n size=\"1\"\n class=\"form-post-subject\"\n >\n </EmojiInput>\n <EmojiInput\n ref=\"emoji-input\"\n v-model=\"newStatus.status\"\n :suggest=\"emojiUserSuggestor\"\n :placement=\"emojiPickerPlacement\"\n class=\"form-control main-input\"\n enable-emoji-picker\n hide-emoji-button\n :newline-on-ctrl-enter=\"submitOnEnter\"\n enable-sticker-picker\n @input=\"onEmojiInputInput\"\n @sticker-uploaded=\"addMediaFile\"\n @sticker-upload-failed=\"uploadFailed\"\n @shown=\"handleEmojiInputShow\"\n >\n <textarea\n ref=\"textarea\"\n v-model=\"newStatus.status\"\n :placeholder=\"placeholder || $t('post_status.default')\"\n rows=\"1\"\n cols=\"1\"\n :disabled=\"posting && !optimisticPosting\"\n class=\"form-post-body\"\n :class=\"{ 'scrollable-form': !!maxHeight }\"\n @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n @keydown.meta.enter=\"postStatus($event, newStatus)\"\n @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n @input=\"resize\"\n @compositionupdate=\"resize\"\n @paste=\"paste\"\n />\n <p\n v-if=\"hasStatusLengthLimit\"\n class=\"character-counter faint\"\n :class=\"{ error: isOverLengthLimit }\"\n >\n {{ charactersLeft }}\n </p>\n </EmojiInput>\n <div\n v-if=\"!disableScopeSelector\"\n class=\"visibility-tray\"\n >\n <scope-selector\n :show-all=\"showAllScopes\"\n :user-default=\"userDefaultScope\"\n :original-scope=\"copyMessageScope\"\n :initial-scope=\"newStatus.visibility\"\n :on-scope-change=\"changeVis\"\n />\n\n <div\n v-if=\"postFormats.length > 1\"\n class=\"text-format\"\n >\n <Select\n id=\"post-content-type\"\n v-model=\"newStatus.contentType\"\n class=\"form-control\"\n >\n <option\n v-for=\"postFormat in postFormats\"\n :key=\"postFormat\"\n :value=\"postFormat\"\n >\n {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n </option>\n </Select>\n </div>\n <div\n v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n class=\"text-format\"\n >\n <span class=\"only-format\">\n {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n </span>\n </div>\n </div>\n </div>\n <poll-form\n v-if=\"pollsAvailable\"\n ref=\"pollForm\"\n :visible=\"pollFormVisible\"\n @update-poll=\"setPoll\"\n />\n <div\n ref=\"bottom\"\n class=\"form-bottom\"\n >\n <div class=\"form-bottom-left\">\n <media-upload\n ref=\"mediaUpload\"\n class=\"media-upload-icon\"\n :drop-files=\"dropFiles\"\n :disabled=\"uploadFileLimitReached\"\n @uploading=\"startedUploadingFiles\"\n @uploaded=\"addMediaFile\"\n @upload-failed=\"uploadFailed\"\n @all-uploaded=\"finishedUploadingFiles\"\n />\n <button\n class=\"emoji-icon button-unstyled\"\n :title=\"$t('emoji.add_emoji')\"\n @click=\"showEmojiPicker\"\n >\n <FAIcon icon=\"smile-beam\" />\n </button>\n <button\n v-if=\"pollsAvailable\"\n class=\"poll-icon button-unstyled\"\n :class=\"{ selected: pollFormVisible }\"\n :title=\"$t('polls.add_poll')\"\n @click=\"togglePollForm\"\n >\n <FAIcon icon=\"poll-h\" />\n </button>\n </div>\n <button\n v-if=\"posting\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.posting') }}\n </button>\n <button\n v-else-if=\"isOverLengthLimit\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.post') }}\n </button>\n <!-- touchstart is used to keep the OSK at the same position after a message send -->\n <button\n v-else\n :disabled=\"uploadingFiles || disableSubmit\"\n class=\"btn button-default\"\n @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n @click.stop.prevent=\"postStatus($event, newStatus)\"\n >\n {{ $t('post_status.post') }}\n </button>\n </div>\n <div\n v-show=\"showDropIcon !== 'hide'\"\n :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n class=\"drop-indicator\"\n @dragleave=\"fileDragStop\"\n @drop.stop=\"fileDrop\"\n >\n <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n Error: {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <gallery\n v-if=\"newStatus.files && newStatus.files.length > 0\"\n class=\"attachments\"\n :grid=\"true\"\n :nsfw=\"false\"\n :attachments=\"newStatus.files\"\n :descriptions=\"newStatus.mediaDescriptions\"\n :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n :editable=\"true\"\n :edit-attachment=\"editAttachment\"\n :remove-attachment=\"removeMediaFile\"\n :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n <div\n v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n class=\"upload_settings\"\n >\n <Checkbox v-model=\"newStatus.nsfw\">\n {{ $t('post_status.attachments_sensitive') }}\n </Checkbox>\n </div>\n </form>\n </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n svg, i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .media-upload-icon, .poll-icon, .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected, &:hover {\n // needs to be specific to override icon default color\n svg, i, label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg, i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: .2em;\n margin-bottom: .5em;\n width: 18em;\n\n img, video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles',\n 'disabled'\n ],\n watch: {\n 'dropFiles': function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=8e180d3a\"\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=8e180d3a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"media-upload\"\n :class=\"{ disabled: disabled }\"\n :title=\"$t('tool_tip.media_upload')\"\n >\n <FAIcon\n v-if=\"uploading\"\n class=\"progress-icon\"\n icon=\"circle-notch\"\n spin\n />\n <FAIcon\n v-if=\"!uploading\"\n class=\"new-icon\"\n icon=\"upload\"\n />\n <input\n v-if=\"uploadReady\"\n class=\"hidden-input-file\"\n :disabled=\"disabled\"\n type=\"file\"\n multiple=\"true\"\n @change=\"change\"\n >\n </label>\n</template>\n\n<script src=\"./media_upload.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n .hidden-input-file {\n display: none;\n }\n}\n </style>\n","<template>\n <div\n v-if=\"visible\"\n class=\"poll-form\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div class=\"input-container\">\n <input\n :id=\"`poll-${index}`\"\n v-model=\"options[index]\"\n size=\"1\"\n class=\"poll-option-input\"\n type=\"text\"\n :placeholder=\"$t('polls.option')\"\n :maxlength=\"maxLength\"\n @change=\"updatePollToParent\"\n @keydown.enter.stop.prevent=\"nextOption(index)\"\n >\n </div>\n <button\n v-if=\"options.length > 2\"\n class=\"delete-option button-unstyled -hover-highlight\"\n @click=\"deleteOption(index)\"\n >\n <FAIcon icon=\"times\" />\n </button>\n </div>\n <button\n v-if=\"options.length < maxOptions\"\n class=\"add-option faint button-unstyled -hover-highlight\"\n @click=\"addOption\"\n >\n <FAIcon\n icon=\"plus\"\n size=\"sm\"\n />\n\n {{ $t(\"polls.add_option\") }}\n </button>\n <div class=\"poll-type-expiry\">\n <div\n class=\"poll-type\"\n :title=\"$t('polls.type')\"\n >\n <Select\n v-model=\"pollType\"\n class=\"poll-type-select\"\n unstyled=\"true\"\n @change=\"updatePollToParent\"\n >\n <option value=\"single\">\n {{ $t('polls.single_choice') }}\n </option>\n <option value=\"multiple\">\n {{ $t('polls.multiple_choices') }}\n </option>\n </Select>\n </div>\n <div\n class=\"poll-expiry\"\n :title=\"$t('polls.expiry')\"\n >\n <input\n v-model=\"expiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"minExpirationInCurrentUnit\"\n :max=\"maxExpirationInCurrentUnit\"\n @change=\"expiryAmountChange\"\n >\n {{ ' ' }}\n <Select\n v-model=\"expiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n @change=\"expiryAmountChange\"\n >\n <option\n v-for=\"unit in expiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $t(`time.${unit}_short`, ['']) }}\n </option>\n </Select>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n faTimes,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus\n)\n\nexport default {\n components: {\n Select\n },\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=21f5ba7b\"\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=21f5ba7b&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n emits: [\n 'posted',\n 'resize',\n 'mediaplay',\n 'mediapause'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Select,\n Attachment,\n StatusContent,\n Gallery\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault, sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n return {\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: {\n spoilerText: this.subject || '',\n status: statusText,\n sensitiveIfSubject,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n 'newStatus': {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n const { sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: (newStatus.nsfw || (sensitiveIfSubject && newStatus.spoilerText)),\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n 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 this.$refs['emoji-input'].resize()\n return\n }\n\n const formRef = this.$refs['form']\n const bottomRef = this.$refs['bottom']\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.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 this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n }\n }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=ae252da2\"\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=ae252da2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=\"usePlaceholder\"\n class=\"Attachment -placeholder button-unstyled\"\n :class=\"classNames\"\n @click=\"openModal\"\n >\n <a\n v-if=\"type !== 'html'\"\n class=\"placeholder\"\n target=\"_blank\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent\n >\n <FAIcon :icon=\"placeholderIconClass\" />\n <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n </a>\n <div\n v-if=\"edit || remove\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </button>\n <div\n v-else\n class=\"Attachment\"\n :class=\"classNames\"\n >\n <div\n v-show=\"!isEmpty\"\n class=\"attachment-wrapper\"\n >\n <a\n v-if=\"hidden\"\n class=\"image-container\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <img\n :key=\"nsfwImage\"\n class=\"nsfw\"\n :src=\"nsfwImage\"\n >\n <FAIcon\n v-if=\"type === 'video'\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </a>\n <div\n v-if=\"!hidden\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"type === 'flash' && flashLoaded\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.attachment_stop_flash')\"\n @click.prevent=\"stopFlash\"\n >\n <FAIcon icon=\"stop\" />\n </button>\n <button\n v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_description')\"\n @click.prevent=\"toggleDescription\"\n >\n <FAIcon icon=\"align-right\" />\n </button>\n <button\n v-if=\"!useModal && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_in_modal')\"\n @click.prevent=\"openModalForce\"\n >\n <FAIcon icon=\"search-plus\" />\n </button>\n <button\n v-if=\"nsfw && hideNsfwLocal\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.hide_attachment')\"\n @click.prevent=\"toggleHidden\"\n >\n <FAIcon icon=\"times\" />\n </button>\n <button\n v-if=\"shiftUp\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_up')\"\n @click.prevent=\"onShiftUp\"\n >\n <FAIcon icon=\"chevron-left\" />\n </button>\n <button\n v-if=\"shiftDn\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_down')\"\n @click.prevent=\"onShiftDn\"\n >\n <FAIcon icon=\"chevron-right\" />\n </button>\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.remove_attachment')\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n\n <a\n v-if=\"type === 'image' && (!hidden || preloadImage)\"\n class=\"image-container\"\n :class=\"{'-hidden': hidden && preloadImage }\"\n :href=\"attachment.url\"\n target=\"_blank\"\n @click.stop.prevent=\"openModal\"\n >\n <StillImage\n class=\"image\"\n :referrerpolicy=\"referrerpolicy\"\n :mimetype=\"attachment.mimetype\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n :image-load-handler=\"onImageLoad\"\n :alt=\"attachment.description\"\n />\n </a>\n\n <a\n v-if=\"type === 'unknown' && !hidden\"\n class=\"placeholder-container\"\n :href=\"attachment.url\"\n target=\"_blank\"\n >\n <FAIcon\n size=\"5x\"\n :icon=\"placeholderIconClass\"\n />\n <p>\n {{ localDescription }}\n </p>\n </a>\n\n <component\n :is=\"videoTag\"\n v-if=\"type === 'video' && !hidden\"\n class=\"video-container\"\n :class=\"{ 'button-unstyled': 'isModal' }\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <VideoAttachment\n class=\"video\"\n :attachment=\"attachment\"\n :controls=\"!useModal\"\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n <FAIcon\n v-if=\"useModal\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </component>\n\n <span\n v-if=\"type === 'audio' && !hidden\"\n class=\"audio-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <audio\n v-if=\"type === 'audio'\"\n :src=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n controls\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n </span>\n\n <div\n v-if=\"type === 'html' && attachment.oembed\"\n class=\"oembed-container\"\n @click.prevent=\"linkClicked\"\n >\n <div\n v-if=\"attachment.thumb_url\"\n class=\"image\"\n >\n <img :src=\"attachment.thumb_url\">\n </div>\n <div class=\"text\">\n <!-- eslint-disable vue/no-v-html -->\n <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n <div v-html=\"attachment.oembed.oembedHTML\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n\n <span\n v-if=\"type === 'flash' && !hidden\"\n class=\"flash-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <Flash\n ref=\"flash\"\n class=\"flash\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n @playerOpened=\"setFlashLoaded(true)\"\n @playerClosed=\"setFlashLoaded(false)\"\n />\n </span>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'description',\n 'hideDescription',\n 'nsfw',\n 'size',\n 'setMedia',\n 'remove',\n 'shiftUp',\n 'shiftDn',\n 'edit'\n ],\n data () {\n return {\n localDescription: this.description || this.attachment.description,\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false,\n flashLoaded: false,\n showDescription: false\n }\n },\n components: {\n Flash,\n StillImage,\n VideoAttachment\n },\n computed: {\n classNames () {\n return [\n {\n '-loading': this.loading,\n '-nsfw-placeholder': this.hidden,\n '-editable': this.edit !== undefined\n },\n '-type-' + this.type,\n this.size && '-size-' + this.size,\n `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n ]\n },\n usePlaceholder () {\n return this.size === 'hide'\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed)\n },\n useModal () {\n let modalTypes = []\n switch (this.size) {\n case 'hide':\n case 'small':\n modalTypes = ['image', 'video', 'audio', 'flash']\n break\n default:\n modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video', 'flash']\n : ['image']\n break\n }\n return modalTypes.includes(this.type)\n },\n videoTag () {\n return this.useModal ? 'button' : 'span'\n },\n ...mapGetters(['mergedConfig'])\n },\n watch: {\n localDescription (newVal) {\n this.onEdit(newVal)\n }\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n } else if (this.type === 'unknown') {\n window.open(this.attachment.url)\n }\n },\n openModalForce (event) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n },\n onEdit (event) {\n this.edit && this.edit(this.attachment, event)\n },\n onRemove () {\n this.remove && this.remove(this.attachment)\n },\n onShiftUp () {\n this.shiftUp && this.shiftUp(this.attachment)\n },\n onShiftDn () {\n this.shiftDn && this.shiftDn(this.attachment)\n },\n stopFlash () {\n this.$refs.flash.closePlayer()\n },\n setFlashLoaded (event) {\n this.flashLoaded = event\n },\n toggleDescription () {\n this.showDescription = !this.showDescription\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n }\n }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=1177e21f\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 {{ $t(relativeTime.key, [relativeTime.num]) }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n 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=4a007a5d\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"list\">\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=c1790f52\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n ar: () => import('./ar.json'),\n ca: () => import('./ca.json'),\n cs: () => import('./cs.json'),\n de: () => import('./de.json'),\n eo: () => import('./eo.json'),\n es: () => import('./es.json'),\n et: () => import('./et.json'),\n eu: () => import('./eu.json'),\n fi: () => import('./fi.json'),\n fr: () => import('./fr.json'),\n ga: () => import('./ga.json'),\n he: () => import('./he.json'),\n hu: () => import('./hu.json'),\n it: () => import('./it.json'),\n ja: () => import('./ja_pedantic.json'),\n ja_easy: () => import('./ja_easy.json'),\n ko: () => import('./ko.json'),\n nb: () => import('./nb.json'),\n nl: () => import('./nl.json'),\n oc: () => import('./oc.json'),\n pl: () => import('./pl.json'),\n pt: () => import('./pt.json'),\n ro: () => import('./ro.json'),\n ru: () => import('./ru.json'),\n te: () => import('./te.json'),\n uk: () => import('./uk.json'),\n zh: () => import('./zh.json'),\n zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n languages: ['en', ...Object.keys(loaders)],\n default: {\n en: require('./en.json').default\n },\n setLanguage: async (i18n, language) => {\n if (loaders[language]) {\n let messages = await loaders[language]()\n i18n.setLocaleMessage(language, messages.default)\n }\n i18n.locale = language\n }\n}\n\nexport default messages\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n },\n bodyScrollLock: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: findFirstUsable(this.slots())\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n } else {\n return this.active\n }\n },\n isActive () {\n return tabName => {\n const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n return this.$slots.default().findIndex(isWanted) === this.activeIndex\n }\n },\n settingsModalVisible () {\n return this.settingsModalState === 'visible'\n },\n ...mapState({\n settingsModalState: state => state.interface.settingsModalState\n })\n },\n beforeUpdate () {\n const currentSlot = this.slots()[this.active]\n if (!currentSlot.props) {\n this.active = findFirstUsable(this.slots())\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n // DO NOT put it to computed, it doesn't work (caching?)\n slots () {\n if (this.$slots.default()[0].type === Fragment) {\n return this.$slots.default()[0].children\n }\n return this.$slots.default()\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.slots()[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render () {\n const tabs = this.slots()\n .map((slot, index) => {\n const props = slot.props\n if (!props) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (props.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n <img src={props.image} title={props['image-tooltip']}/>\n {props.label ? '' : props.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n <span class=\"text\">\n {props.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.slots().map((slot, index) => {\n const props = slot.props\n if (!props) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (props.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{props.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div\n ref=\"contents\"\n class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n v-body-scroll-lock={this.bodyScrollLock}\n >\n {contents}\n </div>\n </div>\n )\n }\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","<template>\n <teleport\n :disabled=\"minimalMode || disableTeleport\"\n :to=\"teleportTarget\"\n >\n <div\n :class=\"{ minimal: minimalMode }\"\n class=\"Notifications\"\n >\n <div :class=\"mainClass\">\n <div\n v-if=\"!noHeading\"\n class=\"notifications-heading panel-heading -sticky\"\n >\n <div class=\"title\">\n {{ $t('notifications.notifications') }}\n <span\n v-if=\"unseenCount\"\n class=\"badge badge-notification unseen-count\"\n >{{ unseenCount }}</span>\n </div>\n <button\n v-if=\"unseenCount\"\n class=\"button-default read-button\"\n @click.prevent=\"markAsSeen\"\n >\n {{ $t('notifications.read') }}\n </button>\n <NotificationFilters />\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"notification in notificationsToDisplay\"\n :key=\"notification.id\"\n class=\"notification\"\n :class=\"{unseen: !minimalMode && !notification.seen}\"\n >\n <div class=\"notification-overlay\" />\n <notification :notification=\"notification\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <div\n v-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('notifications.no_more_notifications') }}\n </div>\n <button\n v-else-if=\"!loading\"\n class=\"button-unstyled -link -fullwidth\"\n @click.prevent=\"fetchOlderNotifications()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </div>\n </div>\n </div>\n </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n <Status\n v-if=\"notification.type === 'mention'\"\n class=\"Notification\"\n :compact=\"true\"\n :statusoid=\"notification.status\"\n />\n <div v-else>\n <div\n v-if=\"needMute && !unmuted\"\n class=\"Notification container -muted\"\n >\n <small>\n <router-link :to=\"userProfileLink\">\n {{ notification.from_profile.screen_name_ui }}\n </router-link>\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.stop.prevent.capture=\"toggleUserExpanded\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"notification.from_profile\"\n />\n </a>\n <div class=\"notification-right\">\n <UserCard\n v-if=\"userExpanded\"\n :user-id=\"getUser(notification).id\"\n :rounded=\"true\"\n :bordered=\"true\"\n />\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 !== null\"\n class=\"notification-reaction-emoji\"\n :src=\"notification.emoji_url\"\n :name=\"notification.emoji\"\n >\n <span\n v-else\n class=\"emoji-reaction-emoji\"\n >\n {{ notification.emoji }}\n </span>\n </i18n-t>\n </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=\"faint-link\"\n >\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </router-link>\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 @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 <router-link\n :to=\"userProfileLink\"\n class=\"follow-name\"\n >\n @{{ notification.from_profile.screen_name_ui }}\n </router-link>\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 <router-link :to=\"targetUserProfileLink\">\n @{{ notification.target.screen_name_ui }}\n </router-link>\n </div>\n <template v-else>\n <StatusContent\n class=\"faint\"\n :compact=\"true\"\n :status=\"notification.action\"\n />\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","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 RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling\n)\n\nconst Notification = {\n data () {\n return {\n userExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false\n }\n },\n props: [ 'notification' ],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status,\n RichContent\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=437c5ef8\"\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 \"/home/hannah/personal/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 v-slot:content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('polls')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n />{{ $t('settings.notification_visibility_polls') }}\n </button>\n </div>\n </template>\n <template v-slot: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\n<style lang=\"scss\">\n\n.NotificationFilters {\n align-self: stretch;\n\n > button {\n line-height: 100%;\n height: 100%;\n width: var(--__panel-heading-height-inner);\n text-align: center;\n\n svg {\n font-size: 1.2em;\n }\n }\n}\n\n</style>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=afbf2f10\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport \"./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array,\n // Disable teleporting (i.e. for /users/user/notifications)\n disableTeleport: Boolean\n },\n data () {\n return {\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount)\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n 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 notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n ...mapGetters(['unreadChatCount'])\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n }\n },\n methods: {\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=5c6b19b5\"\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 \"/home/hannah/personal/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=\"galleryContainer\"\n class=\"Gallery\"\n :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n >\n <div class=\"gallery-rows\">\n <div\n v-for=\"(row, rowIndex) in rows\"\n :key=\"rowIndex\"\n class=\"gallery-row\"\n :style=\"rowStyle(row)\"\n :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n >\n <div\n class=\"gallery-row-inner\"\n :class=\"{ '-grid': grid }\"\n >\n <Attachment\n v-for=\"(attachment, attachmentIndex) in row.items\"\n :key=\"attachment.id\"\n class=\"gallery-item\"\n :nsfw=\"nsfw\"\n :attachment=\"attachment\"\n :size=\"size\"\n :editable=\"editable\"\n :remove=\"removeAttachment\"\n :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n :edit=\"editAttachment\"\n :description=\"descriptions && descriptions[attachment.id]\"\n :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n :style=\"itemStyle(attachment.id, row.items)\"\n @setMedia=\"onMedia\"\n @naturalSizeLoad=\"onNaturalSizeLoad\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"tooManyAttachments\"\n class=\"many-attachments\"\n >\n <div class=\"many-attachments-text\">\n {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n </div>\n <div class=\"many-attachments-buttons\">\n <span\n v-if=\"!hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(true)\"\n >\n {{ $t(\"status.collapse_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(false)\"\n >\n {{ $t(\"status.show_all_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openGallery\"\n >\n {{ $t(\"status.open_gallery\") }}\n </button>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n\n .gallery-row {\n &.-grid,\n &.-minimal {\n height: auto;\n .gallery-row-inner {\n position: relative;\n }\n }\n }\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-content: stretch;\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-column-gap: 0.5em;\n grid-row-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n &:last-child {\n margin: 0;\n }\n }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'limitRows',\n 'descriptions',\n 'limit',\n 'nsfw',\n 'setMedia',\n 'size',\n 'editable',\n 'removeAttachment',\n 'shiftUpAttachment',\n 'shiftDnAttachment',\n 'editAttachment',\n 'grid'\n ],\n data () {\n return {\n sizes: {},\n hidingLong: true\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const attachments = this.limit > 0\n ? this.attachments.slice(0, this.limit)\n : this.attachments\n if (this.size === 'hide') {\n return attachments.map(item => ({ minimal: true, items: [item] }))\n }\n const rows = this.grid\n ? [{ grid: true, items: attachments }]\n : attachments.reduce((acc, attachment, i) => {\n if (attachment.mimetype.includes('audio')) {\n return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n }\n if (!(\n attachment.mimetype.includes('image') ||\n attachment.mimetype.includes('video') ||\n attachment.mimetype.includes('flash')\n )) {\n return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n }\n const maxPerRow = 3\n const attachmentsRemaining = this.attachments.length - i + 1\n const currentRow = acc[acc.length - 1].items\n currentRow.push(attachment)\n if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n return [...acc, { items: [] }]\n } else {\n return acc\n }\n }, [{ items: [] }]).filter(_ => _.items.length > 0)\n return rows\n },\n attachmentsDimensionalScore () {\n return this.rows.reduce((acc, row) => {\n let size = 0\n if (row.minimal) {\n size += 1 / 8\n } else if (row.audio) {\n size += 1 / 4\n } else {\n size += 1 / (row.items.length + 0.6)\n }\n return acc + size\n }, 0)\n },\n tooManyAttachments () {\n if (this.editable || this.size === 'small') {\n return false\n } else if (this.size === 'hide') {\n return this.attachments.length > 8\n } else {\n return this.attachmentsDimensionalScore > 1\n }\n }\n },\n methods: {\n onNaturalSizeLoad ({ id, width, height }) {\n set(this.sizes, id, { width, height })\n },\n rowStyle (row) {\n if (row.audio) {\n return { 'padding-bottom': '25%' } // fixed reduced height for audio\n } else if (!row.minimal && !row.grid) {\n return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n },\n toggleHidingLong (event) {\n this.hidingLong = event\n },\n openGallery () {\n this.$store.dispatch('setMedia', this.attachments)\n this.$store.dispatch('setCurrentMedia', this.attachments[0])\n },\n onMedia () {\n this.$store.dispatch('setMedia', this.attachments)\n }\n }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=2bf4ca36\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"MentionLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n v-if=\"!user\"\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n v-html=\"content\"\n /><!-- eslint-enable vue/no-v-html --><span\n v-if=\"user\"\n class=\"new\"\n :style=\"style\"\n :class=\"classnames\"\n >\n <a\n class=\"short button-unstyled\"\n :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n :href=\"url\"\n @click.prevent=\"onClick\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <span class=\"shortName\">@<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 />\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 v-if=\"shouldShowTooltip\"\n class=\"full popover-default\"\n :class=\"[highlightType]\"\n >\n <span\n class=\"userNameFull\"\n >\n <!-- eslint-disable vue/no-v-html -->\n @<span\n class=\"userName\"\n v-html=\"userName\"\n /><span\n class=\"serverName\"\n :class=\"{ '-faded': shouldFadeDomain }\"\n v-html=\"'@' + serverName\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n </span>\n </span>\n </span>\n</template>\n\n<script src=\"./mention_link.js\"/>\n\n<style lang=\"scss\" src=\"./mention_link.scss\"/>\n","import { render } from \"./mention_link.vue?vue&type=template&id=eeed6d12\"\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 \"/home/hannah/personal/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 >\n <MentionLink\n v-for=\"mention in extraMentions\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n />\n </span><button\n v-if=\"!expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('status.plus_more', { number: extraMentions.length }) }}\n </button><button\n v-if=\"expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('general.show_less') }}\n </button>\n </span>\n </span>\n</template>\n<script src=\"./mentions_line.js\" ></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n name: 'MentionsLine',\n props: {\n mentions: {\n required: true,\n type: Array\n }\n },\n data: () => ({ expanded: false }),\n components: {\n MentionLink\n },\n computed: {\n mentionsComputed () {\n return this.mentions.slice(0, MENTIONS_LIMIT)\n },\n extraMentions () {\n return this.mentions.slice(MENTIONS_LIMIT)\n },\n manyMentions () {\n return this.extraMentions.length > 0\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n toggleShowMore () {\n this.expanded = !this.expanded\n }\n }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=f231046a\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fileSizeFormat = (num) => {\n var exponent\n var unit\n var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n unit = units[exponent]\n return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args['withMuted'] = !hideMutedPosts\n\n args['timeline'] = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args['until'] = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\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, 20000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","const createFaviconService = () => {\n const favicons = []\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n nodes.forEach(favicon => {\n if (favicon) {\n const favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n const favimg = new Image()\n favimg.crossOrigin = 'anonymous'\n favimg.src = favicon.href\n const favcontext = favcanvas.getContext('2d')\n favicons.push({ favcanvas, favimg, favcontext, favicon })\n }\n })\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (favicons.length === 0) return\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n const drawFaviconBadge = () => {\n if (favicons.length === 0) return\n clearFaviconBadge()\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favcontext) return\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","<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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior',\n 'conversationDisplay', // tree | linear\n 'conversationOtherRepliesButton', // below | inside\n 'mentionLinkDisplay' // short | full_for_remote | full\n]\n\nexport const defaultState = {\n expertLevel: 0, // used to track which settings to show and hide\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n hideShoutbox: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n hideMutedThreads: undefined, // instance default\n hideWordFilteredPosts: undefined, // instance default\n muteBotStatuses: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n alwaysShowNewPostButton: false,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: true,\n replyVisibility: 'all',\n thirdColumnMode: 'notifications',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n chatMention: true,\n polls: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: true,\n sidebarRight: undefined, // instance default\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: true,\n disableStickyHeaders: false,\n showScrollbars: false,\n 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 sensitiveIfSubject: undefined,\n renderMisskeyMarkdown: undefined,\n conversationDisplay: undefined, // instance default\n conversationTreeAdvanced: undefined, // instance default\n conversationOtherRepliesButton: undefined, // instance default\n conversationTreeFadeAncestors: undefined, // instance default\n maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n // Do not override with undefined\n ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n state[name] = value\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n state.highlight[user] = { color: color || data.color, type: type || data.type }\n } else {\n delete state.highlight[user]\n }\n }\n },\n actions: {\n loadSettings ({ dispatch }, data) {\n const knownKeys = new Set(Object.keys(defaultState))\n const presentKeys = new Set(Object.keys(data))\n const intersection = new Set()\n for (let elem of presentKeys) {\n if (knownKeys.has(elem)) {\n intersection.add(elem)\n }\n }\n\n intersection.forEach(\n name => dispatch('setOption', { name, value: data[name] })\n )\n },\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n Cookies.set(BACKEND_LANGUAGE_COOKIE_NAME, localeService.internalToBackendLocale(value))\n break\n case 'thirdColumnMode':\n dispatch('setLayoutWidth', undefined)\n break\n }\n }\n }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && 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","export const newExporter = ({\n filename = 'data',\n getExportedObject\n}) => ({\n exportData () {\n const stringified = JSON.stringify(getExportedObject(), null, 2) // Pretty-print and indent with 2 spaces\n\n // Create an invisible link with a data url and simulate a click\n const e = document.createElement('a')\n e.setAttribute('download', `${filename}.json`)\n e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n e.style.display = 'none'\n\n document.body.appendChild(e)\n e.click()\n document.body.removeChild(e)\n }\n})\n\nexport const newImporter = ({\n onImport,\n onImportFailure,\n validator = () => true\n}) => ({\n importData () {\n const filePicker = document.createElement('input')\n filePicker.setAttribute('type', 'file')\n filePicker.setAttribute('accept', '.json')\n\n filePicker.addEventListener('change', event => {\n if (event.target.files[0]) {\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n try {\n const parsed = JSON.parse(target.result)\n const validationResult = validator(parsed)\n if (validationResult === true) {\n onImport(parsed)\n } else {\n onImportFailure({ validationResult })\n }\n } catch (error) {\n onImportFailure({ error })\n }\n }\n reader.readAsText(event.target.files[0])\n }\n })\n\n document.body.appendChild(filePicker)\n filePicker.click()\n document.body.removeChild(filePicker)\n }\n})\n","<template>\n <div class=\"Flash\">\n <div\n v-if=\"player === true || player === 'hidden'\"\n ref=\"container\"\n class=\"player\"\n :class=\"{ hidden: player === 'hidden' }\"\n />\n <button\n v-if=\"player !== true\"\n class=\"button-unstyled placeholder\"\n @click=\"openPlayer\"\n >\n <span\n v-if=\"player === 'hidden'\"\n class=\"label\"\n >\n {{ $t('general.loading') }}\n </span>\n <span\n v-if=\"player === 'error'\"\n class=\"label\"\n >\n {{ $t('general.flash_fail') }}\n </span>\n <span\n v-else\n class=\"label\"\n >\n <p>\n {{ $t('general.flash_content') }}\n </p>\n <p>\n <FAIcon icon=\"exclamation-triangle\" />\n {{ $t('general.flash_security') }}\n </p>\n </span>\n </button>\n </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: 'hidden';\n }\n}\n</style>\n","const createRuffleService = () => {\n let ruffleInstance = null\n\n const getRuffle = () => new Promise((resolve, reject) => {\n if (ruffleInstance) {\n resolve(ruffleInstance)\n return\n }\n // Ruffle needs these to be set before it's loaded\n // https://github.com/ruffle-rs/ruffle/issues/3952\n window.RufflePlayer = {}\n window.RufflePlayer.config = {\n polyfills: false,\n publicPath: '/static/ruffle'\n }\n\n // Currently it's seems like a better way of loading ruffle\n // because it needs the wasm publically accessible, but it needs path to it\n // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n const script = document.createElement('script')\n // see webpack config, using CopyPlugin to copy it from node_modules\n // provided via ruffle-mirror\n script.src = '/static/ruffle/ruffle.js'\n script.type = 'text/javascript'\n script.onerror = (e) => { reject(e) }\n script.onabort = (e) => { reject(e) }\n script.oncancel = (e) => { reject(e) }\n script.onload = () => {\n ruffleInstance = window.RufflePlayer\n resolve(ruffleInstance)\n }\n document.body.appendChild(script)\n })\n\n return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStop,\n faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faStop,\n faExclamationTriangle\n)\n\nconst Flash = {\n props: [ 'src' ],\n data () {\n return {\n player: false, // can be true, \"hidden\", false. hidden = element exists\n loaded: false,\n ruffleInstance: null\n }\n },\n methods: {\n openPlayer () {\n if (this.player) return // prevent double-loading, or re-loading on failure\n this.player = 'hidden'\n RuffleService.getRuffle().then((ruffle) => {\n const player = ruffle.newest().createPlayer()\n player.config = {\n letterbox: 'on'\n }\n const container = this.$refs.container\n container.appendChild(player)\n player.style.width = '100%'\n player.style.height = '100%'\n player.load(this.src).then(() => {\n this.player = true\n }).catch((e) => {\n console.error('Error loading ruffle', e)\n this.player = 'error'\n })\n this.ruffleInstance = player\n this.$emit('playerOpened')\n })\n },\n closePlayer () {\n this.ruffleInstance && this.ruffleInstance.remove()\n this.player = false\n this.$emit('playerClosed')\n }\n }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=0dec384a\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n data () {\n return {\n inProgress: false\n }\n },\n computed: {\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_cancel')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n },\n disabled () {\n return this.inProgress || this.user.deactivated\n }\n },\n methods: {\n onClick () {\n this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n }\n }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=2c877477\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: isPressed }\"\n :disabled=\"disabled\"\n :title=\"title\"\n @click=\"onClick\"\n >\n {{ label }}\n </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <video\n class=\"video\"\n preload=\"metadata\"\n :src=\"attachment.url\"\n :loop=\"loopVideo\"\n :controls=\"controls\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n playsinline\n @playing=\"onPlaying\"\n @pause=\"onPaused\"\n />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","<template>\n <div>\n <a\n class=\"link-preview-card\"\n :href=\"card.url\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <div\n v-if=\"useImage && imageLoaded\"\n class=\"card-image\"\n >\n <img :src=\"card.image\">\n </div>\n <div class=\"card-content\">\n <span class=\"card-host faint\">\n <span\n v-if=\"censored\"\n class=\"nsfw-alert alert warning\"\n >{{ $t('status.nsfw') }}</span>\n {{ card.provider_name }}\n </span>\n <h4 class=\"card-title\">{{ card.title }}</h4>\n <p\n v-if=\"useDescription\"\n class=\"card-description\"\n >{{ card.description }}</p>\n </div>\n </a>\n </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=03087feb\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"avatars\">\n <router-link\n v-for=\"user in slicedUsers\"\n :key=\"user.id\"\n :to=\"userProfileLink(user)\"\n class=\"avatars-item\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./avatar_list.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=4cea5bcf\"\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=4cea5bcf&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => input => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n .sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // An exact match always wins\n aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n // Prioritize custom emoji a lot\n aScore += a.imageUrl ? 100 : 0\n bScore += b.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n // Sort by length\n aScore -= a.displayText.length\n bScore -= b.displayText.length\n\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return bScore - aScore + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n displayText: screen_name_ui,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","<template>\n <div>\n <label for=\"interface-language-switcher\">\n {{ promptText }}\n </label>\n {{ ' ' }}\n <Select\n id=\"interface-language-switcher\"\n v-model=\"controlledLanguage\"\n >\n <option\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n :value=\"lang.code\"\n >\n {{ lang.name }}\n </option>\n </Select>\n </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n Select\n },\n props: {\n promptText: {\n type: String,\n required: true\n },\n language: {\n type: String,\n required: true\n },\n setLanguage: {\n type: Function,\n required: true\n }\n },\n computed: {\n languages () {\n return localeService.languages\n },\n\n controlledLanguage: {\n get: function () { return this.language },\n set: function (val) {\n this.setLanguage(val)\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n return localeService.getLanguageName(code)\n }\n }\n}\n</script>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=25be3710\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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 <button\n v-if=\"showLocal\"\n class=\"button-unstyled scope\"\n :class=\"css.local\"\n :title=\"$t('post_status.scope.local')\"\n type=\"button\"\n @click=\"changeVis('local')\"\n >\n <FAIcon\n icon=\"users\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ScopeSelector {\n\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showLocal () {\n return this.originalScope !== 'direct' && this.shouldShow('local')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' },\n local: { selected: this.currentScope === 'local' }\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=4ebab9b5\"\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=4ebab9b5&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n const params = {}\n set(params, path, value)\n return rootState\n .api\n .backendInteractor\n .updateProfile({ params })\n .then(result => {\n commit('addNewUsers', [result])\n commit('setCurrentUser', result)\n })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n const settings = {}\n set(settings, path, value)\n return rootState\n .api\n .backendInteractor\n .updateNotificationSettings({ settings })\n .then(result => {\n if (result.status === 'success') {\n commit('confirmServerSideOption', { name, value })\n } else {\n commit('confirmServerSideOption', { name, value: oldValue })\n }\n })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n 'defaultScope': 'source.privacy',\n 'defaultNSFW': 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n 'stripRichContent': {\n get: 'source.pleroma.no_rich_text',\n set: 'no_rich_text'\n },\n // Privacy\n 'locked': 'locked',\n 'acceptChatMessages': {\n get: 'pleroma.accepts_chat_messages',\n set: 'accepts_chat_messages'\n },\n 'allowFollowingMove': {\n get: 'pleroma.allow_following_move',\n set: 'allow_following_move'\n },\n 'discoverable': {\n get: 'source.pleroma.discoverable',\n set: 'discoverable'\n },\n 'hideFavorites': {\n get: 'pleroma.hide_favorites',\n set: 'hide_favorites'\n },\n 'hideFollowers': {\n get: 'pleroma.hide_followers',\n set: 'hide_followers'\n },\n 'hideFollows': {\n get: 'pleroma.hide_follows',\n set: 'hide_follows'\n },\n 'hideFollowersCount': {\n get: 'pleroma.hide_followers_count',\n set: 'hide_followers_count'\n },\n 'hideFollowsCount': {\n get: 'pleroma.hide_follows_count',\n set: 'hide_follows_count'\n },\n // NotificationSettingsAPIs\n 'webPushHideContents': {\n get: 'pleroma.notification_settings.hide_notification_contents',\n set: 'hide_notification_contents',\n api: notificationsApi\n },\n 'blockNotificationsFromStrangers': {\n get: 'pleroma.notification_settings.block_from_strangers',\n set: 'block_from_strangers',\n api: notificationsApi\n }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n state: { ...defaultState },\n mutations: {\n confirmServerSideOption (state, { name, value }) {\n set(state, name, value)\n },\n wipeServerSideOption (state, { name }) {\n set(state, name, null)\n },\n wipeAllServerSideOptions (state) {\n Object.keys(settingsMap).forEach(key => {\n set(state, key, null)\n })\n },\n // Set the settings based on their path location\n setCurrentUser (state, user) {\n Object.entries(settingsMap).forEach((map) => {\n const [name, value] = map\n const { get: path = value } = value\n set(state, name, get(user._original, path))\n })\n }\n },\n actions: {\n setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n const oldValue = get(state, name)\n const map = settingsMap[name]\n if (!map) throw new Error('Invalid server-side setting')\n const { set: path = map, api = defaultApi } = map\n commit('wipeServerSideOption', { name })\n\n api({ rootState, commit }, { path, value, oldValue })\n .catch((e) => {\n console.warn('Error setting server-side option:', e)\n commit('confirmServerSideOption', { name, value: oldValue })\n })\n },\n logout ({ commit }) {\n commit('wipeAllServerSideOptions')\n }\n }\n}\n\nexport default serverSideConfig\n","import 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","<template>\n <div\n ref=\"root\"\n v-click-outside=\"onClickOutside\"\n class=\"emoji-input\"\n :class=\"{ 'with-picker': !hideEmojiButton }\"\n >\n <slot />\n <template v-if=\"enableEmojiPicker\">\n <button\n v-if=\"!hideEmojiButton\"\n class=\"button-unstyled emoji-picker-icon\"\n type=\"button\"\n @click.prevent=\"togglePicker\"\n >\n <FAIcon :icon=\"['far', 'smile-beam']\" />\n </button>\n <EmojiPicker\n v-if=\"enableEmojiPicker\"\n ref=\"picker\"\n :class=\"{ hide: !showPicker }\"\n :enable-sticker-picker=\"enableStickerPicker\"\n class=\"emoji-picker-panel\"\n @emoji=\"insert\"\n @sticker-uploaded=\"onStickerUploaded\"\n @sticker-upload-failed=\"onStickerUploadFailed\"\n />\n </template>\n <div\n ref=\"panel\"\n class=\"autocomplete-panel\"\n :class=\"{ hide: !showSuggestions }\"\n >\n <div\n ref=\"panel-body\"\n class=\"autocomplete-panel-body\"\n >\n <div\n v-for=\"(suggestion, index) in suggestions\"\n :key=\"index\"\n class=\"autocomplete-item\"\n :class=\"{ highlighted: index === highlighted }\"\n @click.stop.prevent=\"onClick($event, suggestion)\"\n >\n <span class=\"image\">\n <img\n v-if=\"suggestion.img\"\n :src=\"suggestion.img\"\n >\n <span v-else>{{ suggestion.replacement }}</span>\n </span>\n <div class=\"label\">\n <span class=\"displayText\">{{ suggestion.displayText }}</span>\n <span class=\"detailText\">{{ suggestion.detailText }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: .2em .25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none\n }\n }\n\n .autocomplete {\n &-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none\n }\n\n &-body {\n margin: 0 0.5em 0 0.5em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5);\n box-shadow: var(--popupShadow);\n min-width: 75%;\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n }\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n }\n\n input, textarea {\n flex: 1 0 auto;\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 let result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","<template>\n <div class=\"emoji-picker panel panel-default panel-body\">\n <div class=\"heading\">\n <span class=\"emoji-tabs\">\n <span\n v-for=\"group in emojis\"\n :key=\"group.id\"\n class=\"emoji-tabs-item\"\n :class=\"{\n active: activeGroupView === group.id,\n disabled: group.emojis.length === 0\n }\"\n :title=\"group.text\"\n @click.prevent=\"highlight(group.id)\"\n >\n <FAIcon\n :icon=\"group.icon\"\n fixed-width\n />\n </span>\n </span>\n <span\n v-if=\"stickerPickerEnabled\"\n class=\"additional-tabs\"\n >\n <span\n class=\"stickers-tab-icon additional-tabs-item\"\n :class=\"{active: showingStickers}\"\n :title=\"$t('emoji.stickers')\"\n @click.prevent=\"toggleStickers\"\n >\n <FAIcon\n icon=\"sticky-note\"\n fixed-width\n />\n </span>\n </span>\n </div>\n <div class=\"content\">\n <div\n class=\"emoji-content\"\n :class=\"{hidden: showingStickers}\"\n >\n <div class=\"emoji-search\">\n <input\n v-model=\"keyword\"\n type=\"text\"\n class=\"form-control\"\n :placeholder=\"$t('emoji.search_emoji')\"\n >\n </div>\n <div\n ref=\"emoji-groups\"\n class=\"emoji-groups\"\n :class=\"groupsScrolledClass\"\n @scroll=\"onScroll\"\n >\n <div\n v-for=\"group in emojisView\"\n :key=\"group.id\"\n class=\"emoji-group\"\n >\n <h6\n :ref=\"'group-' + group.id\"\n class=\"emoji-group-title\"\n >\n {{ group.text }}\n </h6>\n <span\n v-for=\"emoji in group.emojis\"\n :key=\"group.id + emoji.displayText\"\n :title=\"emoji.displayText\"\n class=\"emoji-item\"\n @click.stop.prevent=\"onEmoji(emoji)\"\n >\n <span v-if=\"!emoji.imageUrl\">{{ emoji.replacement }}</span>\n <img\n v-else\n :src=\"emoji.imageUrl\"\n >\n </span>\n <span :ref=\"'group-end-' + group.id\" />\n </div>\n </div>\n <div class=\"keep-open\">\n <Checkbox v-model=\"keepOpen\">\n {{ $t('emoji.keep_open') }}\n </Checkbox>\n </div>\n </div>\n <div\n v-if=\"showingStickers\"\n class=\"stickers-content\"\n >\n <sticker-picker\n @uploaded=\"onStickerUploaded\"\n @upload-failed=\"onStickerUploadFailed\"\n />\n </div>\n </div>\n </div>\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 { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of list) {\n const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiBufferSlice: LOAD_EMOJI_BY,\n customEmojiTimeout: null,\n customEmojiLoadAllConfirmed: false\n }\n },\n components: {\n StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n Checkbox\n },\n methods: {\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (e) {\n const target = (e && e.target) || this.$refs['emoji-groups']\n this.updateScrolledClass(target)\n this.scrolledGroup(target)\n this.triggerLoadMore(target)\n },\n highlight (key) {\n const ref = this.$refs['group-' + key]\n const top = ref.offsetTop\n this.setShowStickers(false)\n this.activeGroup = key\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = top + 1\n })\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n triggerLoadMore (target) {\n const ref = this.$refs['group-end-custom']\n if (!ref) return\n const bottom = ref.offsetTop + ref.offsetHeight\n\n const scrollerBottom = target.scrollTop + target.clientHeight\n const scrollerTop = target.scrollTop\n const scrollerMax = target.scrollHeight\n\n // Loads more emoji when they come into view\n const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n // Always load when at the very top in case there's no scroll space yet\n const atTop = scrollerTop < 5\n // Don't load when looking at unicode category or at the very bottom\n const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n if (!bottomAboveViewport && (approachingBottom || atTop)) {\n this.loadEmoji()\n }\n },\n scrolledGroup (target) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojisView.forEach(group => {\n const ref = this.$refs['group-' + group.id]\n if (ref.offsetTop <= top) {\n this.activeGroup = group.id\n }\n })\n })\n },\n loadEmoji () {\n const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n if (allLoaded) {\n return\n }\n\n this.customEmojiBufferSlice += LOAD_EMOJI_BY\n },\n startEmojiLoad (forceUpdate = false) {\n if (!forceUpdate) {\n this.keyword = ''\n }\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = 0\n })\n const bufferSize = this.customEmojiBuffer.length\n const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n if (bufferPrefilledAll && !forceUpdate) {\n return\n }\n this.customEmojiBufferSlice = LOAD_EMOJI_BY\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n }\n },\n watch: {\n keyword () {\n this.customEmojiLoadAllConfirmed = false\n this.onScroll()\n this.startEmojiLoad(true)\n }\n },\n computed: {\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n filteredEmoji () {\n return filterByKeyword(\n this.$store.state.instance.customEmoji || [],\n this.keyword\n )\n },\n customEmojiBuffer () {\n return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n },\n emojis () {\n const standardEmojis = this.$store.state.instance.emoji || []\n const customEmojis = this.customEmojiBuffer\n\n return [\n {\n id: 'custom',\n text: this.$t('emoji.custom'),\n icon: 'smile-beam',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'box-open',\n emojis: filterByKeyword(standardEmojis, this.keyword)\n }\n ]\n },\n emojisView () {\n return this.emojis.filter(value => value.emojis.length > 0)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n }\n }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=50bb08b3\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n emits: ['update:modelValue', 'shown'],\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n modelValue: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n input: undefined,\n highlighted: 0,\n caret: 0,\n focused: false,\n blurTimeout: null,\n showPicker: false,\n temporarilyHideSuggestions: false,\n keepOpen: false,\n disableClickOutside: false,\n suggestions: []\n }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.showPicker &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return (this.wordAtCaret || {}).word || ''\n },\n wordAtCaret () {\n if (this.modelValue && this.caret) {\n const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n return word\n }\n }\n },\n mounted () {\n const { root } = this.$refs\n const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n if (!input) return\n this.input = input\n this.resize()\n input.addEventListener('blur', this.onBlur)\n input.addEventListener('focus', this.onFocus)\n input.addEventListener('paste', this.onPaste)\n input.addEventListener('keyup', this.onKeyUp)\n input.addEventListener('keydown', this.onKeyDown)\n input.addEventListener('click', this.onClickInput)\n input.addEventListener('transitionend', this.onTransition)\n input.addEventListener('input', this.onInput)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.removeEventListener('blur', this.onBlur)\n input.removeEventListener('focus', this.onFocus)\n input.removeEventListener('paste', this.onPaste)\n input.removeEventListener('keyup', this.onKeyUp)\n input.removeEventListener('keydown', this.onKeyDown)\n input.removeEventListener('click', this.onClickInput)\n input.removeEventListener('transitionend', this.onTransition)\n input.removeEventListener('input', this.onInput)\n }\n },\n watch: {\n showSuggestions: function (newValue) {\n this.$emit('shown', newValue)\n },\n textAtCaret: async function (newWord) {\n const firstchar = newWord.charAt(0)\n this.suggestions = []\n if (newWord === firstchar) return\n const matchedSuggestions = await this.suggest(newWord)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord) return\n if (matchedSuggestions.length <= 0) return\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n },\n suggestions: {\n handler (newValue) {\n this.$nextTick(this.resize)\n },\n deep: true\n }\n },\n methods: {\n focusPickerInput () {\n const pickerEl = this.$refs.picker.$el\n if (!pickerEl) return\n const pickerInput = pickerEl.querySelector('input')\n if (pickerInput) pickerInput.focus()\n },\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\n this.focusPickerInput()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(this.focusPickerInput)\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.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.keepOpen = keepOpen\n this.$emit('update:modelValue', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.focus()\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted -= 1\n if (this.highlighted < 0) {\n this.highlighted = this.suggestions.length - 1\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = 0\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs['picker'].$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onTransition (e) {\n this.resize()\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n this.resize()\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n if (!this.keepOpen) {\n this.showPicker = false\n }\n this.focused = true\n this.setCaret(e)\n this.resize()\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n this.resize()\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n this.resize()\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.blur()\n this.input.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.focus()\n }\n }\n\n this.showPicker = false\n this.resize()\n },\n onInput (e) {\n this.showPicker = false\n this.setCaret(e)\n this.resize()\n this.$emit('update:modelValue', e.target.value)\n },\n onClickInput (e) {\n this.showPicker = false\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n this.showPicker = false\n },\n onStickerUploaded (e) {\n this.showPicker = false\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.showPicker = false\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n },\n resize () {\n const panel = this.$refs.panel\n if (!panel) return\n const picker = this.$refs.picker.$el\n const panelBody = this.$refs['panel-body']\n const { offsetHeight, offsetTop } = this.input\n const offsetBottom = offsetTop + offsetHeight\n\n this.setPlacement(panelBody, panel, offsetBottom)\n this.setPlacement(picker, picker, offsetBottom)\n },\n setPlacement (container, target, offsetBottom) {\n if (!container || !target) return\n\n target.style.top = offsetBottom + 'px'\n target.style.bottom = 'auto'\n\n if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n target.style.top = 'auto'\n target.style.bottom = this.input.offsetHeight + 'px'\n }\n },\n overflowsBottom (el) {\n return el.getBoundingClientRect().bottom > window.innerHeight\n }\n }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=59b4cd40\"\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=59b4cd40&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","module.exports = __webpack_public_path__ + \"static/img/nsfw.ca95de9.png\";","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 \"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 \"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 \"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 \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n }\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n }\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])}\n },\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 \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n \"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 },\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 \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/x.misskeymarkdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MFM\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n \"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 \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible on other instances\"])}\n },\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])},\n \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Local - do not federate this post\"])}\n }\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])}\n },\n \"remote_user_resolver\": {\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n },\n \"settings\": {\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n }\n },\n \"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 \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current avatar\"])},\n \"current_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current mascot\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n }\n },\n \"profile_fields\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n \"mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastodon FE Mascot\"])},\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_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new mascot\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n \"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 \"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_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 \"sensitive_if_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically mark images as sensitive if a subject line is specified\"])},\n \"render_mfm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Render Misskey Markdown\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's cool use it. If it breaks refresh I guess?\"])},\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 \"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 \"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_show_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full user names as tooltip for remote users\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\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 \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n }\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n }\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n }\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n }\n },\n \"time\": {\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" day\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" days\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hour\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hours\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\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 \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minute\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minutes\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" month\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" months\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" second\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" seconds\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" week\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" weeks\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" year\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" years\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\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 },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n \"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 \"domain_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock domain\"])},\n \"mute_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block domain\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"delete_user_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you absolutely sure? This action cannot be undone.\"])}\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 },\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 },\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 },\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 \"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}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./login_form.vue?vue&type=style&index=0&id=9e104930&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_upload.vue?vue&type=style&index=0&id=8e180d3a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./scope_selector.vue?vue&type=style&index=0&id=4ebab9b5&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./checkbox.vue?vue&type=style&index=0&id=deb5bfe6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_input.vue?vue&type=style&index=0&id=59b4cd40&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll_form.vue?vue&type=style&index=0&id=21f5ba7b&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./still-image.vue?vue&type=style&index=0&id=4da90e4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./attachment.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mention_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mentions_line.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./hashtag_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status_body.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_content.vue?vue&type=style&index=0&id=475fea91&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_form.vue?vue&type=style&index=0&id=ae252da2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./popover.vue?vue&type=style&index=0&id=24420bf0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./moderation_tools.vue?vue&type=style&index=0&id=0ae1f97e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./account_actions.vue?vue&type=style&index=0&id=cbff36f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./user_card.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_panel.vue?vue&type=style&index=0&id=460aaa4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./nav_panel.vue?vue&type=style&index=0&id=fdfe5e92&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./features_panel.vue?vue&type=style&index=0&id=9d4c35f4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./who_to_follow_panel.vue?vue&type=style&index=0&id=b4d31272&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./shout_panel.vue?vue&type=style&index=0&id=3464bd9c&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./modal.vue?vue&type=style&index=0&id=1b320182&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_modal.vue?vue&type=style&index=0&id=85a073e6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./side_drawer.vue?vue&type=style&index=0&id=4a50df4d&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_post_status_button.vue?vue&type=style&index=0&id=9a586640&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./reply_button.vue?vue&type=style&index=0&id=56f413c0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./favorite_button.vue?vue&type=style&index=0&id=21f861d8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./react_button.vue?vue&type=style&index=0&id=0101edf8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./retweet_button.vue?vue&type=style&index=0&id=46fe49c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./extra_buttons.vue?vue&type=style&index=0&id=3a956a44&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./avatar_list.vue?vue&type=style&index=0&id=4cea5bcf&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_popover.vue?vue&type=style&index=0&id=fa4a5d94&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_list_popover.vue?vue&type=style&index=0&id=3dc0c2d4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_reactions.vue?vue&type=style&index=0&id=1bf35779&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notification.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_nav.vue?vue&type=style&index=0&id=cab8ee52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search_bar.vue?vue&type=style&index=0&id=105122b7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_reporting_modal.vue?vue&type=style&index=0&id=116c0e28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./global_notice_list.vue?vue&type=style&index=0&id=5e034d4c&lang=scss\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js!../node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js!../node_modules/sass-loader/lib/loader.js!./App.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./thread_tree.vue?vue&type=style&index=0&id=38969046&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./conversation.vue?vue&type=style&index=0&id=ee2f7a9a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_menu.vue?vue&type=style&index=0&id=0d348974&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./timeline.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_title.vue?vue&type=style&index=0&id=113f5355&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./basic_user_card.vue?vue&type=style&index=0&id=dd332bac&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list.vue?vue&type=style&index=0&id=598ab446&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_message.vue?vue&type=style&index=0&id=3566ce4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_card.vue?vue&type=style&index=0&id=4030f5aa&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_profile.vue?vue&type=style&index=0&id=56ed1f7e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search.vue?vue&type=style&index=0&id=52f57ebe&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./registration.vue?vue&type=style&index=0&id=c19f87d0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./terms_of_service_panel.vue?vue&type=style&index=0&id=687e38f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./staff_panel.vue?vue&type=style&index=0&id=31dce24a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n layoutType: 'normal',\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n state.settings.currentSaveStateNotice = { error: false, data: success }\n state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n } else {\n state.settings.currentSaveStateNotice = { error: true, errorData: error }\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setLayoutType (state, value) {\n state.layoutType = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLayoutWidth (state, value) {\n state.layoutWidth = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch, state },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n commit('pushGlobalNotice', notice)\n // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n // TODO: Generate UUID or something instead or relying on !== operator?\n const newNotice = state.globalNotices[state.globalNotices.length - 1]\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n }\n return newNotice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n // value is optional, assuming it was cached prior\n setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n let width = value\n if (value !== undefined) {\n commit('setLayoutWidth', value)\n } else {\n width = state.layoutWidth\n }\n const mobileLayout = width <= 800\n const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n const { thirdColumnMode } = rootGetters.mergedConfig\n if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n commit('setLayoutType', normalOrMobile)\n } else {\n const wideLayout = width >= 1300\n commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n }\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n greentext: false,\n useAtIcon: false,\n mentionLinkDisplay: 'short',\n mentionLinkShowTooltip: true,\n mentionLinkShowAvatar: false,\n mentionLinkFadeDomain: true,\n mentionLinkShowYous: false,\n mentionLinkBoldenYou: true,\n hideFilteredStatuses: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: false,\n hideMutedThreads: true,\n hideWordFilteredPosts: false,\n hidePostStats: false,\n hideBotIndication: false,\n hideSitename: false,\n hideUserStats: false,\n muteBotStatuses: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n sensitiveIfSubject: false,\n renderMisskeyMarkdown: false,\n conversationDisplay: 'linear',\n conversationTreeAdvanced: false,\n conversationOtherRepliesButton: 'below',\n conversationTreeFadeAncestors: false,\n maxDepthInThread: 6,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: [],\n emojiFetched: false,\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n state[name] = value\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n },\n instanceDomain (state) {\n return new URL(state.server).hostname\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'shoutAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const res = await window.fetch('/static/emoji.json')\n if (res.ok) {\n const values = await res.json()\n const emoji = Object.keys(values).map((key) => {\n return {\n displayText: key,\n imageUrl: false,\n replacement: values[key]\n }\n }).sort((a, b) => a.name > b.name ? 1 : -1)\n commit('setInstanceOption', { name: 'emoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n conversationsObject[conversationId] = [status]\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n 'status': (status) => {\n addStatus(status, showImmediately)\n },\n 'retweet': (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n 'favorite': (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n 'deletion': (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n 'follow': (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n 'default': (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors['default']\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n status['emoji_reactions'] = emojiReactions\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status['emoji_reactions'] = [...status.emoji_reactions, newReaction]\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status['emoji_reactions'] = status.emoji_reactions.filter(r => r.name !== emoji)\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args['until'] = until || timelineData.minId\n } else {\n if (since === undefined) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n }\n\n args['userId'] = userId\n args['tag'] = tag\n args['withMuted'] = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args['replyVisibility'] = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return promiseInterval(boundFetchAndUpdate, 20000)\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, 240000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n obj[item.id] = item\n if (item.screen_name && !item.screen_name.includes('@')) {\n obj[item.screen_name.toLowerCase()] = item\n }\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst fetchMascot = (store) => {\n return store.rootState.api.backendInteractor.fetchMascot()\n .then(({ url }) => store.commit('updateMascot', url))\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 let 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 mergeOrAdd(state.users, state.usersObject, user)\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n state.relationships[relationship.id] = relationship\n })\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n updateMascot (state, mascotUrl) {\n state.currentUser.mascot = mascotUrl\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n user['highlight'] = highlighted\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n const result = state.usersObject[query]\n // In case it's a screen_name, we can try searching case-insensitive\n if (!result && typeof query === 'string') {\n return state.usersObject[query.toLowerCase()]\n }\n return result\n },\n 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 signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchMascot (store) {\n return fetchMascot(store)\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) => { let deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n let rootState = store.rootState\n\n try {\n let data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n let errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n\n // Start fetching chats\n store.dispatch('startFetchingChats')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('fetchTimeline', 'friends', { since: null })\n store.dispatch('fetchNotifications', { since: null })\n store.dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n store.dispatch('fetchChats', { latest: true })\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments: attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, timeline, { ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers['followRequests']) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n let requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeShout', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","const shout = {\n state: {\n messages: [],\n channel: { state: '' },\n 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 userId: null,\n statuses: [],\n preTickedIds: [],\n modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.userId = userId\n state.statuses = statuses\n state.preTickedIds = preTickedIds\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n state.pollsObject[poll.id] = merge(existingPoll, poll)\n } else {\n state.pollsObject[poll.id] = poll\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue + 1\n } else {\n state.trackedPolls[pollId] = 1\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue - 1\n } else {\n state.trackedPolls[pollId] = 0\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId: chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage['fakeId']\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage['isTail'] = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object['isTail'] = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object['isHead'] = true\n object['messageChainId'] = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import { 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, 60000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n state.openedChats[chat.id] = chat\n\n if (!state.openedChatMessageServices[chat.id]) {\n state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n state.chatList.idStore[updatedChat.id] = updatedChat\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n state.chatList.idStore[updatedChat.id] = updatedChat\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","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 ? state : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n let value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(cloneDeep(state), paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","<template>\n <div\n id=\"app-loaded\"\n :style=\"bgStyle\"\n >\n <div\n id=\"app_bg_wrapper\"\n class=\"app-bg-wrapper\"\n />\n <MobileNav v-if=\"layoutType === 'mobile'\" />\n <DesktopNav v-else />\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 id=\"sidebar\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\">\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 <div id=\"main-scroller\" class=\"column main\" :class=\"{ '-full-height': isChats }\">\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 </div>\n <div id=\"notifs-column\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\"/>\n </div>\n <media-modal />\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 <SettingsModal />\n <div id=\"modal\" />\n <GlobalNoticeList />\n </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n <div 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 </div>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n</style>\n","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.login') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <template v-if=\"isPasswordAuth\">\n <div class=\"form-group\">\n <label for=\"username\">{{ $t('login.username') }}</label>\n <input\n id=\"username\"\n v-model=\"user.username\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n :placeholder=\"$t('login.placeholder')\"\n >\n </div>\n <div class=\"form-group\">\n <label for=\"password\">{{ $t('login.password') }}</label>\n <input\n id=\"password\"\n ref=\"passwordInput\"\n v-model=\"user.password\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div class=\"form-group\">\n <router-link :to=\"{name: 'password-reset'}\">\n {{ $t('password_reset.forgot_password') }}\n </router-link>\n </div>\n </template>\n\n <div\n v-if=\"isTokenAuth\"\n class=\"form-group\"\n >\n <p>{{ $t('login.description') }}</p>\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <router-link\n v-if=\"registrationOpen\"\n :to=\"{name: 'registration'}\"\n class=\"register\"\n >\n {{ $t('login.register') }}\n </router-link>\n </div>\n <button\n :disabled=\"loggingIn\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('login.login') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./login_form.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1.0em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height:24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n let 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=9e104930\"\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=9e104930&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.recovery') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireTOTP\"\n >\n {{ $t('login.enter_two_factor_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./recovery_form.js\" ></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=13ff0678\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.totp') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">\n {{ $t('login.authentication_code') }}\n </label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireRecovery\"\n >\n {{ $t('login.enter_recovery_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n size=\"lg\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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=460aaa4a\"\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=460aaa4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <ul>\n <li v-if=\"currentUser || !privateMode\">\n <button\n class=\"button-unstyled menu-item\"\n @click=\"toggleTimelines\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"stream\"\n />{{ $t(\"nav.timelines\") }}\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <div\n v-show=\"showTimelines\"\n class=\"timelines-background\"\n >\n <TimelineMenuContent class=\"timelines\" />\n </div>\n </li>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"bell\"\n />{{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser && pleromaChatMessagesAvailable\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n >\n <div\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </div>\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"comments\"\n />{{ $t(\"nav.chats\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser && currentUser.locked\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'friend-requests' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"user-plus\"\n />{{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li>\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'about' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"info-circle\"\n />{{ $t(\"nav.about\") }}\n </router-link>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./nav_panel.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .menu-item {\n display: block;\n box-sizing: border-box;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .fa-scale-110 {\n margin-right: 0.8em;\n }\n\n .badge {\n position: absolute;\n right: 0.6rem;\n top: 1.25em;\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n)\n\nconst TimelineMenuContent = {\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default TimelineMenuContent\n","import { render } from \"./timeline_menu_content.vue?vue&type=template&id=9e3b525a\"\nimport script from \"./timeline_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <ul>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'friends' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"home\"\n />{{ $t(\"nav.home_timeline\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser || !privateMode\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'public-timeline' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"users\"\n />{{ $t(\"nav.public_tl\") }}\n </router-link>\n </li>\n <li v-if=\"federating && (currentUser || !privateMode)\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'public-external-timeline' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"globe\"\n />{{ $t(\"nav.twkn\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'bookmarks'}\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"bookmark\"\n />{{ $t(\"nav.bookmarks\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'dms', params: { username: currentUser.screen_name } }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"envelope\"\n />{{ $t(\"nav.dms\") }}\n </router-link>\n </li>\n </ul>\n</template>\n\n<script src=\"./timeline_menu_content.js\" ></script>\n","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n)\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: {\n TimelineMenuContent\n },\n data () {\n return {\n showTimelines: false\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=fdfe5e92\"\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=fdfe5e92&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=5b01187b\"\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 \"/home/hannah/personal/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=9d4c35f4\"\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=9d4c35f4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"who-to-follow-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n </div>\n <div class=\"who-to-follow\">\n <p\n v-for=\"user in usersToFollow\"\n :key=\"user.id\"\n class=\"who-to-follow-items\"\n >\n <img :src=\"user.img\">\n <router-link :to=\"userProfileLink(user.id, user.name)\">\n {{ user.name }}\n </router-link><br>\n </p>\n <p class=\"who-to-follow-more\">\n <router-link :to=\"{ name: 'who-to-follow' }\">\n {{ $t('who_to_follow.more') }}\n </router-link>\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\" ></script>\n\n<style lang=\"scss\">\n .who-to-follow * {\n vertical-align: middle;\n }\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n .who-to-follow {\n padding: 0em 1em;\n margin: 0px;\n }\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0px;\n margin: 1em 0em;\n }\n .who-to-follow-more {\n padding: 0px;\n margin: 1em 0em;\n text-align: center;\n }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n let user = shuffled[index]\n let img = user.avatar || this.$store.state.instance.defaultAvatar\n let name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n var credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=b4d31272\"\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=b4d31272&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!collapsed || !floating\"\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading timeline-heading\"\n :class=\"{ 'shout-heading': floating }\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n {{ $t('shoutbox.title') }}\n <FAIcon\n v-if=\"floating\"\n icon=\"times\"\n class=\"close-icon\"\n />\n </div>\n </div>\n <div class=\"shout-window\">\n <div\n v-for=\"message in messages\"\n :key=\"message.id\"\n class=\"shout-message\"\n >\n <span class=\"shout-avatar\">\n <img :src=\"message.author.avatar\">\n </span>\n <div class=\"shout-content\">\n <router-link\n class=\"shout-name\"\n :to=\"userProfileLink(message.author)\"\n >\n {{ message.author.username }}\n </router-link>\n <br>\n <span class=\"shout-text\">\n {{ message.text }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"shout-input\">\n <textarea\n v-model=\"currentMessage\"\n class=\"shout-input-textarea\"\n rows=\"1\"\n @keyup.enter=\"submit(currentMessage)\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading -stub timeline-heading shout-heading\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n <FAIcon\n class=\"icon\"\n icon=\"bullhorn\"\n />\n {{ $t('shoutbox.title') }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: 1000;\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst shoutPanel = {\n props: [ 'floating' ],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.shout.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=3464bd9c\"\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=3464bd9c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n :is-open=\"modalActivated\"\n class=\"settings-modal\"\n :class=\"{ peek: modalPeeked }\"\n :no-background=\"modalPeeked\"\n >\n <div class=\"settings-modal-panel panel\">\n <div class=\"panel-heading\">\n <span class=\"title\">\n {{ $t('settings.settings') }}\n </span>\n <transition name=\"fade\">\n <div\n v-if=\"currentSaveStateNotice\"\n class=\"alert\"\n :class=\"{ transparent: !currentSaveStateNotice.error, error: currentSaveStateNotice.error}\"\n @click.prevent\n >\n {{ currentSaveStateNotice.error ? $t('settings.saving_err') : $t('settings.saving_ok') }}\n </div>\n </transition>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.peek')\"\n @click=\"peekModal\"\n >\n <FAIcon\n :icon=\"['far', 'window-minimize']\"\n fixed-width\n />\n </button>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n @click=\"closeModal\"\n >\n <FAIcon\n icon=\"times\"\n fixed-width\n />\n </button>\n </div>\n <div class=\"panel-body\">\n <SettingsModalContent v-if=\"modalOpenedOnce\" />\n </div>\n <div class=\"panel-footer settings-footer\">\n <Popover\n class=\"export\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5, x: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template v-slot:trigger>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n >\n <span>{{ $t(\"settings.file_export_import.backup_restore\") }}</span>\n {{ ' ' }}\n <FAIcon\n icon=\"chevron-down\"\n />\n </button>\n </template>\n <template v-slot:content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backup\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backupWithTheme\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings_theme\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"restore\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-upload\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.restore_settings\") }}</span>\n </button>\n </div>\n </template>\n </Popover>\n\n <Checkbox\n :model-value=\"!!expertLevel\"\n @update:modelValue=\"expertLevel = Number($event)\"\n >\n {{ $t(\"settings.expert_mode\") }}\n </Checkbox>\n <span\n id=\"unscrolled-content\"\n class=\"extra-content\"\n />\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./settings_modal.js\"></script>\n\n<style src=\"./settings_modal.scss\" lang=\"scss\"></style>\n","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n 'open': this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: 2000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgba(0, 0, 0, 0);\n }\n to {\n background-color: rgba(0, 0, 0, 0.5);\n }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=1b320182\"\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=1b320182&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=595215a2\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n emits: ['resetAsyncComponent'],\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n .btn {\n margin: .5em;\n padding: .5em 2em;\n }\n}\n</style>\n","import { render } from \"./async_component_error.vue?vue&type=template&id=26dcc164\"\nimport script from \"./async_component_error.vue?vue&type=script&lang=js\"\nexport * from \"./async_component_error.vue?vue&type=script&lang=js\"\n\nimport \"./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineAsyncComponent, shallowReactive, h } from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => defineAsyncComponent({\n loader: asyncComponent,\n ...options\n })\n\n const observe = shallowReactive({ c: asyncComponentFactory() })\n\n return {\n render () {\n // emit event resetAsyncComponent to reloading\n return h(observe.c(), {\n onResetAsyncComponent () {\n observe.c = asyncComponentFactory()\n }\n })\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n faTimes,\n faFileUpload,\n faFileDownload,\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n faTimes,\n faWindowMinimize,\n faFileUpload,\n faFileDownload,\n faChevronDown\n)\n\nconst SettingsModal = {\n data () {\n return {\n dataImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n dataThemeExporter: newExporter({\n filename: 'pleromafe_settings.full',\n getExportedObject: () => this.generateExport(true)\n }),\n dataExporter: newExporter({\n filename: 'pleromafe_settings',\n getExportedObject: () => this.generateExport()\n })\n }\n },\n components: {\n Modal,\n Popover,\n Checkbox,\n SettingsModalContent: getResettableAsyncComponent(\n () => import('./settings_modal_content.vue'),\n {\n loadingComponent: PanelLoading,\n errorComponent: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n },\n importValidator (data) {\n if (!Array.isArray(data._pleroma_settings_version)) {\n return {\n messageKey: 'settings.file_import_export.invalid_file'\n }\n }\n\n const [major, minor] = data._pleroma_settings_version\n\n if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_new',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_old',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n this.$store.dispatch('pushGlobalNotice', {\n level: 'warning',\n messageKey: 'settings.file_export_import.errors.file_slightly_new'\n })\n }\n\n return true\n },\n onImportFailure (result) {\n if (result.error) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n } else {\n this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n }\n },\n onImport (data) {\n if (data) { this.$store.dispatch('loadSettings', data) }\n },\n restore () {\n this.dataImporter.importData()\n },\n backup () {\n this.dataExporter.exportData()\n },\n backupWithTheme () {\n this.dataThemeExporter.exportData()\n },\n generateExport (theme = false) {\n const { config } = this.$store.state\n let sample = config\n if (!theme) {\n const ignoreList = new Set([\n 'customTheme',\n 'customThemeSource',\n 'colors'\n ])\n sample = Object.fromEntries(\n Object\n .entries(sample)\n .filter(([key]) => !ignoreList.has(key))\n )\n }\n const clone = cloneDeep(sample)\n clone._pleroma_settings_version = [\n PLEROMAFE_SETTINGS_MAJOR_VERSION,\n PLEROMAFE_SETTINGS_MINOR_VERSION\n ]\n return clone\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalOpenedOnce () {\n return this.$store.state.interface.settingsModalLoaded\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n },\n expertLevel: {\n get () {\n return this.$store.state.config.expertLevel > 0\n },\n set (value) {\n console.log(value)\n this.$store.dispatch('setOption', { name: 'expertLevel', value: value ? 1 : 0 })\n }\n }\n }\n}\n\nexport default SettingsModal\n","import { render } from \"./settings_modal.vue?vue&type=template&id=417af644\"\nimport script from \"./settings_modal.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"showing\"\n class=\"media-modal-view\"\n @backdropClicked=\"hideIfNotSwiped\"\n >\n <SwipeClick\n v-if=\"type === 'image'\"\n ref=\"swipeClick\"\n class=\"modal-image-container\"\n :direction=\"swipeDirection\"\n :threshold=\"swipeThreshold\"\n @preview-requested=\"handleSwipePreview\"\n @swipe-finished=\"handleSwipeEnd\"\n @swipeless-clicked=\"hide\"\n >\n <PinchZoom\n ref=\"pinchZoom\"\n class=\"modal-image-container-inner\"\n selector=\".modal-image\"\n reach-min-scale-strategy=\"reset\"\n stop-propagate-handled=\"stop-propgate-handled\"\n :allow-pan-min-scale=\"pinchZoomMinScale\"\n :min-scale=\"pinchZoomMinScale\"\n :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n >\n <img\n :class=\"{ loading }\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n @load=\"onImageLoaded\"\n >\n </PinchZoom>\n </SwipeClick>\n <VideoAttachment\n v-if=\"type === 'video'\"\n class=\"modal-image\"\n :attachment=\"currentMedia\"\n :controls=\"true\"\n />\n <audio\n v-if=\"type === 'audio'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n controls\n />\n <Flash\n v-if=\"type === 'flash'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n />\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.previous')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n @click.stop.prevent=\"goPrev\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-left\"\n />\n </button>\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.next')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n @click.stop.prevent=\"goNext\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-right\"\n />\n </button>\n <button\n class=\"modal-view-button modal-view-button-hide\"\n :title=\"$t('media_modal.hide')\"\n @click.stop.prevent=\"hide\"\n >\n <FAIcon\n class=\"button-icon\"\n icon=\"times\"\n />\n </button>\n\n <span\n v-if=\"description\"\n class=\"description\"\n >\n {{ description }}\n </span>\n <span\n class=\"counter\"\n >\n {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n </span>\n <span\n v-if=\"loading\"\n class=\"loading-spinner\"\n >\n <FAIcon\n spin\n icon=\"circle-notch\"\n size=\"5x\"\n />\n </span>\n </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.modal-view.media-modal-view {\n z-index: 9000;\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n overflow: hidden;\n}\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(.4,0,.22,1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #FFF;\n text-align: center;\n background-color: rgba(0,0,0,.3);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #FFF;\n text-align: center;\n background-color: rgba(0,0,0,.3);\n }\n\n &--prev {\n left: 0;\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n methods: {\n setTransform ({ scale, x, y }) {\n this.$el.setTransform({ scale, x, y })\n }\n },\n created () {\n // Make lint happy\n (() => PinchZoom)()\n }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <pinch-zoom\n class=\"pinch-zoom-parent\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <slot />\n </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n // swipePreviewCallback(offsets: Array[Number])\n // offsets: the offset vector which the underlying component should move, from the starting position\n // swipeEndCallback(sign: 0|-1|1)\n // sign: if the swipe does not meet the threshold, 0\n // if the swipe meets the threshold in the positive direction, 1\n // if the swipe meets the threshold in the negative direction, -1\n constructor ({\n direction,\n // swipeStartCallback\n swipePreviewCallback,\n swipeEndCallback,\n swipeCancelCallback,\n swipelessClickCallback,\n threshold = 30,\n perpendicularTolerance = 1.0,\n disableClickThreshold = 1\n }) {\n const nop = () => {}\n this.direction = direction\n this.swipePreviewCallback = swipePreviewCallback || nop\n this.swipeEndCallback = swipeEndCallback || nop\n this.swipeCancelCallback = swipeCancelCallback || nop\n this.swipelessClickCallback = swipelessClickCallback || nop\n this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n this.perpendicularTolerance = perpendicularTolerance\n this._reset()\n }\n\n _reset () {\n this._startPos = [0, 0]\n this._pointerId = -1\n this._swiping = false\n this._swiped = false\n this._preventNextClick = false\n }\n\n start (event) {\n // Only handle left click\n if (event.button !== BUTTON_LEFT) {\n return\n }\n\n this._startPos = pointerEventCoord(event)\n this._pointerId = event.pointerId\n this._swiping = true\n this._swiped = false\n }\n\n move (event) {\n if (this._swiping && this._pointerId === event.pointerId) {\n this._swiped = true\n\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n this.swipePreviewCallback(delta)\n }\n }\n\n cancel (event) {\n if (!this._swiping || this._pointerId !== event.pointerId) {\n return\n }\n\n this.swipeCancelCallback()\n }\n\n end (event) {\n if (!this._swiping) {\n return\n }\n\n if (this._pointerId !== event.pointerId) {\n return\n }\n\n this._swiping = false\n\n // movement too small\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n const sign = (() => {\n if (vectorLength(delta) < this.threshold()) {\n return 0\n }\n // movement is opposite from direction\n const isPositive = dotProduct(delta, this.direction) > 0\n\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, this.direction)\n const perpendicularDir = perpendicular(this.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * this.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) {\n return 0\n }\n\n return isPositive ? 1 : -1\n })()\n\n if (this._swiped) {\n this.swipeEndCallback(sign)\n }\n this._reset()\n // Only a mouse will fire click event when\n // the end point is far from the starting point\n // so for other kinds of pointers do not check\n // whether we have swiped\n if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n this._preventNextClick = true\n }\n }\n\n click (event) {\n if (!this._preventNextClick) {\n this.swipelessClickCallback()\n }\n this._reset()\n }\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe,\n SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n * direction: a vector that indicates the direction of the intended swipe\n * threshold: the minimum distance in pixels the swipe has moved on `direction'\n * for swipe-finished() to have a non-zero sign\n * perpendicularTolerance: see gesture_service\n *\n * Events:\n * preview-requested(offsets)\n * Emitted when the pointer has moved.\n * offsets: the offsets from the start of the swipe to the current cursor position\n *\n * swipe-canceled()\n * Emitted when the swipe has been canceled due to a pointercancel event.\n *\n * swipe-finished(sign: 0|-1|1)\n * Emitted when the swipe has finished.\n * sign: if the swipe does not meet the threshold, 0\n * if the swipe meets the threshold in the positive direction, 1\n * if the swipe meets the threshold in the negative direction, -1\n *\n * swipeless-clicked()\n * Emitted when there is a click without swipe.\n * This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n props: {\n direction: {\n type: Array\n },\n threshold: {\n type: Function,\n default: () => 30\n },\n perpendicularTolerance: {\n type: Number,\n default: 1.0\n }\n },\n methods: {\n handlePointerDown (event) {\n this.$gesture.start(event)\n },\n handlePointerMove (event) {\n this.$gesture.move(event)\n },\n handlePointerUp (event) {\n this.$gesture.end(event)\n },\n handlePointerCancel (event) {\n this.$gesture.cancel(event)\n },\n handleNativeClick (event) {\n this.$gesture.click(event)\n },\n preview (offsets) {\n this.$emit('preview-requested', offsets)\n },\n end (sign) {\n this.$emit('swipe-finished', sign)\n },\n click () {\n this.$emit('swipeless-clicked')\n },\n cancel () {\n this.$emit('swipe-canceled')\n }\n },\n created () {\n this.$gesture = new GestureService.SwipeAndClickGesture({\n direction: this.direction,\n threshold: this.threshold,\n perpendicularTolerance: this.perpendicularTolerance,\n swipePreviewCallback: this.preview,\n swipeEndCallback: this.end,\n swipeCancelCallback: this.cancel,\n swipelessClickCallback: this.click\n })\n }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-bind=\"$attrs\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerCancel\"\n @click=\"handleNativeClick\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n PinchZoom,\n SwipeClick,\n Modal,\n Flash\n },\n data () {\n return {\n loading: false,\n swipeDirection: GestureService.DIRECTION_LEFT,\n swipeThreshold: () => {\n const considerableMoveRatio = 1 / 4\n return window.innerWidth * considerableMoveRatio\n },\n pinchZoomMinScale: 1,\n pinchZoomScaleResetLimit: 1.2\n }\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n description () {\n return this.currentMedia.description\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? this.getType(this.currentMedia) : null\n }\n },\n methods: {\n getType (media) {\n return fileTypeService.fileType(media.mimetype)\n },\n hide () {\n // HACK: Closing immediately via a touch will cause the click\n // to be processed on the content below the overlay\n const transitionTime = 100 // ms\n setTimeout(() => {\n this.$store.dispatch('closeMediaViewer')\n }, transitionTime)\n },\n hideIfNotSwiped (event) {\n // If we have swiped over SwipeClick, do not trigger hide\n const comp = this.$refs.swipeClick\n if (!comp) {\n this.hide()\n } else {\n comp.$gesture.click(event)\n }\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n const newMedia = this.media[prevIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n const newMedia = this.media[nextIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n onImageLoaded () {\n this.loading = false\n },\n handleSwipePreview (offsets) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n },\n handleSwipeEnd (sign) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n if (sign > 0) {\n this.goNext()\n } else if (sign < 0) {\n this.goPrev()\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n unmounted () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=85a073e6\"\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=85a073e6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"side-drawer-container\"\n :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n >\n <div\n class=\"side-drawer-darken\"\n :class=\"{ 'side-drawer-darken-closed': closed}\"\n />\n <div\n class=\"side-drawer\"\n :class=\"{'side-drawer-closed': closed}\"\n @touchstart=\"touchStart\"\n @touchmove=\"touchMove\"\n >\n <div\n class=\"side-drawer-heading\"\n @click=\"toggleDrawer\"\n >\n <UserCard\n v-if=\"currentUser\"\n :user-id=\"currentUser.id\"\n :hide-bio=\"true\"\n />\n <div\n v-else\n class=\"side-drawer-logo-wrapper\"\n >\n <img :src=\"logo\">\n <span v-if=\"!hideSitename\">{{ sitename }}</span>\n </div>\n </div>\n <ul>\n <li\n v-if=\"!currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'login' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-in-alt\"\n /> {{ $t(\"login.login\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: timelinesRoute }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"home\"\n /> {{ $t(\"nav.timelines\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && pleromaChatMessagesAvailable\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n style=\"position: relative\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"comments\"\n /> {{ $t(\"nav.chats\") }}\n <span\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </span>\n </router-link>\n </li>\n </ul>\n <ul v-if=\"currentUser\">\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n /> {{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser.locked\"\n @click=\"toggleDrawer\"\n >\n <router-link to=\"/friend-requests\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"shout\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'shout-panel' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"shoutbox.title\") }}\n </router-link>\n </li>\n </ul>\n <ul>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'search' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n /> {{ $t(\"nav.search\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && suggestionsEnabled\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'who-to-follow' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.who_to_follow\") }}\n </router-link>\n </li>\n <li @click=\"toggleDrawer\">\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n /> {{ $t(\"settings.settings\") }}\n </button>\n </li>\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'about'}\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"info-circle\"\n /> {{ $t(\"nav.about\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && currentUser.role === 'admin'\"\n @click=\"toggleDrawer\"\n >\n <a\n href=\"/pleroma/admin/#/login-pleroma\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n /> {{ $t(\"nav.administration\") }}\n </a>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"doLogout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n /> {{ $t(\"login.logout\") }}\n </button>\n </li>\n </ul>\n </div>\n <div\n class=\"side-drawer-click-outside\"\n :class=\"{'side-drawer-click-outside-closed': closed}\"\n @click.stop.prevent=\"toggleDrawer\"\n />\n </div>\n</template>\n\n<script src=\"./side_drawer.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.side-drawer-container {\n position: fixed;\n z-index: 1000;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.side-drawer-darken-closed {\n background-color: rgba(0, 0, 0, 0);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition: 0.35s;\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a, button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nconst SideDrawer = {\n props: [ 'logout' ],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n 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 if (this.$store.state.interface.lastTimeline) {\n return this.$store.state.interface.lastTimeline\n }\n return this.currentUser ? 'friends' : 'public-timeline'\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=4a50df4d\"\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=4a50df4d&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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])\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=9a586640\"\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=9a586640&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 @click=\"openPostForm\"\n >\n <FAIcon icon=\"pen\" />\n </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3), 0px 4px 6px rgba(0, 0, 0, 0.3);\n z-index: 10;\n\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n</style>\n","<template>\n <div\n class=\"MobileNav\"\n >\n <nav\n id=\"nav\"\n class=\"mobile-nav\"\n @click=\"scrollToTop()\"\n >\n <div class=\"item\">\n <button\n class=\"button-unstyled mobile-nav-button\"\n @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\"\n class=\"alert-dot\"\n />\n </button>\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 <div class=\"item right\">\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled mobile-nav-button\"\n @click.stop.prevent=\"openMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n />\n <div\n v-if=\"unseenNotificationsCount\"\n class=\"alert-dot\"\n />\n </button>\n </div>\n </nav>\n <div\n v-if=\"currentUser\"\n class=\"mobile-notifications-drawer\"\n :class=\"{ '-closed': !notificationsOpen }\"\n @touchstart.stop=\"notificationsTouchStart\"\n @touchmove.stop=\"notificationsTouchMove\"\n >\n <div class=\"mobile-notifications-header\">\n <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n <a\n class=\"mobile-nav-button\"\n @click.stop.prevent=\"closeMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </a>\n </div>\n <div\n class=\"mobile-notifications\"\n id=\"mobile-notifications\"\n @scroll=\"onScroll\"\n >\n </div>\n </div>\n <SideDrawer\n ref=\"sideDrawer\"\n :logout=\"logout\"\n />\n </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobileNav {\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 .3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgba(0,0,0,.6);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: 1001;\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 1;\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0px 0px 4px rgba(0,0,0,.6);\n box-shadow: var(--topBarShadow);\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n .panel:after {\n border-radius: 0;\n }\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.closeMobileNotifications,\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications () {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n this.markNotificationsAsSeen()\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n markNotificationsAsSeen () {\n // this.$refs.notifications.markAsSeen()\n this.$store.dispatch('markNotificationsAsSeen')\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=cab8ee52\"\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=cab8ee52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <nav\n id=\"nav\"\n class=\"DesktopNav\"\n :class=\"{ '-logoLeft': logoLeft }\"\n @click=\"scrollToTop()\"\n >\n <div class=\"inner-nav\">\n <div class=\"item sitename\">\n <router-link\n v-if=\"!hideSitename\"\n class=\"site-name\"\n :to=\"{ name: 'root' }\"\n active-class=\"home\"\n >\n {{ sitename }}\n </router-link>\n </div>\n <router-link\n class=\"logo\"\n :to=\"{ name: 'root' }\"\n :style=\"logoBgStyle\"\n >\n <div\n class=\"mask\"\n :style=\"logoMaskStyle\"\n />\n <img\n :src=\"logo\"\n :style=\"logoStyle\"\n >\n </router-link>\n <div class=\"item right actions\">\n <search-bar\n v-if=\"currentUser || !privateMode\"\n @toggled=\"onSearchBarToggled\"\n @click.stop\n />\n <button\n class=\"button-unstyled nav-icon\"\n @click.stop=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n :title=\"$t('nav.preferences')\"\n />\n </button>\n <a\n v-if=\"currentUser && currentUser.role === 'admin'\"\n href=\"/pleroma/admin/#/login-pleroma\"\n class=\"nav-icon\"\n target=\"_blank\"\n @click.stop\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n :title=\"$t('nav.administration')\"\n />\n </a>\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled nav-icon\"\n @click.prevent=\"logout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n :title=\"$t('login.logout')\"\n />\n </button>\n </div>\n </div>\n </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","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=105122b7\"\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=105122b7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=\"SearchBar\"\n :class=\"{ '-expanded': !hidden }\"\n >\n <button\n v-if=\"hidden\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.search')\"\n type=\"button\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </button>\n <template v-else>\n <input\n id=\"search-bar-input\"\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-bar-input\"\n :placeholder=\"$t('nav.search')\"\n type=\"text\"\n @keyup.enter=\"find(searchTerm)\"\n >\n <button\n class=\"button-default search-button\"\n type=\"submit\"\n @click=\"find(searchTerm)\"\n >\n <FAIcon\n fixed-width\n icon=\"search\"\n />\n </button>\n <button\n class=\"button-unstyled cancel-search\"\n type=\"button\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n class=\"cancel-icon fa-scale-110 fa-old-padding\"\n />\n </button>\n </template>\n </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n</style>\n","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n )\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n 'visibility': this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n } : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n 'margin': `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask ? {} : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=a81d722a\"\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 \"/home/hannah/personal/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 <div class=\"title\">\n {{ $t('user_reporting.title', [user.screen_name_ui]) }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"user-reporting-panel-left\">\n <div>\n <p>{{ $t('user_reporting.add_comment_description') }}</p>\n <textarea\n v-model=\"comment\"\n class=\"form-control\"\n :placeholder=\"$t('user_reporting.additional_comments')\"\n rows=\"1\"\n @input=\"resize\"\n />\n </div>\n <div v-if=\"!user.is_local\">\n <p>{{ $t('user_reporting.forward_description') }}</p>\n <Checkbox v-model=\"forward\">\n {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n </Checkbox>\n </div>\n <div>\n <button\n class=\"btn button-default\"\n :disabled=\"processing\"\n @click=\"reportUser\"\n >\n {{ $t('user_reporting.submit') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('user_reporting.generic_error') }}\n </div>\n </div>\n </div>\n <div class=\"user-reporting-panel-right\">\n <List :items=\"statuses\">\n <template v-slot:item=\"{item}\">\n <div class=\"status-fadein user-reporting-panel-sitem\">\n <Status\n :in-conversation=\"false\"\n :focused=\"false\"\n :statusoid=\"item\"\n />\n <Checkbox\n :model-value=\"isChecked(item.id)\"\n @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n />\n </div>\n </template>\n </List>\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n</style>\n","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.$store.state.reports.modalActivated\n },\n userId () {\n return this.$store.state.reports.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.$store.state.reports.statuses\n },\n preTickedIds () {\n return this.$store.state.reports.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=116c0e28\"\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=116c0e28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isLoggedIn && !resettingForm\"\n :is-open=\"modalActivated\"\n class=\"post-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"post-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.new_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"global-notice-list\">\n <div\n v-for=\"(notice, index) in notices\"\n :key=\"index\"\n class=\"alert global-notice\"\n :class=\"{ ['global-' + notice.level]: true }\"\n >\n <div class=\"notice-message\">\n {{ $t(notice.messageKey, notice.messageArgs) }}\n </div>\n <button\n class=\"button-unstyled close-notice\"\n @click=\"closeNotice(notice)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.global-notice-list {\n position: fixed;\n top: 50px;\n width: 100%;\n pointer-events: none;\n z-index: 1001;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=5e034d4c\"\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=5e034d4c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\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,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n 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 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 newPostButtonShown () {\n if (this.isChats) return false\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\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=6df91bcb\"\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 \"/home/hannah/personal/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 v-if=\"!embedded\" />\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 <TimelineQuickSettings v-if=\"!embedded\" />\n </div>\n <div :class=\"classes.body\">\n <div\n ref=\"timeline\"\n class=\"timeline\"\n >\n <conversation\n v-for=\"statusId in filteredPinnedStatusIds\"\n :key=\"statusId + '-pinned'\"\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 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 :to=\"footerSlipgate\" :disabled=\"!embedded || !footerSlipgate\">\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 </div>\n <div class=\"conversation-body panel-body\">\n <div\n v-if=\"isTreeView\"\n class=\"thread-body\"\n >\n <div\n v-if=\"shouldShowAllConversationButton\"\n class=\"conversation-dive-to-top-level-box\"\n >\n <i18n-t\n keypath=\"status.show_all_conversation_with_icon\"\n tag=\"button\"\n class=\"button-unstyled -link\"\n @click.prevent=\"diveToTopLevel\"\n scope=\"global\"\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 <div\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 </div>\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 <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 </div>\n </div>\n </div>\n <div\n v-else\n :style=\"hiddenStyle\"\n />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--border, $fallback--border);\n border-radius: 0;\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--border, $fallback--border);\n border-radius: 0;\n /* Make the button stretch along the whole row */\n &, &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &:last-child .conversation-status,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left-width: 4px;\n border-left-style: solid;\n border-left-color: $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n</style>\n","<template>\n <div 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 </div>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleRight\n)\n\nconst ThreadTree = {\n components: {\n Status\n },\n name: 'ThreadTree',\n props: {\n depth: Number,\n status: Object,\n inProfile: Boolean,\n conversation: Array,\n collapsable: Boolean,\n isExpanded: Boolean,\n pinnedStatusIdsObject: Object,\n profileUserId: String,\n\n focused: Function,\n highlight: String,\n getReplies: Function,\n setHighlight: Function,\n toggleExpanded: Function,\n\n simple: Boolean,\n // to control display of the whole thread forest\n toggleThreadDisplay: Function,\n threadDisplayStatus: Object,\n showThreadRecursively: Function,\n totalReplyCount: Object,\n totalReplyDepth: Object,\n statusContentProperties: Object,\n setStatusContentProperty: Function,\n toggleStatusContentProperty: Function,\n dive: Function\n },\n computed: {\n suspendable () {\n const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n if (this.$refs.childComponent) {\n return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n }\n return selfSuspendable\n },\n reverseLookupTable () {\n return this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n },\n currentReplies () {\n return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n },\n threadShowing () {\n return this.threadDisplayStatus[this.status.id] === 'showing'\n },\n currentProp () {\n return this.statusContentProperties[this.status.id]\n }\n },\n methods: {\n statusById (id) {\n return this.conversation[this.reverseLookupTable[id]]\n },\n collapseThread () {\n },\n showThread () {\n },\n showAllSubthreads () {\n },\n toggleCurrentProp (name) {\n this.toggleStatusContentProperty(this.status.id, name)\n },\n setCurrentProp (name, newVal) {\n this.setStatusContentProperty(this.status.id, name)\n }\n }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=38969046\"\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=38969046&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n)\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false,\n threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n statusContentPropertiesObject: {},\n inlineDivePosition: null\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n maxDepthToShowByDefault () {\n // maxDepthInThread = max number of depths that is *visible*\n // since our depth starts with 0 and \"showing\" means \"showing children\"\n // there is a -2 here\n const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n return maxDepth >= 1 ? maxDepth : 1\n },\n 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: 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 },\n components: {\n Status,\n ThreadTree\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n } else {\n this.resetDisplayState()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n 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=ee2f7a9a\"\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=ee2f7a9a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 :margin=\"{ left: -15, right: -200 }\"\n :bound-to=\"{ x: 'container' }\"\n popover-class=\"timeline-menu-popover-wrap\"\n @show=\"openMenu\"\n @close=\"() => isOpen = false\"\n >\n <template v-slot:content>\n <div class=\"timeline-menu-popover popover-default\">\n <TimelineMenuContent />\n </div>\n </template>\n <template v-slot:trigger>\n <button 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 </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.TimelineMenu {\n flex-shrink: 1;\n margin-right: auto;\n min-width: 0;\n width: 24rem;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .timeline-menu-popover-wrap {\n overflow: hidden;\n // Match panel heading padding to line up menu with bottom of heading\n margin-top: 0.6rem;\n padding: 0 15px 15px 15px;\n }\n\n .timeline-menu-popover {\n width: 24rem;\n max-width: 100vw;\n margin: 0;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n transform: translateY(-100%);\n transition: transform 100ms;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n &.open .timeline-menu-popover {\n transform: translateY(0);\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n\n a {\n display: block;\n padding: 0.6em 0.65em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n 'friends': 'nav.home_timeline',\n 'bookmarks': 'nav.bookmarks',\n 'dms': 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n TimelineMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=0d348974\"\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=0d348974&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=\"TimelineQuickSettings\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <div v-if=\"loggedIn\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"replyVisibilityAll = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n />{{ $t('settings.reply_visibility_all') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"replyVisibilityFollowing = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n />{{ $t('settings.reply_visibility_following_short') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"replyVisibilitySelf = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n />{{ $t('settings.reply_visibility_self_short') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </div>\n <button\n class=\"button-default dropdown-item\"\n @click=\"muteBotStatuses = !muteBotStatuses\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n />{{ $t('settings.mute_bot_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"hideMedia = !hideMedia\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n />{{ $t('settings.hide_media_previews') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"hideMutedPosts = !hideMutedPosts\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n />{{ $t('settings.hide_all_muted_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"openTab('filtering')\"\n >\n <FAIcon icon=\"font\" />{{ $t('settings.word_filter') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"openTab('general')\"\n >\n <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled\">\n <FAIcon icon=\"filter\" />\n </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_quick_settings.js\"></script>\n\n<style lang=\"scss\">\n\n.TimelineQuickSettings {\n\n > button {\n line-height: 100%;\n height: 100%;\n width: var(--__panel-heading-height-inner);\n text-align: center;\n\n svg {\n font-size: 1.2em;\n }\n }\n}\n\n</style>\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 TimelineQuickSettings = {\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default TimelineQuickSettings\n","import { render } from \"./timeline_quick_settings.vue?vue&type=template&id=ad1076ec\"\nimport script from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\nexport * from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\n\nimport \"./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog\n)\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\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 paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n TimelineQuickSettings\n },\n computed: {\n 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 classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n }\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n 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 stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n window.scrollTo({ top: 0 })\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=17475b75\"\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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <conversation\n :collapsable=\"false\"\n is-page=\"true\"\n :status-id=\"statusId\"\n />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t(\"nav.interactions\") }}\n </div>\n </div>\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onModeSwitch\"\n >\n <span\n key=\"mentions\"\n :label=\"$t('nav.mentions')\"\n />\n <span\n key=\"likes+repeats\"\n :label=\"$t('interactions.favs_repeats')\"\n />\n <span\n key=\"follows\"\n :label=\"$t('interactions.follows')\"\n />\n <span\n v-if=\"!allowFollowingMove\"\n key=\"moves\"\n :label=\"$t('interactions.moves')\"\n />\n </tab-switcher>\n <Notifications\n ref=\"notifications\"\n :no-heading=\"true\"\n :minimal-mode=\"true\"\n :filter-mode=\"filterMode\"\n />\n </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict['mentions']\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications,\n TabSwitcher\n }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=109005c8\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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 \"/home/hannah/personal/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 v-slot:item=\"{item}\">\n <ChatListItem\n :key=\"item.id\"\n :compact=\"false\"\n :chat=\"item\"\n />\n </template>\n </List>\n </div>\n <div\n v-else\n class=\"emtpy-chat-list-alert\"\n >\n <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n <div\n class=\"chat-list-item\"\n @click.capture.prevent=\"openChat\"\n >\n <div class=\"chat-list-item-left\">\n <UserAvatar\n :user=\"chat.account\"\n height=\"48px\"\n width=\"48px\"\n />\n </div>\n <div class=\"chat-list-item-center\">\n <div class=\"heading\">\n <span\n v-if=\"chat.account\"\n class=\"name-and-account-name\"\n >\n <ChatTitle\n :user=\"chat.account\"\n />\n </span>\n <span class=\"heading-right\" />\n <div class=\"time-wrapper\">\n <Timeago\n :time=\"chat.updated_at\"\n :auto-update=\"60\"\n />\n </div>\n </div>\n <div class=\"chat-preview\">\n <StatusBody\n class=\"chat-preview-body\"\n :status=\"messageForStatusContent\"\n :single-line=\"true\"\n />\n <div\n v-if=\"chat.unread > 0\"\n class=\"badge badge-notification unread-chat-count\"\n >\n {{ chat.unread }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_list_item.scss';\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\n\nexport default {\n name: 'ChatTitle',\n components: {\n UserAvatar,\n RichContent\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n },\n methods: {\n getUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name)\n }\n }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=113f5355\"\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=113f5355&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <router-link\n class=\"avatar-container\"\n v-if=\"withAvatar && user\"\n :to=\"getUserProfileLink(user)\"\n >\n <UserAvatar\n class=\"titlebar-avatar\"\n :user=\"user\"\n />\n </router-link>\n <RichContent\n v-if=\"user\"\n class=\"username\"\n :title=\"'@'+(user && user.screen_name_ui)\"\n :html=\"htmlTitle\"\n :emoji=\"user.emoji || []\"\n />\n </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n name: 'ChatListItem',\n props: [\n 'chat'\n ],\n components: {\n UserAvatar,\n AvatarList,\n Timeago,\n ChatTitle,\n StatusBody\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n attachmentInfo () {\n if (this.chat.lastMessage.attachments.length === 0) { return }\n\n const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n if (types.includes('video')) {\n return this.$t('file_type.video')\n } else if (types.includes('audio')) {\n return this.$t('file_type.audio')\n } else if (types.includes('image')) {\n return this.$t('file_type.image')\n } else {\n return this.$t('file_type.file')\n }\n },\n messageForStatusContent () {\n const message = this.chat.lastMessage\n const messageEmojis = message ? message.emojis : []\n const isYou = message && message.account_id === this.currentUser.id\n const content = message ? (this.attachmentInfo || message.content) : ''\n const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n return {\n summary: '',\n emojis: messageEmojis,\n raw_html: messagePreview,\n text: messagePreview,\n attachments: []\n }\n }\n },\n methods: {\n openChat (_e) {\n if (this.chat.id) {\n this.$router.push({\n name: 'chat',\n params: {\n username: this.currentUser.screen_name,\n recipient_id: this.chat.account.id\n }\n })\n }\n }\n }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=0623aed7\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"panel-default panel chat-new\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n </div>\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n placeholder=\"Search people\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"member-list\">\n <div\n v-for=\"user in availableUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <div @click.capture.prevent=\"goToChat(user)\">\n <BasicUserCard :user=\"user\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_new.scss';\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=54e93eee\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=598ab446\"\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=598ab446&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"chat-view\">\n <div class=\"chat-view-inner\">\n <div\n ref=\"inner\"\n class=\"panel-default panel chat-view-body\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading -sticky chat-view-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title text-center\">\n <ChatTitle\n :user=\"recipient\"\n :with-avatar=\"true\"\n />\n </div>\n </div>\n <div\n class=\"message-list\"\n :style=\"{ height: scrollableContainerHeight }\"\n >\n <template v-if=\"!errorLoadingChat\">\n <ChatMessage\n v-for=\"chatViewItem in chatViewItems\"\n :key=\"chatViewItem.id\"\n :author=\"recipient\"\n :chat-view-item=\"chatViewItem\"\n :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n @hover=\"onMessageHover\"\n />\n </template>\n <div\n v-else\n class=\"chat-loading-error\"\n >\n <div class=\"alert error\">\n {{ $t('chats.error_loading_chat') }}\n </div>\n </div>\n </div>\n <div\n ref=\"footer\"\n class=\"panel-body footer\"\n >\n <div\n class=\"jump-to-bottom-button\"\n :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n @click=\"scrollDown({ behavior: 'smooth' })\"\n >\n <span>\n <FAIcon icon=\"chevron-down\" />\n <div\n v-if=\"newMessageCount\"\n class=\"badge badge-notification unread-chat-count unread-message-count\"\n >\n {{ newMessageCount }}\n </div>\n </span>\n </div>\n <PostStatusForm\n :disable-subject=\"true\"\n :disable-scope-selector=\"true\"\n :disable-notice=\"true\"\n :disable-lock-warning=\"true\"\n :disable-polls=\"true\"\n :disable-sensitivity-checkbox=\"true\"\n :disable-submit=\"errorLoadingChat || !currentChat\"\n :disable-preview=\"true\"\n :optimistic-posting=\"true\"\n :post-handler=\"sendMessage\"\n :submit-on-enter=\"!mobileLayout\"\n :preserve-focus=\"!mobileLayout\"\n :auto-focus=\"!mobileLayout\"\n :placeholder=\"formPlaceholder\"\n :file-limit=\"1\"\n max-height=\"160\"\n emoji-picker-placement=\"top\"\n @resize=\"handleResize\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat.scss';\n</style>\n","<template>\n <div\n v-if=\"isMessage\"\n class=\"chat-message-wrapper\"\n :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n @mouseover=\"onHover(true)\"\n @mouseleave=\"onHover(false)\"\n >\n <div\n class=\"chat-message\"\n :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n >\n <div\n v-if=\"!isCurrentUser\"\n class=\"avatar-wrapper\"\n >\n <router-link\n v-if=\"chatViewItem.isHead\"\n :to=\"userProfileLink\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"author\"\n />\n </router-link>\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=\"isCurrentUser ? '' : '.scrollable-message-list'\"\n :bound-to=\"{ x: 'container' }\"\n :margin=\"popoverMarginStyle\"\n @show=\"menuOpened = true\"\n @close=\"menuOpened = false\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"deleteMessage\"\n >\n <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n </button>\n </div>\n </template>\n <template v-slot: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 v-slot:footer>\n <span\n class=\"created-at\"\n >\n {{ createdAt }}\n </span>\n </template>\n </StatusContent>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"chat-message-date-separator\"\n >\n <ChatMessageDate :date=\"chatViewItem.date\" />\n </div>\n</template>\n\n<script src=\"./chat_message.js\" ></script>\n<style lang=\"scss\">\n@import './chat_message.scss';\n\n</style>\n","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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 generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n emits: ['hover'],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n userProfileLink () {\n return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n 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=3566ce4a\"\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=3566ce4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 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 { expand = false, delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n const { offsetHeight = undefined } = getScrollPosition()\n const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n if (diff !== 0 || (!this.bottomedOut() && expand)) {\n this.$nextTick(() => {\n window.scrollTo({ top: window.scrollY + 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 if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition()\n window.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition()\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable() && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=9416a190\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div\n v-if=\"user\"\n class=\"user-profile panel panel-default\"\n >\n <UserCard\n :user-id=\"userId\"\n :switcher=\"true\"\n :selected=\"timeline.viewing\"\n :allow-zooming-avatar=\"true\"\n rounded=\"top\"\n />\n <div\n v-if=\"user.fields_html && user.fields_html.length > 0\"\n class=\"user-profile-fields\"\n >\n <dl\n v-for=\"(field, index) in user.fields_html\"\n :key=\"index\"\n class=\"user-profile-field\"\n >\n <dt\n :title=\"user.fields_text[index].name\"\n class=\"user-profile-field-name\"\n >\n <RichContent\n :html=\"field.name\"\n :emoji=\"user.emoji\"\n />\n </dt>\n <dd\n :title=\"user.fields_text[index].value\"\n class=\"user-profile-field-value\"\n >\n <RichContent\n :html=\"field.value\"\n :emoji=\"user.emoji\"\n />\n </dd>\n </dl>\n </div>\n <tab-switcher\n :active-tab=\"tab\"\n :render-only-focused=\"true\"\n :on-switch=\"onTabSwitch\"\n >\n <Timeline\n key=\"statuses\"\n :label=\"$t('user_card.statuses')\"\n :count=\"user.statuses_count\"\n :embedded=\"true\"\n :title=\"$t('user_profile.timeline_title')\"\n :timeline=\"timeline\"\n timeline-name=\"user\"\n :user-id=\"userId\"\n :pinned-status-ids=\"user.pinnedStatusIds\"\n :in-profile=\"true\"\n :footerSlipgate=\"footerRef\"\n />\n <div\n v-if=\"followsTabVisible\"\n key=\"followees\"\n :label=\"$t('user_card.followees')\"\n :disabled=\"!user.friends_count\"\n >\n <FriendList :user-id=\"userId\">\n <template v-slot:item=\"{item}\">\n <FollowCard :user=\"item\" />\n </template>\n </FriendList>\n </div>\n <div\n v-if=\"followersTabVisible\"\n key=\"followers\"\n :label=\"$t('user_card.followers')\"\n :disabled=\"!user.followers_count\"\n >\n <FollowerList :user-id=\"userId\">\n <template v-slot: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 :footerSlipgate=\"footerRef\"\n />\n <Timeline\n v-if=\"isUs\"\n key=\"favorites\"\n :label=\"$t('user_card.favorites')\"\n :disabled=\"!favorites.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.favorites')\"\n timeline-name=\"favorites\"\n :timeline=\"favorites\"\n :in-profile=\"true\"\n :footerSlipgate=\"footerRef\"\n />\n </tab-switcher>\n <div class=\"panel-footer\" :ref=\"setFooterRef\"></div>\n </div>\n <div\n v-else\n class=\"panel user-profile-placeholder\"\n >\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.profile_tab') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <span v-if=\"error\">{{ error }}</span>\n <FAIcon\n v-else\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name, .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n</style>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-card-content-container\">\n <span\n v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n class=\"faint\"\n >\n {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n </span>\n <template v-if=\"!loggedIn\">\n <div\n v-if=\"!relationship.following\"\n class=\"follow-card-follow-button\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n </template>\n <template v-else-if=\"!isMe\">\n <FollowButton\n :relationship=\"relationship\"\n :label-following=\"$t('user_card.follow_unfollow')\"\n class=\"follow-card-follow-button\"\n :user=\"user\"\n />\n </template>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: wrap;\n line-height: 1.5em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n</style>\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'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=4030f5aa\"\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=4030f5aa&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n unmounted, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n unmounted () {\n window.removeEventListener('scroll', this.scrollLoad)\n unmounted && unmounted(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render () {\n const props = {\n ...this.$props,\n [childPropName]: this.entries\n }\n const children = this.$slots\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey,\n footerRef: null\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load(routeParams.name || routeParams.id)\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n unmounted () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n }\n },\n methods: {\n setFooterRef (el) {\n this.footerRef = el\n },\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n // Check if user data is already loaded in store\n const user = this.$store.getters.findUser(userNameOrId)\n if (user) {\n loadById(user.id)\n } else {\n this.$store.dispatch('fetchUser', userNameOrId)\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation,\n RichContent\n }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=56ed1f7e\"\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=56ed1f7e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.search') }}\n </div>\n </div>\n <div class=\"search-input-container\">\n <input\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-input\"\n :placeholder=\"$t('nav.search')\"\n @keyup.enter=\"newQuery(searchTerm)\"\n >\n <button\n class=\"btn button-default search-button\"\n type=\"submit\"\n @click=\"newQuery(searchTerm)\"\n >\n <FAIcon icon=\"search\" />\n </button>\n </div>\n <div\n v-if=\"loading\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div v-else-if=\"loaded\">\n <div class=\"search-nav-heading\">\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onResultTabSwitch\"\n :active-tab=\"currenResultTab\"\n >\n <span\n key=\"statuses\"\n :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n />\n <span\n key=\"people\"\n :label=\"$t('search.people') + resultCount('users')\"\n />\n <span\n key=\"hashtags\"\n :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n />\n </tab-switcher>\n </div>\n </div>\n <div class=\"panel-body\">\n <div v-if=\"currenResultTab === 'statuses'\">\n <div\n v-if=\"visibleStatuses.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\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 </div>\n <div v-else-if=\"currenResultTab === 'people'\">\n <div\n v-if=\"users.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item search-result\"\n />\n </div>\n <div v-else-if=\"currenResultTab === 'hashtags'\">\n <div\n v-if=\"hashtags.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <div\n v-for=\"hashtag in hashtags\"\n :key=\"hashtag.url\"\n class=\"status trend search-result\"\n >\n <div class=\"hashtag\">\n <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n #{{ hashtag.name }}\n </router-link>\n <div v-if=\"lastHistoryRecord(hashtag)\">\n <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n <span v-else>\n {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n </div>\n </div>\n <div\n v-if=\"lastHistoryRecord(hashtag)\"\n class=\"count\"\n >\n {{ lastHistoryRecord(hashtag).uses }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-result-footer text-center panel-footer faint\" />\n </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n</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'\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 },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.statuses = []\n this.hashtags = []\n this.$refs.searchInput.blur()\n\n this.$store.dispatch('search', { q: query, resolve: true })\n .then(data => {\n this.loading = false\n this.userIds = map(data.accounts, 'id')\n this.statuses = data.statuses\n this.hashtags = data.hashtags\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=52f57ebe\"\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=52f57ebe&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('registration.registration') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"registration-form\"\n @submit.prevent=\"submit(user)\"\n >\n <div class=\"container\">\n <div class=\"text-fields\">\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.username.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-username\"\n >{{ $t('login.username') }}</label>\n <input\n id=\"sign-up-username\"\n v-model.trim=\"v$.user.username.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"$t('registration.username_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.username.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.username.required\">\n <span>{{ $t('registration.validations.username_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-fullname\"\n >{{ $t('registration.fullname') }}</label>\n <input\n id=\"sign-up-fullname\"\n v-model.trim=\"v$.user.fullname.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :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 >{{ $t('registration.email') }}</label>\n <input\n id=\"email\"\n v-model=\"v$.user.email.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"email\"\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') }} ({{ $t('general.optional') }})</label>\n <textarea\n id=\"bio\"\n v-model=\"user.bio\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"bioPlaceholder\"\n />\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.password.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password\"\n >{{ $t('login.password') }}</label>\n <input\n id=\"sign-up-password\"\n v-model=\"user.password\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div\n v-if=\"v$.user.password.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.password.required\">\n <span>{{ $t('registration.validations.password_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password-confirmation\"\n >{{ $t('registration.password_confirm') }}</label>\n <input\n id=\"sign-up-password-confirmation\"\n v-model=\"user.confirm\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n >\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\">\n <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n </li>\n <li v-if=\"!v$.user.confirm.sameAsPassword\">\n <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.language.$error }\"\n >\n <interface-language-switcher\n for=\"email-language\"\n :prompt-text=\"$t('registration.email_language')\"\n :language=\"v$.user.language.$model\"\n :set-language=\"val => v$.user.language.$model = val\"\n />\n </div>\n\n <div\n v-if=\"accountApprovalRequired\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"reason\"\n >{{ $t('registration.reason') }}</label>\n <textarea\n id=\"reason\"\n v-model=\"user.reason\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"reasonPlaceholder\"\n />\n </div>\n\n <div\n v-if=\"captcha.type != 'none'\"\n id=\"captcha-group\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"captcha-label\"\n >{{ $t('registration.captcha') }}</label>\n\n <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n <img\n :src=\"captcha.url\"\n @click=\"setCaptcha\"\n >\n\n <sub>{{ $t('registration.new_captcha') }}</sub>\n\n <input\n id=\"captcha-answer\"\n v-model=\"captcha.solution\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n >\n </template>\n </div>\n\n <div\n v-if=\"token\"\n class=\"form-group\"\n >\n <label for=\"token\">{{ $t('registration.token') }}</label>\n <input\n id=\"token\"\n v-model=\"token\"\n disabled=\"true\"\n class=\"form-control\"\n type=\"text\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('registration.register') }}\n </button>\n </div>\n </div>\n\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"terms-of-service\"\n v-html=\"termsOfService\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n <div\n v-if=\"serverValidationErrors.length\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n <span\n v-for=\"error in serverValidationErrors\"\n :key=\"error\"\n >{{ error }}</span>\n </div>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: .6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height:16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst registration = {\n setup () { return { v$: useVuelidate() } },\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n reason: '',\n language: ''\n },\n captcha: {}\n }),\n components: {\n InterfaceLanguageSwitcher\n },\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAs: sameAs(this.user.password)\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) },\n language: {}\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n if (this.user.language) {\n this.user.language = localeService.internalToBackendLocale(this.user.language)\n }\n\n this.v$.$touch()\n\n if (!this.v$.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=c19f87d0\"\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=c19f87d0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('password_reset.password_reset') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"password-reset-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"container\">\n <div v-if=\"!mailerEnabled\">\n <p v-if=\"passwordResetRequested\">\n {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n </p>\n <p v-else>\n {{ $t('password_reset.password_reset_disabled') }}\n </p>\n </div>\n <div v-else-if=\"success || throttled\">\n <p v-if=\"success\">\n {{ $t('password_reset.check_email') }}\n </p>\n <div class=\"form-group text-center\">\n <router-link :to=\"{name: 'root'}\">\n {{ $t('password_reset.return_home') }}\n </router-link>\n </div>\n </div>\n <div v-else>\n <p\n v-if=\"passwordResetRequested\"\n class=\"password-reset-required error\"\n >\n {{ $t('password_reset.password_reset_required') }}\n </p>\n <p>\n {{ $t('password_reset.instruction') }}\n </p>\n <div class=\"form-group\">\n <input\n ref=\"email\"\n v-model=\"user.email\"\n :disabled=\"isPending\"\n :placeholder=\"$t('password_reset.placeholder')\"\n class=\"form-control\"\n type=\"input\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default btn-block\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n </div>\n <p\n v-if=\"error\"\n class=\"alert error notice-dismissible\"\n >\n <span>{{ error }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissError()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n</style>\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","import { render } from \"./password_reset.vue?vue&type=template&id=3a677309\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.friend_requests') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <FollowRequestCard\n v-for=\"request in requests\"\n :key=\"request.id\"\n :user=\"request\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-request-card-content-container\">\n <button\n class=\"btn button-default\"\n @click=\"approveUser\"\n >\n {{ $t('user_card.approve') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"denyUser\"\n >\n {{ $t('user_card.deny') }}\n </button>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n }\n}\n\nexport default FollowRequestCard\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=84be1288\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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_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 \"/home/hannah/personal/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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n <div class=\"panel-body\">\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=4f8c3288\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"column-inner\">\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <staff-panel />\n <terms-of-service-panel />\n <MRFTransparencyPanel />\n <features-panel v-if=\"showFeaturesPanel\" />\n </div>\n</template>\n\n<script src=\"./about.js\" ></script>\n\n<style lang=\"scss\">\n</style>\n","<template>\n <div>\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"tos-content\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\" ></script>\n\n<style lang=\"scss\">\n.tos-content {\n margin: 1em\n}\n</style>\n","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=687e38f6\"\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=687e38f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"staff-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.staff\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"group in groupedStaffAccounts\"\n :key=\"group.role\"\n class=\"staff-group\"\n >\n <h4>{{ $t('general.role.' + group.role) }}</h4>\n <basic-user-card\n v-for=\"user in group.users\"\n :key=\"user.screen_name\"\n :user=\"user\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./staff_panel.js\" ></script>\n\n<style lang=\"scss\">\n\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts['admin'] },\n { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUser'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=31dce24a\"\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=31dce24a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"federationPolicy\"\n class=\"mrf-transparency-panel\"\n >\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.mrf.federation\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"mrf-section\">\n <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n <ul>\n <li\n v-for=\"policy in mrfPolicies\"\n :key=\"policy\"\n v-text=\"policy\"\n />\n </ul>\n\n <h2 v-if=\"hasInstanceSpecificPolicies\">\n {{ $t(\"about.mrf.simple.simple_policies\") }}\n </h2>\n\n <div v-if=\"acceptInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in acceptInstances\"\n :key=\"entry.instance + '_accept'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"rejectInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in rejectInstances\"\n :key=\"entry.instance + '_reject'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"quarantineInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in quarantineInstances\"\n :key=\"entry.instance + '_quarantine'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"ftlRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in ftlRemovalInstances\"\n :key=\"entry.instance + '_ftl_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaNsfwInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaNsfwInstances\"\n :key=\"entry.instance + '_media_nsfw'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaRemovalInstances\"\n :key=\"entry.instance + '_media_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <h2 v-if=\"hasKeywordPolicies\">\n {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n </h2>\n\n <div v-if=\"keywordsFtlRemoval.length\">\n <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsFtlRemoval\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReject.length\">\n <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReject\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReplace.length\">\n <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReplace\"\n :key=\"keyword\"\n >\n {{ keyword.pattern }}\n {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n {{ keyword.replacement }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './mrf_transparency_panel.scss';\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n return instances.map(instance => {\n if (info[key] && info[key][instance] && info[key][instance]['reason']) {\n return { instance: instance, reason: info[key][instance]['reason'] }\n }\n return { instance: 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 { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=7f2ca562\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 \"./about.vue?vue&type=template&id=37ac4f64\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('remote_user_resolver.remote_user_resolver') }}\n </div>\n <div class=\"panel-body\">\n <p>\n {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n </p>\n <p v-if=\"error\">\n {{ $t('remote_user_resolver.error') }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=198402c4\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n { name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n { name: 'remote-user-profile-acct',\n path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, 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: 'user-profile', path: '/:_(users)?/:name', component: UserProfile }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideBotIndication')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n var meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n getTOS({ store })\n getStickers({ store })\n\n const router = createRouter({\n history: createWebHistory(),\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { left: 0, top: 0 }\n }\n })\n\n const app = createApp(App)\n\n app.use(router)\n app.use(store)\n app.use(i18n)\n\n app.use(vClickOutside)\n app.use(VBodyScrollLock)\n\n app.component('FAIcon', FontAwesomeIcon)\n app.component('FALayers', FontAwesomeLayers)\n\n 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 usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n '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 api: apiModule,\n config: configModule,\n serverSideConfig: serverSideConfigModule,\n shout: shoutModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n chats: chatsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue?05a8","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue?a425","webpack:///./src/components/popover/popover.vue","webpack:///./src/services/html_converter/utility.service.js","webpack:///./src/services/html_converter/html_line_converter.service.js","webpack:///./src/components/hashtag_link/hashtag_link.vue","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/hashtag_link/hashtag_link.js","webpack:///./src/components/hashtag_link/hashtag_link.vue?ad7e","webpack:///./src/components/rich_content/rich_content.jsx","webpack:///./src/services/html_converter/html_tree_converter.service.js","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue?f429","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue?c274","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue?68d2","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue?0fda","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue?6374","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue?8218","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue?d286","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?89e7","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue?0825","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue?bfc4","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue?fef6","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue?870d","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue?8f79","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/locale/locale.service.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue?3ce0","webpack:///./src/components/status_body/status_body.vue","webpack:///./src/components/mention_link/mention_link.js","webpack:///./src/components/mfm_content/mfm_content.jsx","webpack:///./src/components/status_body/status_body.js","webpack:///./src/components/status_body/status_body.vue?c2f1","webpack:///./src/components/status_content/status_content.js","webpack:///./src/components/status_content/status_content.vue?12ff","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue?a7d9","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?0c6b","webpack:///./src/components/select/select.vue","webpack:///./src/components/select/select.js","webpack:///./src/components/select/select.vue?5aac","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue?bd50","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue?d084","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue?6c37","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue?da99","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue?0cf8","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?882d","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?42b1","webpack:///./src/i18n/messages.js","webpack:///./src/components/tab_switcher/tab_switcher.jsx","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue?6df6","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue?712d","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue?9c64","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue?6d5a","webpack:///./src/components/mention_link/mention_link.vue","webpack:///./src/components/mention_link/mention_link.vue?b783","webpack:///./src/components/mentions_line/mentions_line.vue","webpack:///./src/components/mentions_line/mentions_line.js","webpack:///./src/components/mentions_line/mentions_line.vue?d40c","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?97a4","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/export_import/export_import.js","webpack:///./src/components/flash/flash.vue","webpack:///./src/services/ruffle_service/ruffle_service.js","webpack:///./src/components/flash/flash.js","webpack:///./src/components/flash/flash.vue?1944","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue?49fe","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue?354d","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue?b794","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue?c74d","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue?046a","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue?4062","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue?a29e","webpack:///./src/modules/serverSideConfig.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue?c405","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue?23b7","webpack:///./src/assets/nsfw.png","webpack:///./src/i18n/en.json","webpack:///./src/components/login_form/login_form.vue?111a","webpack:///./src/components/media_upload/media_upload.vue?84d2","webpack:///./src/components/scope_selector/scope_selector.vue?757e","webpack:///./src/components/checkbox/checkbox.vue?0dde","webpack:///./src/components/emoji_picker/emoji_picker.scss?9675","webpack:///./src/components/emoji_input/emoji_input.vue?4146","webpack:///./src/components/select/select.vue?b0ab","webpack:///./src/components/poll/poll_form.vue?0f5d","webpack:///./src/components/still-image/still-image.vue?2909","webpack:///./src/components/flash/flash.vue?c9e5","webpack:///./src/components/attachment/attachment.scss?c40a","webpack:///./src/components/gallery/gallery.vue?3caa","webpack:///./src/components/user_avatar/user_avatar.vue?dd13","webpack:///./src/components/mention_link/mention_link.scss?a876","webpack:///./src/components/mentions_line/mentions_line.scss?57df","webpack:///./src/components/hashtag_link/hashtag_link.scss?6cb8","webpack:///./src/components/poll/poll.vue?cc4e","webpack:///./src/components/status_body/status_body.scss?962f","webpack:///./src/components/link-preview/link-preview.vue?cabf","webpack:///./src/components/status_content/status_content.vue?bc1c","webpack:///./src/components/post_status_form/post_status_form.vue?2849","webpack:///./src/components/remote_follow/remote_follow.vue?18f9","webpack:///./src/components/dialog_modal/dialog_modal.vue?6ce2","webpack:///./src/components/popover/popover.vue?c6ad","webpack:///./src/components/moderation_tools/moderation_tools.vue?3620","webpack:///./src/components/account_actions/account_actions.vue?8a6d","webpack:///./src/components/user_card/user_card.scss?64aa","webpack:///./src/components/user_panel/user_panel.vue?29ef","webpack:///./src/components/nav_panel/nav_panel.vue?d57b","webpack:///./src/components/features_panel/features_panel.vue?194b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?089d","webpack:///./src/components/shout_panel/shout_panel.vue?de26","webpack:///./src/components/modal/modal.vue?1080","webpack:///./src/components/panel_loading/panel_loading.vue?f355","webpack:///./src/components/async_component_error/async_component_error.vue?a2f0","webpack:///./src/components/settings_modal/settings_modal.scss?db40","webpack:///./src/components/media_modal/media_modal.vue?b6f2","webpack:///./src/components/side_drawer/side_drawer.vue?5b8c","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?002e","webpack:///./src/components/reply_button/reply_button.vue?0c63","webpack:///./src/components/favorite_button/favorite_button.vue?a96a","webpack:///./src/components/react_button/react_button.vue?2715","webpack:///./src/components/retweet_button/retweet_button.vue?e9ee","webpack:///./src/components/extra_buttons/extra_buttons.vue?23e8","webpack:///./src/components/avatar_list/avatar_list.vue?d80a","webpack:///./src/components/status_popover/status_popover.vue?0634","webpack:///./src/components/user_list_popover/user_list_popover.vue?4785","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?492e","webpack:///./src/components/status/status.scss?b11c","webpack:///./src/components/notification/notification.scss?b266","webpack:///./src/components/notifications/notification_filters.vue?52ff","webpack:///./src/components/notifications/notifications.scss?5aa9","webpack:///./src/components/mobile_nav/mobile_nav.vue?3d7f","webpack:///./src/components/search_bar/search_bar.vue?5a40","webpack:///./src/components/desktop_nav/desktop_nav.scss?62ee","webpack:///./src/components/list/list.vue?dfc3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?c333","webpack:///./src/components/post_status_modal/post_status_modal.vue?17bc","webpack:///./src/components/global_notice_list/global_notice_list.vue?8dbf","webpack:///./src/App.scss?eeaf","webpack:///./src/components/thread_tree/thread_tree.vue?acd6","webpack:///./src/components/conversation/conversation.vue?7fec","webpack:///./src/components/timeline_menu/timeline_menu.vue?733c","webpack:///./src/components/timeline/timeline_quick_settings.vue?3988","webpack:///./src/components/timeline/timeline.scss?7ad3","webpack:///./src/components/chat_title/chat_title.vue?c884","webpack:///./src/components/chat_list_item/chat_list_item.vue?f11c","webpack:///./src/components/basic_user_card/basic_user_card.vue?b898","webpack:///./src/components/chat_new/chat_new.vue?536c","webpack:///./src/components/chat_list/chat_list.vue?336c","webpack:///./src/components/chat_message/chat_message.vue?2759","webpack:///./src/components/chat/chat.vue?8ca4","webpack:///./src/components/follow_card/follow_card.vue?180e","webpack:///./src/components/user_profile/user_profile.vue?fc91","webpack:///./src/components/search/search.vue?2a52","webpack:///./src/components/registration/registration.vue?d0e0","webpack:///./src/components/password_reset/password_reset.vue?9146","webpack:///./src/components/follow_request_card/follow_request_card.vue?b6a6","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?5d2e","webpack:///./src/components/staff_panel/staff_panel.vue?831d","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?0dbc","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/shout.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/App.vue","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue?f908","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue?2543","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue?64d5","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue?ea63","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?c7d7","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue?7f8f","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?cc9d","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue?bedc","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?eaa9","webpack:///./src/components/shout_panel/shout_panel.vue","webpack:///./src/components/shout_panel/shout_panel.js","webpack:///./src/components/shout_panel/shout_panel.vue?cee7","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?1e91","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue?239d","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?ebf7","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/settings_modal/settings_modal.vue?3d91","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/pinch_zoom/pinch_zoom.js","webpack:///./src/components/pinch_zoom/pinch_zoom.vue?54a1","webpack:///./src/components/pinch_zoom/pinch_zoom.vue","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/swipe_click/swipe_click.js","webpack:///./src/components/swipe_click/swipe_click.vue?9d87","webpack:///./src/components/swipe_click/swipe_click.vue","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue?5a55","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue?ab18","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7726","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue?8378","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue?c288","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue?595f","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?5d89","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue?c824","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue?fb63","webpack:///./src/App.js","webpack:///./src/App.vue?7993","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/thread_tree/thread_tree.vue","webpack:///./src/components/thread_tree/thread_tree.js","webpack:///./src/components/thread_tree/thread_tree.vue?b0db","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue?3296","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue?de29","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue?0f6c","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue?9ad1","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue?842c","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?cee7","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue?56f4","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue?8a33","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?dc49","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue?a77d","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue?3506","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue?b9c3","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue?67d1","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue?af05","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue?9c2e","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue?fbc3","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?36ca","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue?5926","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue?b039","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue?2d42","webpack:///./src/hocs/with_load_more/with_load_more.jsx","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue?21f3","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue?2a31","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue?a608","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue?f2e7","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?eec7","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_requests/follow_requests.vue?18ee","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue?7dba","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue?42e6","webpack:///./src/components/about/about.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?1a66","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue?fa50","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?2867","webpack:///./src/components/about/about.js","webpack:///./src/components/about/about.vue?596d","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?ec00","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/boot/routes.js","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","_original","screen_name","acct","statusnet_profile_url","url","emoji","emojis","escape","display_name","name_html","name_unescaped","description","note","description_html","fields","fields_html","map","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","parseStatus","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","raw_html","content","text","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","akkoma","mediaType","mfm_content","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","options","title_html","title","pinned","status","is_post_verb","uri","match","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","seen","is_seen","isStatusNotification","action","from_profile","emoji_url","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","opts","flakeId","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","reduce","errs","k","acc","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","headers","encodeURIComponent","authHeaders","json","ok","accessToken","fetchFriends","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","replyVisibility","isNotifications","public","friends","dms","notifications","media","favorites","bookmarks","queryString","param","statusText","pagination","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","bookmarkStatus","unbookmarkStatus","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","setMediaDescription","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateProfileImages","avatarName","banner","background","updateProfile","importMutes","file","importBlocks","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchMascot","updateMascot","mascot","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchKnownDomains","fetchDomainMutes","muteDomain","domain","unmuteDomain","chats","getOrCreateChat","accountId","chatMessages","sendChatMessage","mediaId","readChat","lastReadId","deleteChatMessage","rgb2hex","g","b","Math","ceil","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","library","add","faRobot","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__exports__","class","compact","betterShadow","alt","image-load-error","icon","isExternal","generateProfileLink","restrictedNicknames","complicated","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","unmounted","removeEventListener","ref","style","getTagName","getAttrs","innertag","substring","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","processTextForEmoji","buffer","textBuffer","char","found","shortcode","HashtagLink","required","default","link","generateTagLink","$router","open","MentionsLine","html","handleLinks","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","closer","Tag","mentionsLinePadding","linkData","getLinkData","notifying","MENTIONS_LIMIT","renderMention","updatedLink","updatedChildren","child","renderLink","pass2","reverse","processItemReverse","renderHashtag","newChildren","textContent","stripTags","greentextHandle","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","convertHtmlToLines","string","every","cleanedString","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","polls","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","unseenNotificationsFromStore","i18nString","notifObj","image","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","backgroundColor","highlightClass","fileType","fileTypeService","fileMatchesSomeType","faReply","ReplyButton","computed","loggedIn","currentUser","replying","$t","faStar","faStarRegular","FavoriteButton","animated","dispatch","mapGetters","spin","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","customEmoji","indexOfFilterWord","indexOf","flat","getters","bound-to","remove-padding","size","placeholder","$event","imageUrl","faRetweet","RetweetButton","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faExternalLinkAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","reportStatus","canDelete","ownStatus","canPin","canMute","fixed-width","faCircleNotch","StatusPopover","allStatuses","statusId","Status","defineAsyncComponent","enter","popover-class","is-preview","statusoid","UserListPopover","RichContent","usersCapped","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","faChevronUp","faChevronDown","faAngleDoubleRight","list","camelCase","charAt","toUpperCase","controlledOrUncontrolledSet","obj","camelized","set","uncontrolledName","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","MentionLink","uncontrolledReplying","unmuted","userExpanded","uncontrolledMediaPlaying","suspendable","headTailLinks","res","toggle","controlledName","$data","$props","showReasonMutedThread","inConversation","repeaterClass","userClass","deleted","repeaterStyle","highlight","userStyle","noHeading","userProfileLink","generateUserProfileLink","replyProfileLink","isReply","findUser","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","rtBotStatus","botStatus","botIndicator","hideBotIndication","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","muteBotStatuses","shouldNotMute","relationshipReblog","inProfile","profileUserId","hideMutedUsers","hideMutedPosts","hideMutedThreads","hideFilteredStatuses","hideWordFilteredPosts","hideStatus","isFocused","focused","replyToName","replySubject","decodedSummary","behavior","subjectLineBehavior","startsWithRe","concat","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","browserSupport","cssFilter","isSuspendable","mediaPlaying","inThreadForest","controlledThreadDisplayStatus","threadShowing","visibilityLocalized","$i18n","visibilityIcon","showError","clearError","toggleReplying","controlledOrUncontrolledToggle","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","toggleThreadDisplay","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","scrollBy","watch","num","inlineExpanded","isPreview","to","highlighted","better-shadow","data-tags","user-id","rounded","bordered","time","auto-update","expandable","replies","simpleTree","aria-expanded","dive","status-id","aria-label","flip","user-screen-name","no-heading","controlled-showing-tall","controlledShowingTall","controlled-expanding-subject","controlledExpandingSubject","controlled-showing-long-subject","controlledShowingLongSubject","controlled-toggle-showing-tall","controlledToggleShowingTall","controlled-toggle-expanding-subject","controlledToggleExpandingSubject","controlled-toggle-showing-long-subject","controlledToggleShowingLongSubject","showOtherRepliesAsButton","$tc","numReplies","reply","emojiReactionsOnTimeline","logged-in","reply-to","replied-user","copy-message-scope","subject","DialogModal","darkOverlay","onCancel","Function","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","toggleTag","api","backendInteractor","commit","toggleRight","toggleActivationStatus","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","on-cancel","footer","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","recipient_id","mapState","pleromaChatMessagesAvailable","showing_reblogs","faRss","faBell","faSearchPlus","faEdit","followRequestInProgress","classes","isOtherUser","subscribeUrl","serverUrl","URL","protocol","host","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","Select","refetchRelationship","setProfileView","switcher","linkClicked","openProfileTab","zoomAvatar","mentionUser","replyTo","repliedUser","hideBio","hideUserStats","subscribing","click","disabled","handle-links","LAYERS","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","specialLanguageCodes","internalToBrowserLocale","getLanguageName","languageName","ISO6391","getNativeName","browserLocale","toLocaleUpperCase","languages","languagesObject","localeCompare","localeService","internalToBackendLocale","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","getColors","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","computeDynamicColor","variableSlot","composePreset","getThemes","cache","themes","statePositionAcc","position","getOpacitySlot","getPreset","isV1","setPreset","promiseInterval","promiseCall","interval","stopped","func","stop","loading","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","querySelectorAll","clickedElement","checked","element","optionId","voters_count","scope","keypath","now-threshold","faAt","findUserByUrl","isYou","userName","userNameFullUi","serverName","instanceDomain","userNameFull","highlightType","classnames","shouldBoldenYou","useAtIcon","isRemote","shouldShowFullUserName","conf","mentionLinkDisplay","shouldShowTooltip","mentionLinkShowTooltip","shouldShowAvatar","mentionLinkShowAvatar","shouldShowYous","mentionLinkShowYous","mentionLinkBoldenYou","shouldFadeDomain","mentionLinkFadeDomain","MFM_TAGS","defineComponent","ast","mfm","fnNameList","validTime","h","genEl","xss","speed","direction","alternate","anime","serif","monospace","cursive","fantasy","math","MkSparkle","degrees","deg","random","log","mention","userScreenName","hashtag","hash","lang","inline","nowrap","static_url","faFile","faMusic","faImage","faLink","faPollH","renderMisskeyMarkdown","postLength","parseReadyDone","localCollapseSubjectDefault","collapseMessageWithSubject","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","expandingSubject","hideTallStatus","showingTall","showingMore","attachmentTypes","MFMContent","mounted","onParseReady","handle","toggleShowMore","toggleShowingTall","toggleExpandingSubject","showingLongSubject","toggleShowingLongSubject","fullContent","uncontrolledShowingTall","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","hideAttachments","hideAttachmentsInConv","nsfwClickthrough","attachmentSize","maxThumbnails","Attachment","Poll","Gallery","LinkPreview","StatusBody","setMedia","galleryAttachments","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject","base-poll","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","stopGifs","appendPx","str","test","onLoad","imageLoadHandler","canvas","naturalWidth","naturalHeight","getContext","drawImage","onError","referrerpolicy","emits","indeterminate","modelValue","$slots","unstyled","BasicUserCard","CURRENT_VERSION","getLayersArray","parent","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","sourceOpacity","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","maxlength","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","allAttentions","attention","buildMentionsString","copyMessageScope","postContentType","sensitiveByDefault","sensitiveIfSubject","dropFiles","uploadingFiles","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","stopPropagation","preventDefault","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","autocomplete","disableLockWarning","disableSubject","enable-emoji-picker","suggest","emojiPickerPlacement","hide-emoji-button","newline-on-ctrl-enter","enable-sticker-picker","rows","cols","disableScopeSelector","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","drop-files","grid","descriptions","set-media","editable","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment","disableSensitivityCheckbox","faVideo","faPlayCircle","faStop","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","flashLoaded","showDescription","Flash","VideoAttachment","classNames","edit","useContainFit","usePlaceholder","placeholderName","placeholderIconClass","mediaProxyAvailable","isEmpty","oembed","useModal","modalTypes","playVideosInModal","videoTag","newVal","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","toggleHidden","useOneClickNsfw","onImageLoad","hideDescription","image-load-handler","controls","thumb_url","oembedHTML","localeDateString","toLocaleString","refreshRelativeTimeObject","longFormat","autoUpdate","datetime","items","getKey","empty","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","en","require","setLanguage","language","setLocaleMessage","findFirstUsable","slots","findIndex","renderOnlyFocused","onSwitch","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","activeIndex","slot","isActive","tabName","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","Fragment","contents","tabs","classesTab","classesWrapper","label","fullHeight","renderSlot","showImmediately","noIdUpdate","faCheck","faUserPlus","faUser","faSuitcaseRolling","Notification","getUser","usersObject","updater","targetUser","targetUserProfileLink","needMute","faFilter","filters","toggleNotificationFilter","Notifications","NotificationFilters","minimalMode","filterMode","disableTeleport","bottomedOut","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","unreadChatCount","layoutType","teleportTarget","wide","mobile","notificationsToDisplay","FaviconService","drawFaviconBadge","clearFaviconBadge","markAsSeen","fetchOlderNotifications","seenCount","notificationsFetcher","fetchAndUpdate","older","notifs","sizes","hidingLong","minimal","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","onNaturalSizeLoad","rowStyle","itemStyle","total","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","removeAttachment","shift-up","shiftUpAttachment","shift-dn","shiftDnAttachment","hide-description","number","expanded","mentionsComputed","extraMentions","manyMentions","exponent","units","toFixed","timelineData","POSITIVE_INFINITY","fetchNotifications","readNotifsIds","update","messageKey","messageArgs","startFetching","boundFetchAndUpdate","favicons","isImageLoaded","initFaviconService","favcanvas","favimg","Image","crossOrigin","favcontext","clearRect","toDataURL","badgeColor","getPropertyValue","fillStyle","beginPath","arc","faviconWidth","PI","fill","progress","defaultState","expertLevel","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideShoutbox","padEmoji","loopVideo","loopVideoSilentOnly","streaming","alwaysShowNewPostButton","autohideFloatingPostButton","pauseOnUnfocused","thirdColumnMode","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","sidebarRight","disableStickyHeaders","showScrollbars","virtualScrolling","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","actions","loadSettings","knownKeys","presentKeys","intersection","Cookies","statusSummary","muteWord","desktopNotificationOpts","permission","desktopNotificationSilence","desktopNotification","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","newExporter","filename","getExportedObject","exportData","stringified","btoa","display","newImporter","onImport","onImportFailure","validator","importData","filePicker","reader","FileReader","parsed","validationResult","readAsText","ruffleInstance","RuffleService","getRuffle","RufflePlayer","polyfills","publicPath","onabort","oncancel","faExclamationTriangle","player","loaded","openPlayer","ruffle","newest","createPlayer","letterbox","container","load","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","newImg","provider_name","slicedUsers","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","for","promptText","controlledLanguage","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","showLocal","css","selected","unlisted","private","direct","userDefault","onScopeChange","defaultApi","path","notificationsApi","oldValue","settingsMap","serverSideConfig","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","setCurrentUser","setServerSideOption","logout","getComponentProps","Component","isFunction","getComponentOptions","addPositionToWords","words","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","root","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","newValue","newWord","firstchar","matchedSuggestions","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","ctrlKey","shiftKey","panelBody","offsetBottom","setPlacement","overflowsBottom","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","_list","plural","_plural","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setLayoutType","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","newNotice","normalOrMobile","registrationOpen","vapidPublicKey","defaultBanner","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","shoutAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","hostname","getStaticEmoji","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","idStore","conversationsObject","timelines","publicAndExternal","mergeOrAdd","arr","oldItem","new","prepareStatus","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","timelineObject","minNew","maxNew","newer","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","numStatusesBeforeFetch","ccTimeline","timelineFetcher","followRequestFetcher","requests","backendInteractorService","startFetchingTimeline","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","windowWidth","documentElement","windowHeight","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","favourite","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","predictedRelationship","relationships","loggingIn","lastLoginName","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","mascotUrl","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","oauthApi","userToken","loginUser","requestPermission","latest","maybeShowChatNotification","currentChatId","account_id","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSED","CLOSING","STARTING_INITIAL","STARTING","disableMastoSockets","DISABLED","startMastoUserSocket","ERROR","JOINED","closeEvent","ignoreCodes","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","shout","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","supportedTypes","mediaViewer","currentIndex","activated","setCurrentMedia","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","updateMaxId","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","getView","currentMessageChainId","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","deleteMessage","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","_value","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","mapActions","submit","submitToken","submitPassword","identifier","passwordResetRequested","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","UserPanel","signedIn","hide-bio","faUsers","faHome","TimelineMenuContent","privateMode","federating","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","followRequestCount","InstanceSpecificPanel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","getWhoToFollow","usersToFollow","toFollow","shuffled","externalUser","showWhoToFollow","WhoToFollowPanel","oldUser","faBullhorn","shoutPanel","currentMessage","collapsed","togglePanel","scrollEl","floating","author","isOpen","noBackground","retry","getResettableAsyncComponent","asyncComponent","asyncComponentFactory","loader","observe","shallowReactive","onResetAsyncComponent","faWindowMinimize","faFileUpload","faFileDownload","SettingsModal","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","Modal","SettingsModalContent","loadingComponent","PanelLoading","errorComponent","AsyncComponentError","delay","closeModal","peekModal","_pleroma_settings_version","major","minor","fileMajor","feMajor","restore","backup","backupWithTheme","sample","ignoreList","clone","modalOpenedOnce","modalPeeked","is-open","no-background","model-value","setTransform","scale","PinchZoom","$attrs","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","pointerId","coord","sign","isPositive","pointerType","SwipeClick","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","offsets","faChevronLeft","faChevronRight","MediaModal","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","currentMedia","canNavigate","getType","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","selector","reach-min-scale-strategy","stop-propagate-handled","allow-pan-min-scale","min-scale","reset-to-min-scale-limit","faSignInAlt","faSignOutAlt","faSearch","faTachometerAlt","faCog","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","isPersistent","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","active-class","SearchBar","searchTerm","route","searchInput","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","onSearchBarToggled","UserReportingModal","List","statusIdsToReport","processing","remoteInstance","isChecked","toggleStatus","in-conversation","PostStatusModal","resettingForm","isFormVisible","oldVal","GlobalNoticeList","notices","closeNotice","ShoutPanel","DesktopNav","mobileActivePanel","updateMobileState","reverseLayout","noSticky","newPostButtonShown","userBackground","instanceBackground","bgStyle","isChats","shoutboxPosition","reverseSetting","faAngleDoubleDown","ThreadTree","depth","collapsable","isExpanded","pinnedStatusIdsObject","getReplies","simple","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","inline-expanded","show-pinned","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-replying","controlled-media-playing","controlled-toggle-replying","controlled-set-media-playing","replyStatus","is-expanded","pinned-status-ids-object","get-replies","set-highlight","toggle-expanded","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","numStatus","faAngleDoubleLeft","idA","idB","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","maxDepthToShowByDefault","maxDepth","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","walk","forest","topLevel","processed","cur","replyIds","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","isReplying","maybeHighlight","newConversationId","oldConversationId","resetDisplayState","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","show-other-replies-as-button","TimelineMenu","openMenu","blockOpen","timelineName","i18nkey","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","Timeline","paused","unfocused","virtualScrollIndex","blockingClicks","Conversation","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","rootClasses","embedded","statusesToDisplay","statusesPerSide","nonPinnedIndex","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","virtual-hidden","footerSlipgate","PublicTimeline","timeline-name","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","Bookmarks","conversationPage","is-page","tabModeDict","Interactions","allowFollowingMove","onModeSwitch","TabSwitcher","on-switch","minimal-mode","filter-mode","DMs","htmlTitle","getUserProfileLink","withAvatar","ChatListItem","ChatTitle","attachmentInfo","messageForStatusContent","messageEmojis","messagePreview","_e","chatNew","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","ChatList","ChatNew","isNew","cancelNewChat","newChat","displayDate","today","toLocaleDateString","day","month","ChatMessage","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","hoveredMessageChain","bound-to-selector","full-content","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","expand","diff","totalHeight","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","positionBeforeUpdate","doStartFetching","handleAttachmentPosting","sendMessage","buildFakeMessage","doSendMessage","retriesLeft","with-avatar","chat-view-item","hovered-message-chain","disable-subject","disable-scope-selector","disable-notice","disable-lock-warning","disable-polls","disable-sensitivity-checkbox","disable-submit","disable-preview","optimistic-posting","post-handler","submit-on-enter","preserve-focus","auto-focus","file-limit","max-height","emoji-picker-placement","FollowCard","isMe","noFollowsYou","label-following","withLoadMore","select","childPropName","additionalPropNames","WrappedComponent","fetchEntries","updateEntries","newEntries","FollowerList","destroy","FriendList","UserProfile","footerRef","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","setFooterRef","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","hashtags","currenResultTab","newQuery","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","uses","setup","v$","useVuelidate","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","$error","$model","bio","sameAsPassword","prompt-text","set-language","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","WhoToFollow","TermsOfServicePanel","StaffPanel","staffAccounts","groupedStaffAccounts","groupBy","toInstanceReasonObject","instances","info","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","previousNavPaddingRight","previousAppBgWrapperRight","validateAuthenticatedRoute","routes","_to","component","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","OAuthCallback","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","paddingRight","appBgWrapperEl","enableBodyScroll","directive","binding","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","general","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","FontAwesomeIcon","FontAwesomeLayers","mount","currentLocale","createI18n","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","global","interfaceModule","instanceModule","usersModule","statusesModule","apiModule","configModule","serverSideConfigModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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AC,WAC5E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAC5E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAC5E,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAE7E,aAAgB,CACd,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,c,oFC37BhF,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,gCCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,+CCAA,Q,6BCAA,Q,8BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,6BCAA,Q,mGCEA,IAEE,IAAIz+D,YAEJ,MAAOnW,GACP6E,OAAOsR,YAAci/D,ICPvB,IA+JeC,EA1IM,CACnBzvD,MAtBmB,CACnB81C,mBAAoB,SACpB4Z,qBAAqB,EACrBC,uBAAwB,KACxBn0D,SAAU,CACRo0D,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1Bn1C,eAAgB,CACdC,UAAW37B,OAAO8wE,KAAO9wE,OAAO8wE,IAAIC,WAClC/wE,OAAO8wE,IAAIC,SAAS,SAAU,qBAC9B/wE,OAAO8wE,IAAIC,SAA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","file":"static/js/app.ac6a5ffb0464738cd624.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"55d5f2926c7b22177236\",\"3\":\"6817af5c7ddbbd72fbf1\",\"4\":\"927a84e2225924985925\",\"5\":\"bbbe2165b2726754babd\",\"6\":\"c6e50a831e6b09d426c7\",\"7\":\"7a9d3de7e3eb6affa8fa\",\"8\":\"6e10d130a82421e5de97\",\"9\":\"4c310a18d1e30d64ab78\",\"10\":\"b67f1d16d8fdcd03f775\",\"11\":\"88732498617afe7ab4fa\",\"12\":\"21fb2f8c9787acc40766\",\"13\":\"bd887f6f8965a89629f1\",\"14\":\"8d076150d2d32a70c85c\",\"15\":\"458ea2a090159a1c312d\",\"16\":\"b026bc770b996a75ab86\",\"17\":\"37f97cc3eab74f285530\",\"18\":\"5e155da6b34cb233975a\",\"19\":\"4449616295c79e9feb82\",\"20\":\"c3c9f56f752974bf19cf\",\"21\":\"13590b4f67813801857e\",\"22\":\"af3b6f25635a9809f6e8\",\"23\":\"27002d630c581d75786b\",\"24\":\"17fecccd566085bc7273\",\"25\":\"d92131b48359fae551a4\",\"26\":\"8e2b950cad8e4bb7145f\",\"27\":\"b70f29d1c24421eeb8e0\",\"28\":\"3eeac63a0c7d7ca9f57e\",\"29\":\"a9703e50212c8482b1b8\",\"30\":\"ccdf2a34d5a00135f6b7\",\"31\":\"079c61206f2e6ac69873\",\"32\":\"2c5f6af0c5d2d87ad611\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"4\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"4e6541aa0979ab5fe8ab\",\"3\":\"2f4099421df47087d7d1\",\"4\":\"10e378d3da0e7f32661d\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([593,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.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 const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n let unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n unicodeDomain = '🌏' + unicodeDomain\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !data.hasOwnProperty('oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n if (data.akkoma) {\n const { akkoma } = data\n if (akkoma && akkoma.source && akkoma.source.mediaType === 'text/x.misskeymarkdown') {\n output.mfm_content = akkoma.source.content\n }\n } else {\n output.mfm_content = null\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 return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n 'favourite': 'like',\n 'reblog': 'repeat'\n }\n const masto = !data.hasOwnProperty('ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n output.emoji_url = data.emoji_url\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","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n let message = val.reduce((acc, message) => {\n let key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_MASCOT_URL = '/api/v1/pleroma/mascot'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(NOTIFICATION_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, 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 let url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n let url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n let url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n let url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n let url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n let url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers: headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers: headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all'\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n 'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n let status = ''\n let statusText = ''\n\n let pagination = {}\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.errors) {\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.status = status\n data.statusText = statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n let postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst fetchMascot = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_MASCOT_URL, credentials })\n}\n\nconst updateMascot = ({ mascot, credentials }) => {\n const form = new FormData()\n form.append('file', mascot)\n return fetch(MASTODON_MASCOT_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices: choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n 'account_id': userId,\n 'status_ids': statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n let url = MASTODON_SEARCH_2\n let params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n params.push(['with_relationships', true])\n\n let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n 'JOINED': 1,\n 'CLOSED': 2,\n 'ERROR': 3,\n 'DISABLED': 4,\n 'STARTING': 5,\n 'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n 'content': content\n }\n\n if (mediaId) {\n payload['media_id'] = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload: payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n 'last_read_id': lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n fetchUser,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n fetchFollowRequests,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchMascot,\n updateMascot,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRobot\n)\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact',\n 'bot'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=764c87f9\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"Avatar\"\n :class=\"{ '-compact': compact }\"\n >\n <StillImage\n v-if=\"user\"\n class=\"avatar\"\n :alt=\"user.screen_name_ui\"\n :title=\"user.screen_name_ui\"\n :src=\"imgSrc(user.profile_image_url_original)\"\n :image-load-error=\"imageLoadError\"\n :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n />\n <div\n v-else\n class=\"avatar -placeholder\"\n :class=\"{ '-compact': compact }\"\n />\n <FAIcon\n v-if=\"bot\"\n icon=\"robot\"\n class=\"bot-indicator\"\n />\n </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgba(127, 127, 127, 0.5);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n\n}\n</style>\n","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","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // Either 'top' or 'bottom'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean\n },\n data () {\n return {\n hidden: true,\n styles: { opacity: 0 },\n oldSize: { width: 0, height: 0 }\n }\n },\n methods: {\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {\n opacity: 0\n }\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one v-slot:trigger.\n const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const screenBox = anchorEl.getBoundingClientRect()\n // Screen position of the origin point for popover\n const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n const content = this.$refs.content\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentBounds = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n min: parentBounds.left + (margin.left || 0),\n max: parentBounds.right - (margin.right || 0)\n } : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n min: parentBounds.top + (margin.top || 0),\n max: parentBounds.bottom - (margin.bottom || 0)\n } : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n\n // If overflowing from left, move it so that it doesn't\n if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n }\n\n // If overflowing from right, move it so that it doesn't\n if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n }\n\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n let vPadding = 0\n if (this.removePadding && usingTop) {\n const anchorStyle = getComputedStyle(anchorEl)\n vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n }\n\n const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n : yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n // Note, separate translateX and translateY avoids blurry text on chromium,\n // single translate or translate3d resulted in blurry text.\n this.styles = {\n opacity: 1,\n transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n }\n },\n showPopover () {\n const wasHidden = this.hidden\n this.hidden = false\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.styles = { opacity: 0 }\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') this.showPopover()\n },\n onMouseleave (e) {\n if (this.trigger === 'hover') this.hidePopover()\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.hidden) return\n if (this.$el.contains(e.target)) return\n this.hidePopover()\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n created () {\n document.addEventListener('click', this.onClickOutside)\n },\n unmounted () {\n document.removeEventListener('click', this.onClickOutside)\n this.hidePopover()\n }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=24420bf0\"\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=24420bf0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n >\n <button\n ref=\"trigger\"\n class=\"button-unstyled popover-trigger-button\"\n type=\"button\"\n @click=\"onClick\"\n >\n <slot name=\"trigger\" />\n </button>\n <div\n v-if=\"!hidden\"\n ref=\"content\"\n :style=\"styles\"\n class=\"popover\"\n :class=\"popoverClass || 'popover-default'\"\n >\n <slot\n name=\"content\"\n class=\"popover-inner\"\n :close=\"hidePopover\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: 500;\n position: absolute;\n min-width: 0;\n}\n\n.popover-default {\n transition: opacity 0.3s;\n\n &:after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: .5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: 200;\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: .5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0px;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon)\n }\n }\n\n &:active, &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0px;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0px 0px 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: '✓';\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: '•';\n }\n }\n }\n\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=icon-] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n</style>\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n * attributes without values represented as boolean true\n */\nexport const getAttrs = tag => {\n const innertag = tag\n .substring(1, tag.length - 1)\n .replace(new RegExp('^' + getTagName(tag)), '')\n .replace(/\\/?$/, '')\n .trim()\n const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n .map(([trash, key, value]) => [key, value])\n .map(([k, v]) => {\n if (!v) return [k, true]\n return [k, v.substring(1, v.length - 1)]\n })\n return Object.fromEntries(attrs)\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 (let 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 (let 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 let buffer = [] // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n 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","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const regex = /tag[s]*\\/(\\w+)$/g\n const result = regex.exec(url)\n if (!result) {\n return false\n }\n return result[1]\n}\n","import { 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","import { render } from \"./hashtag_link.vue?vue&type=template&id=c545d9d6\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n * of where they are (beginning/middle/end), even single mentions are converted\n * to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n * proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n * possible in vue. Current solution is to emit 'parseReady' event when parsing\n * is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n name: 'RichContent',\n components: {\n MentionsLine,\n HashtagLink\n },\n props: {\n // Original html content\n html: {\n required: true,\n type: String\n },\n attentions: {\n required: false,\n default: () => []\n },\n // Emoji object, as in status.emojis, note the \"s\" at the end...\n emoji: {\n required: true,\n type: Array\n },\n // Whether to handle links or not (posts: yes, everything else: no)\n handleLinks: {\n required: false,\n type: Boolean,\n default: false\n },\n // Meme arrows\n greentext: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n // NEVER EVER TOUCH DATA INSIDE RENDER\n render () {\n // Pre-process HTML\n const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n let currentMentions = null // Current chain of mentions, we group all mentions together\n // This is used to recover spacing removed when parsing mentions\n let lastSpacing = ''\n\n const lastTags = [] // Tags that appear at the end of post body\n const writtenMentions = [] // All mentions that appear in post body\n const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n // to collapse too many mentions in a row\n const writtenTags = [] // All tags that appear in post body\n // unique index for vue \"tag\" property\n let mentionIndex = 0\n let tagsIndex = 0\n\n const renderImage = (tag) => {\n return <StillImage\n {...getAttrs(tag)}\n class=\"img\"\n />\n }\n\n const renderHashtag = (attrs, children, encounteredTextReverse) => {\n const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n writtenTags.push(linkData)\n if (!encounteredTextReverse) {\n lastTags.push(linkData)\n }\n const { url, tag, content } = linkData\n return <HashtagLink url={url} tag={tag} content={content}/>\n }\n\n const renderMention = (attrs, children) => {\n const linkData = getLinkData(attrs, children, mentionIndex++)\n linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n writtenMentions.push(linkData)\n if (currentMentions === null) {\n currentMentions = []\n }\n currentMentions.push(linkData)\n if (currentMentions.length > MENTIONS_LIMIT) {\n invisibleMentions.push(linkData)\n }\n if (currentMentions.length === 1) {\n return <MentionsLine mentions={ currentMentions } />\n } else {\n return ''\n }\n }\n\n const renderLink = (attrs, children) => {\n const updatedLink = attrs['href'].replace(/&/g, '&')\n const updatedChildren = children.map(child => {\n if (typeof child === 'string') {\n return child.replace(attrs['href'], updatedLink)\n }\n if (child[0] === '<span>') {\n return <span>\n { child[1] }\n </span>\n }\n return child[1]\n })\n return <a {...{ attrs }} href={updatedLink}>\n { ...updatedChildren }\n </a>\n }\n // Processor to use with html_tree_converter\n const processItem = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (item.includes('\\n')) {\n currentMentions = null\n }\n if (emptyText) {\n // don't include spaces when processing mentions - we'll include them\n // in MentionsLine\n lastSpacing = item\n // Don't remove last space in a container (fixes poast mentions)\n return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n }\n\n currentMentions = null\n if (item.includes(':')) {\n item = ['', processTextForEmoji(\n item,\n this.emoji,\n ({ shortcode, url }) => {\n return <StillImage\n class=\"emoji img\"\n src={url}\n title={`:${shortcode}:`}\n alt={`:${shortcode}:`}\n />\n }\n )]\n }\n return item\n }\n\n // Handle tag nodes\n if (Array.isArray(item)) {\n const [opener, children, closer] = item\n const Tag = getTagName(opener)\n const attrs = getAttrs(opener)\n const previouslyMentions = currentMentions !== null\n /* During grouping of mentions we trim all the empty text elements\n * This padding is added to recover last space removed in case\n * we have a tag right next to mentions\n */\n const mentionsLinePadding =\n // Padding is only needed if we just finished parsing mentions\n previouslyMentions &&\n // Don't add padding if content is string and has padding already\n !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n ? lastSpacing\n : ''\n switch (Tag) {\n case 'br':\n currentMentions = null\n break\n case 'img': // replace images with StillImage\n return ['', [mentionsLinePadding, renderImage(opener)], '']\n case 'a': // replace mentions with MentionLink\n if (!this.handleLinks) break\n if (attrs['class'] && attrs['class'].includes('mention')) {\n // Handling mentions here\n return renderMention(attrs, children)\n } else {\n currentMentions = null\n if (attrs['href']) {\n return renderLink(attrs, children)\n }\n break\n }\n case 'span':\n if (this.handleLinks && attrs['class'] && attrs['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 attrs = getAttrs(opener)\n // should only be this\n if (\n (attrs['class'] && attrs['class'].includes('hashtag')) || // Pleroma style\n (attrs['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 case '':\n return [...children].reverse().map(processItemReverse).reverse()\n }\n\n // Render tag as is\n if (children !== undefined) {\n const newChildren = Array.isArray(children)\n ? [...children].reverse().map(processItemReverse).reverse()\n : children\n return <Tag {...getAttrs(opener)}>\n { newChildren }\n </Tag>\n } else {\n return <Tag/>\n }\n }\n return item\n }\n\n const pass1 = convertHtmlToTree(html).map(processItem)\n const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n // DO NOT USE SLOTS they cause a re-render feedback loop here.\n // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n // at least until vue3?\n const result = <span class=\"RichContent\">\n { pass2 }\n </span>\n\n const event = {\n lastTags,\n writtenMentions,\n writtenTags,\n invisibleMentions\n }\n\n // DO NOT MOVE TO UPDATE. BAD IDEA.\n this.$emit('parseReady', event)\n\n return result\n }\n}\n\nconst getLinkData = (attrs, children, index) => {\n const stripTags = (item) => {\n if (typeof item === 'string') {\n return item\n } else {\n return item[1].map(stripTags).join('')\n }\n }\n const textContent = children.map(stripTags).join('')\n return {\n index,\n url: attrs.href,\n tag: attrs['data-tag'],\n content: flattenDeep(children).join(''),\n textContent\n }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n const greentextHandle = new Set(['p', 'div'])\n\n const lines = convertHtmlToLines(html)\n const newHtml = lines.reverse().map((item, index, array) => {\n if (!item.text) return item\n const string = item.text\n\n // Greentext stuff\n if (\n // Only if greentext is engaged\n greentext &&\n // Only handle p's and divs. Don't want to affect blockquotes, code etc\n item.level.every(l => greentextHandle.has(l)) &&\n // Only if line begins with '>' or '<'\n (string.includes('>') || string.includes('<'))\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('>')) {\n return `<span class='greentext'>${string}</span>`\n } else if (cleanedString.startsWith('<')) {\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","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","import { 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","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/flash/)) {\n return 'flash'\n }\n\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","<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 <router-link :to=\"userProfileLink\">\n {{ status.user.screen_name_ui }}\n </router-link>\n </small>\n <small\n v-if=\"showReasonMutedThread\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted') }}\n </small>\n <small\n v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted_and_words') }}\n </small>\n <small\n class=\"mute-words\"\n :title=\"muteWordHits.join(', ')\"\n >\n {{ muteWordHits.join(', ') }}\n </small>\n <button\n class=\"unmute button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n icon=\"eye-slash\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"showPinned\"\n class=\"pin\"\n >\n <FAIcon\n icon=\"thumbtack\"\n class=\"faint\"\n />\n <span class=\"faint\">{{ $t('status.pinned') }}</span>\n </div>\n <div\n v-if=\"retweet && !noHeading && !inConversation\"\n :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n :style=\"[repeaterStyle]\"\n class=\"status-container repeat-info\"\n >\n <UserAvatar\n v-if=\"retweet\"\n class=\"left-side repeater-avatar\"\n :bot=\"rtBotIndicator\"\n :better-shadow=\"betterShadow\"\n :user=\"statusoid.user\"\n />\n <div class=\"right-side faint\">\n <span\n class=\"status-username repeater-name\"\n :title=\"retweeter\"\n >\n <router-link\n v-if=\"retweeterHtml\"\n :to=\"retweeterProfileLink\"\n >\n <RichContent\n :html=\"retweeterHtml\"\n :emoji=\"retweeterUser.emoji\"\n />\n </router-link>\n <router-link\n v-else\n :to=\"retweeterProfileLink\"\n >{{ retweeter }}</router-link>\n </span>\n {{ ' ' }}\n <FAIcon\n icon=\"retweet\"\n class=\"repeat-icon\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ $t('timeline.repeated') }}\n </div>\n </div>\n\n <div\n v-if=\"!deleted\"\n :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n :style=\"[ userStyle ]\"\n class=\"status-container\"\n :data-tags=\"tags\"\n >\n <div\n v-if=\"!noHeading\"\n class=\"left-side\"\n >\n <a\n :href=\"$router.resolve(userProfileLink).href\"\n @click.stop.prevent.capture=\"toggleUserExpanded\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"compact\"\n :better-shadow=\"betterShadow\"\n :user=\"status.user\"\n />\n </a>\n </div>\n <div class=\"right-side\">\n <UserCard\n v-if=\"userExpanded\"\n :user-id=\"status.user.id\"\n :rounded=\"true\"\n :bordered=\"true\"\n class=\"usercard\"\n />\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 <router-link\n class=\"account-name\"\n :title=\"status.user.screen_name_ui\"\n :to=\"userProfileLink\"\n >\n {{ status.user.screen_name_ui }}\n </router-link>\n <img\n v-if=\"!!(status.user && status.user.favicon)\"\n class=\"status-favicon\"\n :src=\"status.user.favicon\"\n >\n </div>\n\n <span class=\"heading-right\">\n <router-link\n class=\"timeago faint-link\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n >\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"60\"\n />\n </router-link>\n <span\n v-if=\"status.visibility\"\n class=\"visibility-icon\"\n :title=\"visibilityLocalized\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"visibilityIcon(status.visibility)\"\n />\n </span>\n <button\n v-if=\"expandable && !isPreview\"\n class=\"button-unstyled\"\n :title=\"$t('status.expand')\"\n @click.prevent=\"toggleExpanded\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"plus-square\"\n />\n </button>\n <button\n v-if=\"unmuted\"\n class=\"button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n class=\"fa-scale-110\"\n />\n </button>\n <button\n v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n @click.prevent=\"toggleThreadDisplay\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <button\n v-if=\"dive && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"$t('status.show_only_conversation_under_this')\"\n @click.prevent=\"dive\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"'angle-double-right'\"\n />\n </button>\n </span>\n </div>\n <div\n v-if=\"isReply || hasMentionsLine\"\n class=\"heading-reply-row\"\n >\n <span\n v-if=\"isReply\"\n class=\"glued-label reply-glued-label\"\n >\n <StatusPopover\n v-if=\"!isPreview\"\n :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n class=\"reply-to-popover\"\n style=\"min-width: 0\"\n :class=\"{ '-strikethrough': !status.parent_visible }\"\n >\n <button\n class=\"button-unstyled reply-to\"\n :aria-label=\"$t('tool_tip.reply')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n flip=\"horizontal\"\n />\n {{ ' ' }}\n <span\n class=\"reply-to-text\"\n >\n {{ $t('status.reply_to') }}\n </span>\n </button>\n </StatusPopover>\n\n <span\n v-else\n class=\"reply-to-no-popover\"\n >\n <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n </span>\n <MentionLink\n :content=\"replyToName\"\n :url=\"replyProfileLink\"\n :user-id=\"status.in_reply_to_user_id\"\n :user-screen-name=\"status.in_reply_to_screen_name\"\n />\n </span>\n\n <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n <!-- \"Mentions\" label to the first mention -->\n <span\n v-if=\"hasMentionsLine\"\n class=\"glued-label\"\n >\n <span\n class=\"mentions\"\n :aria-label=\"$t('tool_tip.mentions')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <span\n class=\"mentions-text\"\n >\n {{ $t('status.mentions') }}\n </span>\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(0, 1)\"\n class=\"mentions-line-first\"\n />\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(1)\"\n class=\"mentions-line\"\n />\n </div>\n </div>\n\n <StatusContent\n ref=\"content\"\n :status=\"status\"\n :no-heading=\"noHeading\"\n :highlight=\"highlight\"\n :focused=\"isFocused\"\n :controlled-showing-tall=\"controlledShowingTall\"\n :controlled-expanding-subject=\"controlledExpandingSubject\"\n :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n @mediaplay=\"addMediaPlaying($event)\"\n @mediapause=\"removeMediaPlaying($event)\"\n @parseReady=\"setHeadTailLinks\"\n />\n\n <div\n v-if=\"inConversation && !isPreview && replies && replies.length\"\n class=\"replies\"\n >\n <button\n v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n class=\"button-unstyled -link faint\"\n :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n @click.prevent=\"dive\"\n >\n {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n </button>\n <span\n v-else\n class=\"faint\"\n >\n {{ $t('status.replies_list') }}\n </span>\n <StatusPopover\n v-for=\"reply in replies\"\n :key=\"reply.id\"\n :status-id=\"reply.id\"\n >\n <button\n class=\"button-unstyled -link reply-link\"\n @click.prevent=\"gotoOriginal(reply.id)\"\n >\n {{ reply.name }}\n </button>\n </StatusPopover>\n </div>\n\n <transition name=\"fade\">\n <div\n v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n class=\"favs-repeated-users\"\n >\n <div class=\"stats\">\n <UserListPopover\n v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n :users=\"statusFromGlobalRepository.rebloggedBy\"\n >\n <div class=\"stat-count\">\n <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.rebloggedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <UserListPopover\n v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n :users=\"statusFromGlobalRepository.favoritedBy\"\n >\n <div\n class=\"stat-count\"\n >\n <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.favoritedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <div class=\"avatar-row\">\n <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n </div>\n </div>\n </div>\n </transition>\n\n <EmojiReactions\n v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n :status=\"status\"\n />\n\n <div\n v-if=\"!noHeading && !isPreview\"\n class=\"status-actions\"\n >\n <reply-button\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n <retweet-button\n :visibility=\"status.visibility\"\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <favorite-button\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <ReactButton\n v-if=\"loggedIn\"\n :status=\"status\"\n />\n <extra-buttons\n :status=\"status\"\n @onError=\"showError\"\n @onSuccess=\"clearError\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"gravestone\"\n >\n <div class=\"left-side\">\n <UserAvatar\n class=\"post-avatar\"\n :compact=\"compact\"\n :bot=\"botIndicator\"\n />\n </div>\n <div class=\"right-side\">\n <div class=\"deleted-text\">\n {{ $t('status.status_deleted') }}\n </div>\n <reply-button\n v-if=\"replying\"\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n </div>\n </div>\n <div\n v-if=\"replying\"\n class=\"status-container reply-form\"\n >\n <PostStatusForm\n class=\"reply-body\"\n :reply-to=\"status.id\"\n :attentions=\"status.attentions\"\n :replied-user=\"status.user\"\n :copy-message-scope=\"status.visibility\"\n :subject=\"replySubject\"\n @posted=\"toggleReplying\"\n />\n </div>\n </template>\n </div>\n</template>\n\n<script src=\"./status.js\" ></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"ReplyButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"{'-active': replying}\"\n :title=\"$t('tool_tip.reply')\"\n @click.prevent=\"$emit('toggle')\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n />\n </button>\n <span v-else>\n <FAIcon\n icon=\"reply\"\n class=\"fa-scale-110 fa-old-padding\"\n :title=\"$t('tool_tip.reply')\"\n />\n </span>\n <span\n v-if=\"status.replies_count > 0\"\n class=\"action-counter\"\n >\n {{ status.replies_count }}\n </span>\n </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=56f413c0\"\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=56f413c0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n :spin=\"animated\"\n />\n </button>\n <span v-else>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :title=\"$t('tool_tip.favorite')\"\n :icon=\"['far', 'star']\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n class=\"action-counter\"\n >\n {{ status.fave_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./favorite_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=21f861d8\"\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=21f861d8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"ReactButton\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n @show=\"focusInput\"\n >\n <template v-slot:content=\"{close}\">\n <div class=\"reaction-picker-filter\">\n <input\n v-model=\"filterWord\"\n size=\"1\"\n :placeholder=\"$t('emoji.search_emoji')\"\n >\n </div>\n <div class=\"reaction-picker\">\n <span\n v-for=\"emoji in commonEmojis\"\n :key=\"emoji.replacement\"\n class=\"emoji-button\"\n :title=\"emoji.displayText\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n {{ emoji.replacement }}\n </span>\n <div class=\"reaction-picker-divider\" />\n <span\n v-for=\"(emoji, key) in emojis\"\n :key=\"key\"\n class=\"emoji-button\"\n :title=\"emoji.displayText\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n <img\n v-if=\"emoji.imageUrl !== false\"\n :src=\"emoji.imageUrl\"\n width=\"30px\"\n class=\"custom-reaction\"\n >\n <span v-else>\n {{ emoji.replacement }}\n </span>\n </span>\n <div class=\"reaction-bottom-fader\" />\n </div>\n </template>\n <template v-slot:trigger>\n <button\n class=\"button-unstyled popover-trigger\"\n :title=\"$t('tool_tip.add_reaction')\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"['far', 'smile-beam']\"\n />\n </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./react_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.custom-reaction {\n width: 30px !important;\n}\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n\n mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n /* override of popover internal stuff */\n .popover-trigger-button {\n width: auto;\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: ''\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n focusInput () {\n this.$nextTick(() => {\n const input = this.$el.querySelector('input')\n if (input) input.focus()\n })\n }\n },\n computed: {\n commonEmojis () {\n return [\n { displayText: 'thumbsup', replacement: '👍' },\n { displayText: 'angry', replacement: '😠' },\n { displayText: 'eyes', replacement: '👀' },\n { displayText: 'joy', replacement: '😂' },\n { displayText: 'fire', replacement: '🔥' }\n ]\n },\n emojis () {\n if (this.filterWord !== '') {\n const filterWordLowercase = this.filterWord.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]) {\n if (emoji.replacement === this.filterWord) return [emoji]\n\n const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n if (indexOfFilterWord > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n orderedEmojiList[indexOfFilterWord] = []\n }\n orderedEmojiList[indexOfFilterWord].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ] || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=0101edf8\"\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=0101edf8&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"retweet\"\n :spin=\"animated\"\n />\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 <span v-else>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"retweet\"\n :title=\"$t('tool_tip.repeat')\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n class=\"no-event\"\n >\n {{ status.repeat_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./retweet_button.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=46fe49c4\"\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=46fe49c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n class=\"ExtraButtons\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template v-slot:content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n v-if=\"canMute && !status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"muteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.mute_conversation\") }}</span>\n </button>\n <button\n v-if=\"canMute && status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unmuteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n </button>\n <button\n v-if=\"!status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"pinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.pin\") }}</span>\n </button>\n <button\n v-if=\"status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unpinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.unpin\") }}</span>\n </button>\n <button\n v-if=\"!status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"bookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'bookmark']\"\n /><span>{{ $t(\"status.bookmark\") }}</span>\n </button>\n <button\n v-if=\"status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unbookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"bookmark\"\n /><span>{{ $t(\"status.unbookmark\") }}</span>\n </button>\n <button\n v-if=\"canDelete\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"deleteStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n /><span>{{ $t(\"status.delete\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"copyLink\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"share-alt\"\n /><span>{{ $t(\"status.copy_link\") }}</span>\n </button>\n <a\n v-if=\"!status.is_local\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n title=\"Source\"\n :href=\"status.external_url\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n icon=\"external-link-alt\"\n /><span>{{ $t(\"status.external_source\") }}</span>\n </a>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"reportStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'flag']\"\n /><span>{{ $t(\"user_card.report\") }}</span>\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled popover-trigger\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"ellipsis-h\"\n />\n </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ExtraButtons {\n /* override of popover internal stuff */\n .popover-trigger-button {\n width: auto;\n }\n\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag\n)\n\nconst ExtraButtons = {\n props: [ 'status' ],\n components: { Popover },\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n }\n }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=3a956a44\"\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=3a956a44&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 popover-class=\"popover-default status-popover\"\n :bound-to=\"{ x: 'container' }\"\n @show=\"enter\"\n >\n <template v-slot:trigger>\n <slot />\n </template>\n <template v-slot:content>\n <Status\n v-if=\"status\"\n :is-preview=\"true\"\n :statusoid=\"status\"\n :compact=\"true\"\n />\n <div\n v-else-if=\"error\"\n class=\"status-preview-no-content faint\"\n >\n {{ $t('status.status_unavailable') }}\n </div>\n <div\n v-else\n class=\"status-preview-no-content\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"2x\"\n />\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./status_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);\n box-shadow: var(--popupShadow);\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}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=fa4a5d94\"\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=fa4a5d94&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 v-slot:trigger>\n <slot />\n </template>\n <template v-slot: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>\n </div>\n </div>\n </template>\n <template v-else>\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n </template>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\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 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=3dc0c2d4\"\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=3dc0c2d4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"emoji-reactions\">\n <UserListPopover\n v-for=\"(reaction) in emojiReactions\"\n :key=\"reaction.name\"\n :users=\"accountsForEmoji[reaction.name]\"\n >\n <button\n class=\"emoji-reaction btn button-default\"\n :class=\"{ 'picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n @click=\"emojiOnClick(reaction.name, $event)\"\n @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n >\n <span\n v-if=\"reaction.url !== null\"\n >\n <img\n :src=\"reaction.url\"\n :title=\"reaction.name\"\n class=\"reaction-emoji\"\n width=\"2.55em\"\n >\n {{ reaction.count }}\n </span>\n <span v-else>\n <span class=\"reaction-emoji unicode-emoji\">\n {{ reaction.name }}\n </span>\n <span>{{ reaction.count }}</span>\n </span>\n </button>\n </UserListPopover>\n <a\n v-if=\"tooManyReactions\"\n class=\"emoji-reaction-expand faint\"\n href=\"javascript:void(0)\"\n @click=\"toggleShowAll\"\n >\n {{ showAll ? $t('general.show_less') : showMoreString }}\n </a>\n </div>\n</template>\n\n<script src=\"./emoji_reactions.js\" ></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-reactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n}\n\n.unicode-emoji {\n font-size: 210%;\n}\n\n.emoji-reaction {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n .reaction-emoji {\n width: 2.55em !important;\n margin-right: 0.25em;\n }\n &:focus {\n outline: none;\n }\n\n &.not-clickable {\n cursor: default;\n &:hover {\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n }\n }\n}\n\n.emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n &:hover {\n text-decoration: underline;\n }\n}\n\n.picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: calc(0.5em - 1px);\n}\n\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=1bf35779\"\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=1bf35779&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n const camelized = camelCase(name)\n const set = `controlledSet${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[set]) {\n obj[set](val)\n } else {\n obj[uncontrolledName] = val\n }\n}\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserCard,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent,\n RichContent,\n MentionLink,\n MentionsLine\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId',\n\n 'simpleTree',\n 'controlledThreadDisplayStatus',\n 'controlledToggleThreadDisplay',\n 'showOtherRepliesAsButton',\n\n 'controlledShowingTall',\n 'controlledToggleShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject',\n 'controlledReplying',\n 'controlledToggleReplying',\n 'controlledMediaPlaying',\n 'controlledSetMediaPlaying',\n 'dive'\n ],\n data () {\n return {\n uncontrolledReplying: false,\n unmuted: false,\n userExpanded: false,\n uncontrolledMediaPlaying: [],\n suspendable: true,\n error: null,\n headTailLinks: null\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n // FIXME Why user not found sometimes???\n return user ? user.statusnet_profile_url : 'NOT_FOUND'\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeterUser () { return this.statusoid.user },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n retweeterHtml () { return this.statusoid.user.name },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n rtBotStatus () {\n return this.statusoid.user.bot\n },\n botStatus () {\n return this.status.user.bot\n },\n botIndicator () {\n return this.botStatus && !this.hideBotIndication\n },\n rtBotIndicator () {\n return this.rtBotStatus && !this.hideBotIndication\n },\n mentionsLine () {\n if (!this.headTailLinks) return []\n const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n return this.status.attentions.filter(attn => {\n // no reply user\n return attn.id !== this.status.in_reply_to_user_id &&\n // no self-replies\n attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n // don't include if mentions is written\n !writtenSet.has(attn.statusnet_profile_url)\n }).map(attn => ({\n url: attn.statusnet_profile_url,\n content: attn.screen_name,\n userId: attn.id\n }))\n },\n hasMentionsLine () {\n return this.mentionsLine.length > 0\n },\n muted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const reasonsToMute = this.userIsMuted ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0 ||\n // bot status\n (this.muteBotStatuses && this.botStatus && !this.compact)\n return !this.unmuted && !this.shouldNotMute && reasonsToMute\n },\n userIsMuted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n return status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting)\n },\n shouldNotMute () {\n const { status } = this\n const { reblog } = status\n return (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n },\n hideMutedUsers () {\n return this.mergedConfig.hideMutedPosts\n },\n hideMutedThreads () {\n return this.mergedConfig.hideMutedThreads\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideWordFilteredPosts () {\n return this.mergedConfig.hideWordFilteredPosts\n },\n hideStatus () {\n return (!this.shouldNotMute) && (\n (this.muted && this.hideFilteredStatuses) ||\n (this.userIsMuted && this.hideMutedUsers) ||\n (this.status.thread_muted && this.hideMutedThreads) ||\n (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n )\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n muteBotStatuses () {\n return this.mergedConfig.muteBotStatuses\n },\n hideBotIndication () {\n return this.mergedConfig.hideBotIndication\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n },\n inThreadForest () {\n return !!this.controlledThreadDisplayStatus\n },\n threadShowing () {\n return this.controlledThreadDisplayStatus === 'showing'\n },\n visibilityLocalized () {\n return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n }\n },\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 case 'local':\n return 'users'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n controlledOrUncontrolledToggle(this, 'replying')\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n },\n removeMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n },\n setHeadTailLinks (headTailLinks) {\n this.headTailLinks = headTailLinks\n },\n toggleThreadDisplay () {\n this.controlledToggleThreadDisplay()\n },\n scrollIfHighlighted (highlightId) {\n const id = highlightId\n if (this.status.id === id) {\n let rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n }\n },\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=7387c01f\"\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 \"/home/hannah/personal/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-card\"\n :class=\"classes\"\n >\n <div\n :class=\"{ 'hide-bio': hideBio }\"\n :style=\"style\"\n class=\"background-image\"\n />\n <div class=\"panel-heading -flexible-height\">\n <div class=\"user-info\">\n <div class=\"container\">\n <a\n v-if=\"allowZoomingAvatar\"\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 <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 <RichContent\n :title=\"user.name\"\n class=\"user-name\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\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 </div>\n <div class=\"bottom-line\">\n <router-link\n class=\"user-screen-name\"\n :title=\"user.screen_name_ui\"\n :to=\"userProfileLink(user)\"\n >\n @{{ user.screen_name_ui }}\n </router-link>\n <template v-if=\"!hideBio\">\n <span\n v-if=\"user.deactivated\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.deactivated') }}\n </span>\n <span\n v-if=\"!!visibleRole\"\n class=\"alert user-role\"\n >\n {{ $t(`general.role.${visibleRole}`) }}\n </span>\n <span\n v-if=\"user.bot\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.bot') }}\n </span>\n </template>\n <span v-if=\"user.locked\">\n <FAIcon\n class=\"lock-icon\"\n icon=\"lock\"\n size=\"sm\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n class=\"dailyAvg\"\n >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n </div>\n </div>\n </div>\n <div class=\"user-meta\">\n <div\n v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n class=\"following\"\n >\n {{ $t('user_card.follows_you') }}\n </div>\n <div\n v-if=\"isOtherUser && (loggedIn || !switcher)\"\n class=\"highlighter\"\n >\n <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColorTx'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightText\"\n type=\"text\"\n >\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColor'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightCl\"\n type=\"color\"\n >\n {{ ' ' }}\n <Select\n :id=\"'userHighlightSel'+user.id\"\n v-model=\"userHighlightType\"\n class=\"userHighlightSel\"\n >\n <option value=\"disabled\">\n {{ $t('user_card.highlight.disabled') }}\n </option>\n <option value=\"solid\">\n {{ $t('user_card.highlight.solid') }}\n </option>\n <option value=\"striped\">\n {{ $t('user_card.highlight.striped') }}\n </option>\n <option value=\"side\">\n {{ $t('user_card.highlight.side') }}\n </option>\n </Select>\n </div>\n </div>\n <div\n v-if=\"loggedIn && isOtherUser\"\n class=\"user-interactions\"\n >\n <div class=\"btn-group\">\n <FollowButton\n :relationship=\"relationship\"\n :user=\"user\"\n />\n <template v-if=\"relationship.following\">\n <ProgressButton\n v-if=\"!relationship.subscribing\"\n class=\"btn button-default\"\n :click=\"subscribeUser\"\n :title=\"$t('user_card.subscribe')\"\n >\n <FAIcon icon=\"bell\" />\n </ProgressButton>\n <ProgressButton\n v-else\n class=\"btn button-default toggled\"\n :click=\"unsubscribeUser\"\n :title=\"$t('user_card.unsubscribe')\"\n >\n <FALayers>\n <FAIcon\n icon=\"rss\"\n transform=\"left-5 shrink-6 up-3 rotate-20\"\n flip=\"horizontal\"\n />\n <FAIcon\n icon=\"rss\"\n transform=\"right-5 shrink-6 up-3 rotate-20\"\n />\n <FAIcon icon=\"bell\" />\n </FALayers>\n </ProgressButton>\n </template>\n </div>\n <div>\n <button\n v-if=\"relationship.muting\"\n class=\"btn button-default btn-block toggled\"\n :disabled=\"user.deactivated\"\n @click=\"unmuteUser\"\n >\n {{ $t('user_card.muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"muteUser\"\n >\n {{ $t('user_card.mute') }}\n </button>\n </div>\n <div>\n <button\n v-if=\"relationship.domain_blocking\"\n class=\"btn button-default btn-block toggled\"\n @click=\"unmuteDomain\"\n >\n {{ $t('user_card.domain_muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n @click=\"muteDomain\"\n >\n {{ $t('user_card.mute_domain') }}\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=\"loggedIn.role === "admin"\"\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 </div>\n </div>\n <div\n v-if=\"!hideBio\"\n class=\"panel-body\"\n >\n <div\n v-if=\"!mergedConfig.hideUserStats && switcher\"\n class=\"user-counts\"\n >\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('statuses')\"\n >\n <h5>{{ $t('user_card.statuses') }}</h5>\n <span>{{ user.statuses_count }} <br></span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('friends')\"\n >\n <h5>{{ $t('user_card.followees') }}</h5>\n <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('followers')\"\n >\n <h5>{{ $t('user_card.followers') }}</h5>\n <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n </div>\n </div>\n <RichContent\n v-if=\"!hideBio\"\n class=\"user-card-bio\"\n :html=\"user.description_html\"\n :emoji=\"user.emoji\"\n :handle-links=\"true\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n <div>\n <Popover\n trigger=\"click\"\n class=\"moderation-tools-popover\"\n placement=\"bottom\"\n :offset=\"{ y: 5 }\"\n @show=\"setToggled(true)\"\n @close=\"setToggled(false)\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <span v-if=\"user.is_local\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight("admin")\"\n >\n {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight("moderator")\"\n >\n {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </span>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleActivationStatus()\"\n >\n {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"deleteUserDialog(true)\"\n >\n {{ $t('user_card.admin_menu.delete_account') }}\n </button>\n <div\n v-if=\"hasTagPolicy\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <span v-if=\"hasTagPolicy\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_NSFW)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n />\n {{ $t('user_card.admin_menu.force_nsfw') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.STRIP_MEDIA)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n />\n {{ $t('user_card.admin_menu.strip_media') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n />\n {{ $t('user_card.admin_menu.force_unlisted') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.SANDBOX)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n />\n {{ $t('user_card.admin_menu.sandbox') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_any_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.QUARANTINE)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n />\n {{ $t('user_card.admin_menu.quarantine') }}\n </button>\n </span>\n </div>\n </template>\n <template v-slot: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 v-slot:header>\n {{ $t('user_card.admin_menu.delete_user') }}\n </template>\n <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n <template v-slot:footer>\n <button\n class=\"btn button-default\"\n @click=\"deleteUserDialog(false)\"\n >\n {{ $t('general.cancel') }}\n </button>\n <button\n class=\"btn button-default danger\"\n @click=\"deleteUser()\"\n >\n {{ $t('user_card.admin_menu.delete_user') }}\n </button>\n </template>\n </DialogModal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.moderation-tools-popover {\n height: 100%;\n .trigger {\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,i {\n font-size: 0.8em;\n }\n}\n</style>\n","<template>\n <span\n :class=\"{ 'dark-overlay': darkOverlay }\"\n @click.self.stop=\"onCancel()\"\n >\n <div\n class=\"dialog-modal panel panel-default\"\n @click.stop=\"\"\n >\n <div class=\"panel-heading dialog-modal-heading\">\n <div class=\"title\">\n <slot name=\"header\" />\n </div>\n </div>\n <div class=\"dialog-modal-content\">\n <slot name=\"default\" />\n </div>\n <div class=\"dialog-modal-footer user-interactions panel-footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgba(27,31,35,.5);\n z-index: 99;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 999;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: .5em .5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: .5rem;\n }\n }\n}\n\n</style>\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=202a26c4\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n hasTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=0ae1f97e\"\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=0ae1f97e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 v-slot:content>\n <div class=\"dropdown-menu\">\n <template v-if=\"relationship.following\">\n <button\n v-if=\"relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"hideRepeats\"\n >\n {{ $t('user_card.hide_repeats') }}\n </button>\n <button\n v-if=\"!relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"showRepeats\"\n >\n {{ $t('user_card.show_repeats') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </template>\n <button\n v-if=\"relationship.blocking\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"unblockUser\"\n >\n {{ $t('user_card.unblock') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"blockUser\"\n >\n {{ $t('user_card.block') }}\n </button>\n <button\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"reportUser\"\n >\n {{ $t('user_card.report') }}\n </button>\n <button\n v-if=\"pleromaChatMessagesAvailable\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"openChat\"\n >\n {{ $t('user_card.message') }}\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled ellipsis-button\">\n <FAIcon\n class=\"icon\"\n icon=\"ellipsis-v\"\n />\n </button>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton,\n Popover\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n })\n }\n },\n computed: {\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=cbff36f6\"\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=cbff36f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport Select from '../select/select.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit\n)\n\nexport default {\n props: [\n 'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n return {\n backgroundImage: [\n `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton,\n Select,\n RichContent\n },\n methods: {\n refetchRelationship () {\n return this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n muteUser () {\n this.$store.dispatch('muteUser', this.user.id)\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n muteDomain () {\n this.$store.dispatch('muteDomain', this.user.screen_name.split('@')[1])\n .then(() => this.refetchRelationship())\n },\n unmuteDomain () {\n this.$store.dispatch('unmuteDomain', this.user.screen_name.split('@')[1])\n .then(() => this.refetchRelationship())\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrentMedia', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n }\n }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=3cf2819d\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n 'ja_easy': 'ja',\n 'zh_Hant': 'zh-HANT',\n 'zh': 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\n\nconst getLanguageName = (code) => {\n const specialLanguageNames = {\n 'ja_easy': 'やさしいにほんご',\n 'zh': '简体中文',\n 'zh_Hant': '繁體中文'\n }\n const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n const browserLocale = internalToBrowserLocale(code)\n return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code: code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n internalToBrowserLocale,\n internalToBackendLocale,\n languages,\n getLanguageName\n}\n\nexport default localeService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","\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","<template>\n <div\n class=\"StatusContent\"\n :class=\"{ '-compact': compact }\"\n >\n <slot name=\"header\" />\n <StatusBody\n :status=\"status\"\n :compact=\"compact\"\n :single-line=\"singleLine\"\n :showing-tall=\"showingTall\"\n :expanding-subject=\"expandingSubject\"\n :showing-long-subject=\"showingLongSubject\"\n :toggle-showing-tall=\"toggleShowingTall\"\n :toggle-expanding-subject=\"toggleExpandingSubject\"\n :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n @parseReady=\"$emit('parseReady', $event)\"\n >\n <div v-if=\"status.poll && status.poll.options && !compact\">\n <Poll\n :base-poll=\"status.poll\"\n :emoji=\"status.emojis\"\n />\n </div>\n\n <div v-else-if=\"status.poll && status.poll.options && compact\">\n <FAIcon\n icon=\"poll-h\"\n size=\"2x\"\n />\n </div>\n\n <gallery\n v-if=\"status.attachments.length !== 0\"\n class=\"attachments media-body\"\n :nsfw=\"nsfwClickthrough\"\n :attachments=\"status.attachments\"\n :limit=\"compact ? 1 : 0\"\n :size=\"attachmentSize\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n\n <div\n v-if=\"status.card && !noHeading && !compact\"\n class=\"link-preview media-body\"\n >\n <link-preview\n :card=\"status.card\"\n :size=\"attachmentSize\"\n :nsfw=\"nsfwClickthrough\"\n />\n </div>\n </StatusBody>\n <slot name=\"footer\" />\n </div>\n</template>\n\n<script src=\"./status_content.js\" ></script>\n<style lang=\"scss\">\n.StatusContent {\n flex: 1;\n min-width: 0;\n\n img, video {\n &.emoji {\n width: 50px;\n height: 50px;\n }\n }\n}\n</style>\n","<template>\n <div\n class=\"poll\"\n :class=\"containerClass\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div\n v-if=\"showResults\"\n :title=\"resultTitle(option)\"\n class=\"option-result\"\n >\n <div class=\"option-result-label\">\n <span class=\"result-percentage\">\n {{ percentageForOption(option.votes_count) }}%\n </span>\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </div>\n <div\n class=\"result-fill\"\n :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n />\n </div>\n <div\n v-else\n @click=\"activateOption(index)\"\n >\n <input\n v-if=\"poll.multiple\"\n type=\"checkbox\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <input\n v-else\n type=\"radio\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <label class=\"option-vote\">\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </label>\n </div>\n </div>\n <div class=\"footer faint\">\n <button\n v-if=\"!showResults\"\n class=\"btn button-default poll-vote-button\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"vote\"\n >\n {{ $t('polls.vote') }}\n </button>\n <div class=\"total\">\n <template v-if=\"typeof poll.voters_count === 'number'\">\n {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }} · \n </template>\n <template v-else>\n {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }} · \n </template>\n </div>\n <span>\n <i18n-t\n scope=\"global\"\n :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n >\n <Timeago\n :time=\"expiresAt\"\n :auto-update=\"60\"\n :now-threshold=\"0\"\n />\n </i18n-t>\n </span>\n </div>\n </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n .poll-option {\n margin: 0.75em 0.5em;\n }\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n .option-vote {\n display: flex;\n align-items: center;\n }\n input {\n width: 3.5em;\n }\n .footer {\n display: flex;\n align-items: center;\n }\n &.loading * {\n cursor: progress;\n }\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll', 'emoji'],\n components: {\n Timeago,\n RichContent\n },\n data () {\n return {\n loading: false,\n choices: []\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n unmounted () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=5e9dea28\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusBody\"\n :class=\"{ '-compact': compact }\"\n >\n <div class=\"body\">\n <div\n v-if=\"status.summary_raw_html\"\n class=\"summary-wrapper\"\n :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n >\n <RichContent\n class=\"media-body summary\"\n :html=\"status.summary_raw_html\"\n :emoji=\"status.emojis\"\n />\n <button\n v-show=\"longSubject && showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.hide_full_subject\") }}\n </button>\n <button\n v-show=\"longSubject && !showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.show_full_subject\") }}\n </button>\n </div>\n <div\n :class=\"{'-tall-status': hideTallStatus}\"\n class=\"text-wrapper\"\n >\n <button\n v-show=\"hideTallStatus\"\n class=\"button-unstyled -link tall-status-hider\"\n :class=\"{ '-focused': focused }\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <div\n v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n >\n <MFMContent\n v-if=\"renderMisskeyMarkdown && status.mfm_content\"\n class=\"RichContent text media-body mfm-post-content\"\n :status=\"status\"\n />\n <RichContent\n v-else\n :class=\"{ '-single-line': singleLine }\"\n class=\"text media-body\"\n :html=\"status.raw_html\"\n :emoji=\"status.emojis\"\n :handle-links=\"true\"\n :greentext=\"mergedConfig.greentext\"\n :attentions=\"status.attentions\"\n @parseReady=\"onParseReady\"\n />\n </div>\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 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 { 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 },\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 methods: {\n onClick () {\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 },\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 },\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 && this.mergedConfig.mentionLinkDisplay === 'short' && this.isRemote\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 { defineComponent, h } from 'vue'\nimport * as mfm from 'mfm-js'\nimport MentionLink from '../mention_link/mention_link.vue'\nimport mention_link from '../mention_link/mention_link'\n\nfunction concat (xss) {\n return ([]).concat(...xss)\n}\n\nexport const MFM_TAGS = ['tada', 'jelly', 'twitch', 'shake', 'spin', 'jump', 'bounce', 'flip', 'x2', 'x3', 'x4', 'font', 'blur', 'rainbow', 'sparkle', 'rotate']\n\nexport default defineComponent({\n props: {\n status: {\n type: Object,\n required: true\n }\n },\n\n render () {\n if (!this.status) return null\n const ast = mfm.parse(this.status.mfm_content, { fnNameList: MFM_TAGS })\n const validTime = (t) => {\n if (t == null) return null\n return t.match(/^[0-9.]+s$/) ? t : null\n }\n\n const genEl = (ast) => concat(ast.map((token) => {\n switch (token.type) {\n case 'text': {\n const text = token.props.text.replace(/(\\r\\n|\\n|\\r)/g, '\\n')\n\n const res = []\n for (const t of text.split('\\n')) {\n res.push(h('br'))\n res.push(t)\n }\n res.shift()\n return res\n }\n\n case 'bold': {\n return [h('b', genEl(token.children))]\n }\n\n case 'strike': {\n return [h('del', genEl(token.children))]\n }\n\n case 'italic': {\n return h('i', {\n style: 'font-style: oblique;'\n }, genEl(token.children))\n }\n\n case 'fn': {\n // TODO: CSSを文字列で組み立てていくと token.props.args.~~~ 経由でCSSインジェクションできるのでよしなにやる\n let style\n switch (token.props.name) {\n case 'tada': {\n style = `font-size: 150%;` + 'animation: tada 1s linear infinite both;'\n break\n }\n case 'jelly': {\n const speed = validTime(token.props.args.speed) || '1s'\n style = `animation: mfm-rubberBand ${speed} linear infinite both;`\n break\n }\n case 'twitch': {\n const speed = validTime(token.props.args.speed) || '0.5s'\n style = `animation: mfm-twitch ${speed} ease infinite;`\n break\n }\n case 'shake': {\n const speed = validTime(token.props.args.speed) || '0.5s'\n style = `animation: mfm-shake ${speed} ease infinite;`\n break\n }\n case 'spin': {\n const direction =\n token.props.args.left ? 'reverse'\n : token.props.args.alternate ? 'alternate'\n : 'normal'\n const anime =\n token.props.args.x ? 'mfm-spinX'\n : token.props.args.y ? 'mfm-spinY'\n : 'mfm-spin'\n const speed = validTime(token.props.args.speed) || '1.5s'\n style = `animation: ${anime} ${speed} linear infinite; animation-direction: ${direction};`\n break\n }\n case 'jump': {\n style = 'animation: mfm-jump 0.75s linear infinite;'\n break\n }\n case 'bounce': {\n style = 'animation: mfm-bounce 0.75s linear infinite; transform-origin: center bottom;'\n break\n }\n case 'flip': {\n const transform =\n (token.props.args.h && token.props.args.v) ? 'scale(-1, -1)'\n : token.props.args.v ? 'scaleY(-1)'\n : 'scaleX(-1)'\n style = `transform: ${transform};`\n break\n }\n case 'x2': {\n style = `font-size: 200%;`\n break\n }\n case 'x3': {\n style = `font-size: 400%;`\n break\n }\n case 'x4': {\n style = `font-size: 600%;`\n break\n }\n case 'font': {\n const family =\n token.props.args.serif ? 'serif'\n : token.props.args.monospace ? 'monospace'\n : token.props.args.cursive ? 'cursive'\n : token.props.args.fantasy ? 'fantasy'\n : token.props.args.emoji ? 'emoji'\n : token.props.args.math ? 'math'\n : null\n if (family) style = `font-family: ${family};`\n break\n }\n case 'blur': {\n return h('span', {\n class: '_mfm_blur_'\n }, genEl(token.children))\n }\n case 'rainbow': {\n style = 'animation: mfm-rainbow 1s linear infinite;'\n break\n }\n case 'sparkle': {\n return h(MkSparkle, {}, genEl(token.children))\n }\n case 'rotate': {\n const degrees = parseInt(token.props.args.deg) || '90'\n style = `transform: rotate(${degrees}deg); transform-origin: center center;`\n break\n }\n }\n if (style == null) {\n return h('span', {}, ['$[', token.props.name, ' ', ...genEl(token.children), ']'])\n } else {\n return h('span', {\n style: 'display: inline-block;' + style\n }, genEl(token.children))\n }\n }\n\n case 'small': {\n return [h('small', {\n style: 'opacity: 0.7;'\n }, genEl(token.children))]\n }\n\n case 'center': {\n return [h('div', {\n style: 'text-align:center;'\n }, genEl(token.children))]\n }\n\n case 'url': {\n return [h('a', {\n key: Math.random(),\n href: token.props.url,\n rel: 'nofollow noopener'\n }, token.props.url)]\n }\n\n case 'link': {\n console.log(token.props)\n return [h('a', {\n key: Math.random(),\n href: token.props.url,\n rel: 'nofollow noopener'\n }, genEl(token.children))]\n }\n\n case 'mention': {\n const user = this.status.attentions.find((mention) => `@${mention.screen_name}` === token.props.acct || mention.screen_name === token.props.username)\n if (user) {\n return [h(MentionLink, {\n url: user.statusnet_profile_url,\n content: token.props.acct,\n userScreenName: token.props.acct\n })]\n }\n return null\n }\n\n case 'hashtag': {\n return [h('a', {\n rel: 'noopener noreferrer',\n target: '_blank',\n key: token.props.hashtag,\n href: this.status.tags.find((hash) => hash.name === token.props.hashtag).url\n }, `#${token.props.hashtag}`)]\n }\n\n case 'blockCode': {\n return [h('pre', {\n key: Math.random(),\n lang: token.props.lang\n }, token.props.code)]\n }\n\n case 'inlineCode': {\n return [h('pre', {\n key: Math.random(),\n code: token.props.code,\n inline: true\n })]\n }\n\n case 'quote': {\n if (!this.nowrap) {\n return [h('div', {\n class: 'quote'\n }, genEl(token.children))]\n } else {\n return [h('span', {\n class: 'quote'\n }, genEl(token.children))]\n }\n }\n\n case 'emojiCode': {\n return [h('div', {\n class: 'still-image emoji img'\n },\n [h('img', {\n key: Math.random(),\n title: token.props.name,\n alt: token.props.name,\n src: this.status.emojis.find((emoji) => emoji.shortcode === token.props.name).static_url\n })]\n )]\n }\n\n case 'unicodeEmoji': {\n return token.props.emoji\n }\n\n case 'math': {\n return [h('pre', {\n key: Math.random(),\n code: token.props.code\n })]\n }\n\n case 'mathInline': {\n return [h('pre', {\n key: Math.random(),\n code: token.props.code,\n inline: true\n })]\n }\n\n default: {\n console.error('unrecognized ast type:', token.type)\n\n return []\n }\n }\n }))\n\n // Parse ast to DOM\n return h('span', genEl(ast))\n }\n})\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport MFMContent from 'src/components/mfm_content/mfm_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 const { renderMisskeyMarkdown } = this.$store.getters.mergedConfig\n return {\n postLength: this.status.text.length,\n parseReadyDone: false,\n renderMisskeyMarkdown\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 MFMContent\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=591ec5b8\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'compact',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'controlledShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleShowingTall',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject'\n ],\n data () {\n return {\n uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n uncontrolledShowingLongSubject: false,\n // not as computed because it sets the initial state which will be changed later\n uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n attachmentSize () {\n if (this.compact) {\n return 'small'\n } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n }\n return 'normal'\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview,\n StatusBody\n },\n methods: {\n toggleShowingTall () {\n controlledOrUncontrolledToggle(this, 'showingTall')\n },\n toggleExpandingSubject () {\n controlledOrUncontrolledToggle(this, 'expandingSubject')\n },\n toggleShowingLongSubject () {\n controlledOrUncontrolledToggle(this, 'showingLongSubject')\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=475fea91\"\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=475fea91&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n let r = { num: round(d / YEAR), key: 'time.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.months'\n }\n // Remove plural form when singular\n if (r.num === 1) r.key = r.key.slice(0, -1)\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n","<template>\n <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=\"src\"\n :alt=\"alt\"\n :title=\"alt\"\n :src=\"src\"\n :referrerpolicy=\"referrerpolicy\"\n @load=\"onLoad\"\n @error=\"onError\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: 'gif';\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgba(127, 127, 127, 0.5);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n</style>\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt',\n 'height',\n 'width'\n ],\n data () {\n return {\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n },\n 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 onLoad () {\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=4da90e4a\"\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=4da90e4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"checkbox\"\n :class=\"{ disabled, indeterminate }\"\n >\n <input\n type=\"checkbox\"\n :disabled=\"disabled\"\n :checked=\"modelValue\"\n :indeterminate=\"indeterminate\"\n @change=\"$emit('update:modelValue', $event.target.checked)\"\n >\n <i class=\"checkbox-indicator\" />\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'indeterminate',\n 'disabled'\n ]\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: '✓';\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0px 0px 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: .5;\n }\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=checkbox] {\n display: none;\n\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: '–';\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n }\n\n & > span {\n margin-left: .5em;\n }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=deb5bfe6\"\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=deb5bfe6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"Select input\"\n :class=\"{ disabled, unstyled }\"\n >\n <select\n :disabled=\"disabled\"\n :value=\"modelValue\"\n @change=\"$emit('update:modelValue', $event.target.value)\"\n >\n <slot />\n </select>\n {{ ' ' }}\n <FAIcon\n class=\"select-down-icon\"\n icon=\"chevron-down\"\n />\n </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 .2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown\n)\n\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'disabled',\n 'unstyled',\n 'kind'\n ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=099d3e32\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 :to=\"userProfileLink(user)\">\n <UserAvatar\n class=\"avatar\"\n :user=\"user\"\n @click.prevent=\"toggleUserExpanded\"\n />\n </router-link>\n <div\n v-if=\"userExpanded\"\n class=\"basic-user-card-expanded-content\"\n >\n <UserCard\n :user-id=\"user.id\"\n :rounded=\"true\"\n :bordered=\"true\"\n />\n </div>\n <div\n v-else\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 <router-link\n class=\"basic-user-card-screen-name\"\n :to=\"userProfileLink(user)\"\n >\n @{{ user.screen_name_ui }}\n </router-link>\n </div>\n <slot />\n </div>\n </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n &-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 UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.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 data () {\n return {\n userExpanded: false\n }\n },\n components: {\n UserCard,\n UserAvatar,\n RichContent\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=dd332bac\"\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=dd332bac&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n let array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","<template>\n <div\n ref=\"form\"\n class=\"post-status-form\"\n >\n <form\n autocomplete=\"off\"\n @submit.prevent\n @dragover.prevent=\"fileDrag\"\n >\n <div class=\"form-group\">\n <i18n-t\n v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n keypath=\"post_status.account_not_locked_warning\"\n tag=\"p\"\n class=\"visibility-notice\"\n scope=\"global\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openProfileTab\"\n >\n {{ $t('post_status.account_not_locked_warning_link') }}\n </button>\n </i18n-t>\n <p\n v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.public') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.private') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"newStatus.visibility === 'direct'\"\n class=\"visibility-notice\"\n >\n <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n </p>\n <div\n v-if=\"!disablePreview\"\n class=\"preview-heading faint\"\n >\n <a\n class=\"preview-toggle faint\"\n @click.stop.prevent=\"togglePreview\"\n >\n {{ $t('post_status.preview') }}\n <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n </a>\n <div\n v-show=\"previewLoading\"\n class=\"preview-spinner\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <div\n v-if=\"showPreview\"\n class=\"preview-container\"\n >\n <div\n v-if=\"!preview\"\n class=\"preview-status\"\n >\n {{ $t('general.loading') }}\n </div>\n <div\n v-else-if=\"preview.error\"\n class=\"preview-status preview-error\"\n >\n {{ preview.error }}\n </div>\n <StatusContent\n v-else\n :status=\"preview\"\n class=\"preview-status\"\n />\n </div>\n <EmojiInput\n v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n v-model=\"newStatus.spoilerText\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n class=\"form-control\"\n >\n <input\n v-model=\"newStatus.spoilerText\"\n type=\"text\"\n :placeholder=\"$t('post_status.content_warning')\"\n :disabled=\"posting && !optimisticPosting\"\n size=\"1\"\n class=\"form-post-subject\"\n >\n </EmojiInput>\n <EmojiInput\n ref=\"emoji-input\"\n v-model=\"newStatus.status\"\n :suggest=\"emojiUserSuggestor\"\n :placement=\"emojiPickerPlacement\"\n class=\"form-control main-input\"\n enable-emoji-picker\n hide-emoji-button\n :newline-on-ctrl-enter=\"submitOnEnter\"\n enable-sticker-picker\n @input=\"onEmojiInputInput\"\n @sticker-uploaded=\"addMediaFile\"\n @sticker-upload-failed=\"uploadFailed\"\n @shown=\"handleEmojiInputShow\"\n >\n <textarea\n ref=\"textarea\"\n v-model=\"newStatus.status\"\n :placeholder=\"placeholder || $t('post_status.default')\"\n rows=\"1\"\n cols=\"1\"\n :disabled=\"posting && !optimisticPosting\"\n class=\"form-post-body\"\n :class=\"{ 'scrollable-form': !!maxHeight }\"\n @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n @keydown.meta.enter=\"postStatus($event, newStatus)\"\n @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n @input=\"resize\"\n @compositionupdate=\"resize\"\n @paste=\"paste\"\n />\n <p\n v-if=\"hasStatusLengthLimit\"\n class=\"character-counter faint\"\n :class=\"{ error: isOverLengthLimit }\"\n >\n {{ charactersLeft }}\n </p>\n </EmojiInput>\n <div\n v-if=\"!disableScopeSelector\"\n class=\"visibility-tray\"\n >\n <scope-selector\n :show-all=\"showAllScopes\"\n :user-default=\"userDefaultScope\"\n :original-scope=\"copyMessageScope\"\n :initial-scope=\"newStatus.visibility\"\n :on-scope-change=\"changeVis\"\n />\n\n <div\n v-if=\"postFormats.length > 1\"\n class=\"text-format\"\n >\n <Select\n id=\"post-content-type\"\n v-model=\"newStatus.contentType\"\n class=\"form-control\"\n >\n <option\n v-for=\"postFormat in postFormats\"\n :key=\"postFormat\"\n :value=\"postFormat\"\n >\n {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n </option>\n </Select>\n </div>\n <div\n v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n class=\"text-format\"\n >\n <span class=\"only-format\">\n {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n </span>\n </div>\n </div>\n </div>\n <poll-form\n v-if=\"pollsAvailable\"\n ref=\"pollForm\"\n :visible=\"pollFormVisible\"\n @update-poll=\"setPoll\"\n />\n <div\n ref=\"bottom\"\n class=\"form-bottom\"\n >\n <div class=\"form-bottom-left\">\n <media-upload\n ref=\"mediaUpload\"\n class=\"media-upload-icon\"\n :drop-files=\"dropFiles\"\n :disabled=\"uploadFileLimitReached\"\n @uploading=\"startedUploadingFiles\"\n @uploaded=\"addMediaFile\"\n @upload-failed=\"uploadFailed\"\n @all-uploaded=\"finishedUploadingFiles\"\n />\n <button\n class=\"emoji-icon button-unstyled\"\n :title=\"$t('emoji.add_emoji')\"\n @click=\"showEmojiPicker\"\n >\n <FAIcon icon=\"smile-beam\" />\n </button>\n <button\n v-if=\"pollsAvailable\"\n class=\"poll-icon button-unstyled\"\n :class=\"{ selected: pollFormVisible }\"\n :title=\"$t('polls.add_poll')\"\n @click=\"togglePollForm\"\n >\n <FAIcon icon=\"poll-h\" />\n </button>\n </div>\n <button\n v-if=\"posting\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.posting') }}\n </button>\n <button\n v-else-if=\"isOverLengthLimit\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.post') }}\n </button>\n <!-- touchstart is used to keep the OSK at the same position after a message send -->\n <button\n v-else\n :disabled=\"uploadingFiles || disableSubmit\"\n class=\"btn button-default\"\n @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n @click.stop.prevent=\"postStatus($event, newStatus)\"\n >\n {{ $t('post_status.post') }}\n </button>\n </div>\n <div\n v-show=\"showDropIcon !== 'hide'\"\n :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n class=\"drop-indicator\"\n @dragleave=\"fileDragStop\"\n @drop.stop=\"fileDrop\"\n >\n <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n Error: {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <gallery\n v-if=\"newStatus.files && newStatus.files.length > 0\"\n class=\"attachments\"\n :grid=\"true\"\n :nsfw=\"false\"\n :attachments=\"newStatus.files\"\n :descriptions=\"newStatus.mediaDescriptions\"\n :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n :editable=\"true\"\n :edit-attachment=\"editAttachment\"\n :remove-attachment=\"removeMediaFile\"\n :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n <div\n v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n class=\"upload_settings\"\n >\n <Checkbox v-model=\"newStatus.nsfw\">\n {{ $t('post_status.attachments_sensitive') }}\n </Checkbox>\n </div>\n </form>\n </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n svg, i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .media-upload-icon, .poll-icon, .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected, &:hover {\n // needs to be specific to override icon default color\n svg, i, label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg, i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: .2em;\n margin-bottom: .5em;\n width: 18em;\n\n img, video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles',\n 'disabled'\n ],\n watch: {\n 'dropFiles': function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=8e180d3a\"\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=8e180d3a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"media-upload\"\n :class=\"{ disabled: disabled }\"\n :title=\"$t('tool_tip.media_upload')\"\n >\n <FAIcon\n v-if=\"uploading\"\n class=\"progress-icon\"\n icon=\"circle-notch\"\n spin\n />\n <FAIcon\n v-if=\"!uploading\"\n class=\"new-icon\"\n icon=\"upload\"\n />\n <input\n v-if=\"uploadReady\"\n class=\"hidden-input-file\"\n :disabled=\"disabled\"\n type=\"file\"\n multiple=\"true\"\n @change=\"change\"\n >\n </label>\n</template>\n\n<script src=\"./media_upload.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n .hidden-input-file {\n display: none;\n }\n}\n </style>\n","<template>\n <div\n v-if=\"visible\"\n class=\"poll-form\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div class=\"input-container\">\n <input\n :id=\"`poll-${index}`\"\n v-model=\"options[index]\"\n size=\"1\"\n class=\"poll-option-input\"\n type=\"text\"\n :placeholder=\"$t('polls.option')\"\n :maxlength=\"maxLength\"\n @change=\"updatePollToParent\"\n @keydown.enter.stop.prevent=\"nextOption(index)\"\n >\n </div>\n <button\n v-if=\"options.length > 2\"\n class=\"delete-option button-unstyled -hover-highlight\"\n @click=\"deleteOption(index)\"\n >\n <FAIcon icon=\"times\" />\n </button>\n </div>\n <button\n v-if=\"options.length < maxOptions\"\n class=\"add-option faint button-unstyled -hover-highlight\"\n @click=\"addOption\"\n >\n <FAIcon\n icon=\"plus\"\n size=\"sm\"\n />\n\n {{ $t(\"polls.add_option\") }}\n </button>\n <div class=\"poll-type-expiry\">\n <div\n class=\"poll-type\"\n :title=\"$t('polls.type')\"\n >\n <Select\n v-model=\"pollType\"\n class=\"poll-type-select\"\n unstyled=\"true\"\n @change=\"updatePollToParent\"\n >\n <option value=\"single\">\n {{ $t('polls.single_choice') }}\n </option>\n <option value=\"multiple\">\n {{ $t('polls.multiple_choices') }}\n </option>\n </Select>\n </div>\n <div\n class=\"poll-expiry\"\n :title=\"$t('polls.expiry')\"\n >\n <input\n v-model=\"expiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"minExpirationInCurrentUnit\"\n :max=\"maxExpirationInCurrentUnit\"\n @change=\"expiryAmountChange\"\n >\n {{ ' ' }}\n <Select\n v-model=\"expiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n @change=\"expiryAmountChange\"\n >\n <option\n v-for=\"unit in expiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $t(`time.${unit}_short`, ['']) }}\n </option>\n </Select>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n faTimes,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus\n)\n\nexport default {\n components: {\n Select\n },\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=21f5ba7b\"\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=21f5ba7b&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n emits: [\n 'posted',\n 'resize',\n 'mediaplay',\n 'mediapause'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Select,\n Attachment,\n StatusContent,\n Gallery\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault, sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n return {\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: {\n spoilerText: this.subject || '',\n status: statusText,\n sensitiveIfSubject,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n 'newStatus': {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n const { sensitiveIfSubject } = this.$store.getters.mergedConfig\n\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: (newStatus.nsfw || (sensitiveIfSubject && newStatus.spoilerText)),\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n 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 this.$refs['emoji-input'].resize()\n return\n }\n\n const formRef = this.$refs['form']\n const bottomRef = this.$refs['bottom']\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.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 this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n }\n }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=ae252da2\"\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=ae252da2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=\"usePlaceholder\"\n class=\"Attachment -placeholder button-unstyled\"\n :class=\"classNames\"\n @click=\"openModal\"\n >\n <a\n v-if=\"type !== 'html'\"\n class=\"placeholder\"\n target=\"_blank\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent\n >\n <FAIcon :icon=\"placeholderIconClass\" />\n <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n </a>\n <div\n v-if=\"edit || remove\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </button>\n <div\n v-else\n class=\"Attachment\"\n :class=\"classNames\"\n >\n <div\n v-show=\"!isEmpty\"\n class=\"attachment-wrapper\"\n >\n <a\n v-if=\"hidden\"\n class=\"image-container\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <img\n :key=\"nsfwImage\"\n class=\"nsfw\"\n :src=\"nsfwImage\"\n >\n <FAIcon\n v-if=\"type === 'video'\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </a>\n <div\n v-if=\"!hidden\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"type === 'flash' && flashLoaded\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.attachment_stop_flash')\"\n @click.prevent=\"stopFlash\"\n >\n <FAIcon icon=\"stop\" />\n </button>\n <button\n v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_description')\"\n @click.prevent=\"toggleDescription\"\n >\n <FAIcon icon=\"align-right\" />\n </button>\n <button\n v-if=\"!useModal && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_in_modal')\"\n @click.prevent=\"openModalForce\"\n >\n <FAIcon icon=\"search-plus\" />\n </button>\n <button\n v-if=\"nsfw && hideNsfwLocal\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.hide_attachment')\"\n @click.prevent=\"toggleHidden\"\n >\n <FAIcon icon=\"times\" />\n </button>\n <button\n v-if=\"shiftUp\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_up')\"\n @click.prevent=\"onShiftUp\"\n >\n <FAIcon icon=\"chevron-left\" />\n </button>\n <button\n v-if=\"shiftDn\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_down')\"\n @click.prevent=\"onShiftDn\"\n >\n <FAIcon icon=\"chevron-right\" />\n </button>\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.remove_attachment')\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n\n <a\n v-if=\"type === 'image' && (!hidden || preloadImage)\"\n class=\"image-container\"\n :class=\"{'-hidden': hidden && preloadImage }\"\n :href=\"attachment.url\"\n target=\"_blank\"\n @click.stop.prevent=\"openModal\"\n >\n <StillImage\n class=\"image\"\n :referrerpolicy=\"referrerpolicy\"\n :mimetype=\"attachment.mimetype\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n :image-load-handler=\"onImageLoad\"\n :alt=\"attachment.description\"\n />\n </a>\n\n <a\n v-if=\"type === 'unknown' && !hidden\"\n class=\"placeholder-container\"\n :href=\"attachment.url\"\n target=\"_blank\"\n >\n <FAIcon\n size=\"5x\"\n :icon=\"placeholderIconClass\"\n />\n <p>\n {{ localDescription }}\n </p>\n </a>\n\n <component\n :is=\"videoTag\"\n v-if=\"type === 'video' && !hidden\"\n class=\"video-container\"\n :class=\"{ 'button-unstyled': 'isModal' }\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <VideoAttachment\n class=\"video\"\n :attachment=\"attachment\"\n :controls=\"!useModal\"\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n <FAIcon\n v-if=\"useModal\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </component>\n\n <span\n v-if=\"type === 'audio' && !hidden\"\n class=\"audio-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <audio\n v-if=\"type === 'audio'\"\n :src=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n controls\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n </span>\n\n <div\n v-if=\"type === 'html' && attachment.oembed\"\n class=\"oembed-container\"\n @click.prevent=\"linkClicked\"\n >\n <div\n v-if=\"attachment.thumb_url\"\n class=\"image\"\n >\n <img :src=\"attachment.thumb_url\">\n </div>\n <div class=\"text\">\n <!-- eslint-disable vue/no-v-html -->\n <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n <div v-html=\"attachment.oembed.oembedHTML\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n\n <span\n v-if=\"type === 'flash' && !hidden\"\n class=\"flash-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <Flash\n ref=\"flash\"\n class=\"flash\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n @playerOpened=\"setFlashLoaded(true)\"\n @playerClosed=\"setFlashLoaded(false)\"\n />\n </span>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'description',\n 'hideDescription',\n 'nsfw',\n 'size',\n 'setMedia',\n 'remove',\n 'shiftUp',\n 'shiftDn',\n 'edit'\n ],\n data () {\n return {\n localDescription: this.description || this.attachment.description,\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false,\n flashLoaded: false,\n showDescription: false\n }\n },\n components: {\n Flash,\n StillImage,\n VideoAttachment\n },\n computed: {\n classNames () {\n return [\n {\n '-loading': this.loading,\n '-nsfw-placeholder': this.hidden,\n '-editable': this.edit !== undefined\n },\n '-type-' + this.type,\n this.size && '-size-' + this.size,\n `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n ]\n },\n usePlaceholder () {\n return this.size === 'hide'\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed)\n },\n useModal () {\n let modalTypes = []\n switch (this.size) {\n case 'hide':\n case 'small':\n modalTypes = ['image', 'video', 'audio', 'flash']\n break\n default:\n modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video', 'flash']\n : ['image']\n break\n }\n return modalTypes.includes(this.type)\n },\n videoTag () {\n return this.useModal ? 'button' : 'span'\n },\n ...mapGetters(['mergedConfig'])\n },\n watch: {\n localDescription (newVal) {\n this.onEdit(newVal)\n }\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n } else if (this.type === 'unknown') {\n window.open(this.attachment.url)\n }\n },\n openModalForce (event) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n },\n onEdit (event) {\n this.edit && this.edit(this.attachment, event)\n },\n onRemove () {\n this.remove && this.remove(this.attachment)\n },\n onShiftUp () {\n this.shiftUp && this.shiftUp(this.attachment)\n },\n onShiftDn () {\n this.shiftDn && this.shiftDn(this.attachment)\n },\n stopFlash () {\n this.$refs.flash.closePlayer()\n },\n setFlashLoaded (event) {\n this.flashLoaded = event\n },\n toggleDescription () {\n this.showDescription = !this.showDescription\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n }\n }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=1177e21f\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 {{ $t(relativeTime.key, [relativeTime.num]) }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n 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=4a007a5d\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"list\">\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=c1790f52\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n ar: () => import('./ar.json'),\n ca: () => import('./ca.json'),\n cs: () => import('./cs.json'),\n de: () => import('./de.json'),\n eo: () => import('./eo.json'),\n es: () => import('./es.json'),\n et: () => import('./et.json'),\n eu: () => import('./eu.json'),\n fi: () => import('./fi.json'),\n fr: () => import('./fr.json'),\n ga: () => import('./ga.json'),\n he: () => import('./he.json'),\n hu: () => import('./hu.json'),\n it: () => import('./it.json'),\n ja: () => import('./ja_pedantic.json'),\n ja_easy: () => import('./ja_easy.json'),\n ko: () => import('./ko.json'),\n nb: () => import('./nb.json'),\n nl: () => import('./nl.json'),\n oc: () => import('./oc.json'),\n pl: () => import('./pl.json'),\n pt: () => import('./pt.json'),\n ro: () => import('./ro.json'),\n ru: () => import('./ru.json'),\n te: () => import('./te.json'),\n uk: () => import('./uk.json'),\n zh: () => import('./zh.json'),\n zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n languages: ['en', ...Object.keys(loaders)],\n default: {\n en: require('./en.json').default\n },\n setLanguage: async (i18n, language) => {\n if (loaders[language]) {\n let messages = await loaders[language]()\n i18n.setLocaleMessage(language, messages.default)\n }\n i18n.locale = language\n }\n}\n\nexport default messages\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n },\n bodyScrollLock: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: findFirstUsable(this.slots())\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n } else {\n return this.active\n }\n },\n isActive () {\n return tabName => {\n const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n return this.$slots.default().findIndex(isWanted) === this.activeIndex\n }\n },\n settingsModalVisible () {\n return this.settingsModalState === 'visible'\n },\n ...mapState({\n settingsModalState: state => state.interface.settingsModalState\n })\n },\n beforeUpdate () {\n const currentSlot = this.slots()[this.active]\n if (!currentSlot.props) {\n this.active = findFirstUsable(this.slots())\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n // DO NOT put it to computed, it doesn't work (caching?)\n slots () {\n if (this.$slots.default()[0].type === Fragment) {\n return this.$slots.default()[0].children\n }\n return this.$slots.default()\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.slots()[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render () {\n const tabs = this.slots()\n .map((slot, index) => {\n const props = slot.props\n if (!props) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (props.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n <img src={props.image} title={props['image-tooltip']}/>\n {props.label ? '' : props.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n <span class=\"text\">\n {props.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.slots().map((slot, index) => {\n const props = slot.props\n if (!props) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (props.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{props.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div\n ref=\"contents\"\n class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n v-body-scroll-lock={this.bodyScrollLock}\n >\n {contents}\n </div>\n </div>\n )\n }\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","<template>\n <teleport\n :disabled=\"minimalMode || disableTeleport\"\n :to=\"teleportTarget\"\n >\n <div\n :class=\"{ minimal: minimalMode }\"\n class=\"Notifications\"\n >\n <div :class=\"mainClass\">\n <div\n v-if=\"!noHeading\"\n class=\"notifications-heading panel-heading -sticky\"\n >\n <div class=\"title\">\n {{ $t('notifications.notifications') }}\n <span\n v-if=\"unseenCount\"\n class=\"badge badge-notification unseen-count\"\n >{{ unseenCount }}</span>\n </div>\n <button\n v-if=\"unseenCount\"\n class=\"button-default read-button\"\n @click.prevent=\"markAsSeen\"\n >\n {{ $t('notifications.read') }}\n </button>\n <NotificationFilters />\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"notification in notificationsToDisplay\"\n :key=\"notification.id\"\n class=\"notification\"\n :class=\"{unseen: !minimalMode && !notification.seen}\"\n >\n <div class=\"notification-overlay\" />\n <notification :notification=\"notification\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <div\n v-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('notifications.no_more_notifications') }}\n </div>\n <button\n v-else-if=\"!loading\"\n class=\"button-unstyled -link -fullwidth\"\n @click.prevent=\"fetchOlderNotifications()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </div>\n </div>\n </div>\n </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n <Status\n v-if=\"notification.type === 'mention'\"\n class=\"Notification\"\n :compact=\"true\"\n :statusoid=\"notification.status\"\n />\n <div v-else>\n <div\n v-if=\"needMute && !unmuted\"\n class=\"Notification container -muted\"\n >\n <small>\n <router-link :to=\"userProfileLink\">\n {{ notification.from_profile.screen_name_ui }}\n </router-link>\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.stop.prevent.capture=\"toggleUserExpanded\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"notification.from_profile\"\n />\n </a>\n <div class=\"notification-right\">\n <UserCard\n v-if=\"userExpanded\"\n :user-id=\"getUser(notification).id\"\n :rounded=\"true\"\n :bordered=\"true\"\n />\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 !== null\"\n class=\"notification-reaction-emoji\"\n :src=\"notification.emoji_url\"\n :name=\"notification.emoji\"\n >\n <span\n v-else\n class=\"emoji-reaction-emoji\"\n >\n {{ notification.emoji }}\n </span>\n </i18n-t>\n </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=\"faint-link\"\n >\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </router-link>\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 @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 <router-link\n :to=\"userProfileLink\"\n class=\"follow-name\"\n >\n @{{ notification.from_profile.screen_name_ui }}\n </router-link>\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 <router-link :to=\"targetUserProfileLink\">\n @{{ notification.target.screen_name_ui }}\n </router-link>\n </div>\n <template v-else>\n <StatusContent\n class=\"faint\"\n :compact=\"true\"\n :status=\"notification.action\"\n />\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","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 RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling\n)\n\nconst Notification = {\n data () {\n return {\n userExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false\n }\n },\n props: [ 'notification' ],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status,\n RichContent\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=437c5ef8\"\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 \"/home/hannah/personal/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 v-slot:content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('polls')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n />{{ $t('settings.notification_visibility_polls') }}\n </button>\n </div>\n </template>\n <template v-slot: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\n<style lang=\"scss\">\n\n.NotificationFilters {\n align-self: stretch;\n\n > button {\n line-height: 100%;\n height: 100%;\n width: var(--__panel-heading-height-inner);\n text-align: center;\n\n svg {\n font-size: 1.2em;\n }\n }\n}\n\n</style>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=afbf2f10\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport \"./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array,\n // Disable teleporting (i.e. for /users/user/notifications)\n disableTeleport: Boolean\n },\n data () {\n return {\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount)\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n 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 notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n ...mapGetters(['unreadChatCount'])\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n }\n },\n methods: {\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=5c6b19b5\"\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 \"/home/hannah/personal/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=\"galleryContainer\"\n class=\"Gallery\"\n :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n >\n <div class=\"gallery-rows\">\n <div\n v-for=\"(row, rowIndex) in rows\"\n :key=\"rowIndex\"\n class=\"gallery-row\"\n :style=\"rowStyle(row)\"\n :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n >\n <div\n class=\"gallery-row-inner\"\n :class=\"{ '-grid': grid }\"\n >\n <Attachment\n v-for=\"(attachment, attachmentIndex) in row.items\"\n :key=\"attachment.id\"\n class=\"gallery-item\"\n :nsfw=\"nsfw\"\n :attachment=\"attachment\"\n :size=\"size\"\n :editable=\"editable\"\n :remove=\"removeAttachment\"\n :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n :edit=\"editAttachment\"\n :description=\"descriptions && descriptions[attachment.id]\"\n :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n :style=\"itemStyle(attachment.id, row.items)\"\n @setMedia=\"onMedia\"\n @naturalSizeLoad=\"onNaturalSizeLoad\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"tooManyAttachments\"\n class=\"many-attachments\"\n >\n <div class=\"many-attachments-text\">\n {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n </div>\n <div class=\"many-attachments-buttons\">\n <span\n v-if=\"!hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(true)\"\n >\n {{ $t(\"status.collapse_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(false)\"\n >\n {{ $t(\"status.show_all_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openGallery\"\n >\n {{ $t(\"status.open_gallery\") }}\n </button>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n\n .gallery-row {\n &.-grid,\n &.-minimal {\n height: auto;\n .gallery-row-inner {\n position: relative;\n }\n }\n }\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-content: stretch;\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-column-gap: 0.5em;\n grid-row-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n &:last-child {\n margin: 0;\n }\n }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'limitRows',\n 'descriptions',\n 'limit',\n 'nsfw',\n 'setMedia',\n 'size',\n 'editable',\n 'removeAttachment',\n 'shiftUpAttachment',\n 'shiftDnAttachment',\n 'editAttachment',\n 'grid'\n ],\n data () {\n return {\n sizes: {},\n hidingLong: true\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const attachments = this.limit > 0\n ? this.attachments.slice(0, this.limit)\n : this.attachments\n if (this.size === 'hide') {\n return attachments.map(item => ({ minimal: true, items: [item] }))\n }\n const rows = this.grid\n ? [{ grid: true, items: attachments }]\n : attachments.reduce((acc, attachment, i) => {\n if (attachment.mimetype.includes('audio')) {\n return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n }\n if (!(\n attachment.mimetype.includes('image') ||\n attachment.mimetype.includes('video') ||\n attachment.mimetype.includes('flash')\n )) {\n return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n }\n const maxPerRow = 3\n const attachmentsRemaining = this.attachments.length - i + 1\n const currentRow = acc[acc.length - 1].items\n currentRow.push(attachment)\n if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n return [...acc, { items: [] }]\n } else {\n return acc\n }\n }, [{ items: [] }]).filter(_ => _.items.length > 0)\n return rows\n },\n attachmentsDimensionalScore () {\n return this.rows.reduce((acc, row) => {\n let size = 0\n if (row.minimal) {\n size += 1 / 8\n } else if (row.audio) {\n size += 1 / 4\n } else {\n size += 1 / (row.items.length + 0.6)\n }\n return acc + size\n }, 0)\n },\n tooManyAttachments () {\n if (this.editable || this.size === 'small') {\n return false\n } else if (this.size === 'hide') {\n return this.attachments.length > 8\n } else {\n return this.attachmentsDimensionalScore > 1\n }\n }\n },\n methods: {\n onNaturalSizeLoad ({ id, width, height }) {\n set(this.sizes, id, { width, height })\n },\n rowStyle (row) {\n if (row.audio) {\n return { 'padding-bottom': '25%' } // fixed reduced height for audio\n } else if (!row.minimal && !row.grid) {\n return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n },\n toggleHidingLong (event) {\n this.hidingLong = event\n },\n openGallery () {\n this.$store.dispatch('setMedia', this.attachments)\n this.$store.dispatch('setCurrentMedia', this.attachments[0])\n },\n onMedia () {\n this.$store.dispatch('setMedia', this.attachments)\n }\n }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=2bf4ca36\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"MentionLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n v-if=\"!user\"\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n v-html=\"content\"\n /><!-- eslint-enable vue/no-v-html --><span\n v-if=\"user\"\n class=\"new\"\n :style=\"style\"\n :class=\"classnames\"\n >\n <a\n class=\"short button-unstyled\"\n :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n :href=\"url\"\n @click.prevent=\"onClick\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <span class=\"shortName\">@<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 />\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 v-if=\"shouldShowTooltip\"\n class=\"full popover-default\"\n :class=\"[highlightType]\"\n >\n <span\n class=\"userNameFull\"\n >\n <!-- eslint-disable vue/no-v-html -->\n @<span\n class=\"userName\"\n v-html=\"userName\"\n /><span\n class=\"serverName\"\n :class=\"{ '-faded': shouldFadeDomain }\"\n v-html=\"'@' + serverName\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n </span>\n </span>\n </span>\n</template>\n\n<script src=\"./mention_link.js\"/>\n\n<style lang=\"scss\" src=\"./mention_link.scss\"/>\n","import { render } from \"./mention_link.vue?vue&type=template&id=eeed6d12\"\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 \"/home/hannah/personal/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 >\n <MentionLink\n v-for=\"mention in extraMentions\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n />\n </span><button\n v-if=\"!expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('status.plus_more', { number: extraMentions.length }) }}\n </button><button\n v-if=\"expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('general.show_less') }}\n </button>\n </span>\n </span>\n</template>\n<script src=\"./mentions_line.js\" ></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n name: 'MentionsLine',\n props: {\n mentions: {\n required: true,\n type: Array\n }\n },\n data: () => ({ expanded: false }),\n components: {\n MentionLink\n },\n computed: {\n mentionsComputed () {\n return this.mentions.slice(0, MENTIONS_LIMIT)\n },\n extraMentions () {\n return this.mentions.slice(MENTIONS_LIMIT)\n },\n manyMentions () {\n return this.extraMentions.length > 0\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n toggleShowMore () {\n this.expanded = !this.expanded\n }\n }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=f231046a\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fileSizeFormat = (num) => {\n var exponent\n var unit\n var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n unit = units[exponent]\n return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args['withMuted'] = !hideMutedPosts\n\n args['timeline'] = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args['until'] = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\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, 20000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","const createFaviconService = () => {\n const favicons = []\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n nodes.forEach(favicon => {\n if (favicon) {\n const favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n const favimg = new Image()\n favimg.crossOrigin = 'anonymous'\n favimg.src = favicon.href\n const favcontext = favcanvas.getContext('2d')\n favicons.push({ favcanvas, favimg, favcontext, favicon })\n }\n })\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (favicons.length === 0) return\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n const drawFaviconBadge = () => {\n if (favicons.length === 0) return\n clearFaviconBadge()\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favcontext) return\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","<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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior',\n 'conversationDisplay', // tree | linear\n 'conversationOtherRepliesButton', // below | inside\n 'mentionLinkDisplay' // short | full_for_remote | full\n]\n\nexport const defaultState = {\n expertLevel: 0, // used to track which settings to show and hide\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n hideShoutbox: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n hideMutedThreads: undefined, // instance default\n hideWordFilteredPosts: undefined, // instance default\n muteBotStatuses: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n alwaysShowNewPostButton: false,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: true,\n replyVisibility: 'all',\n thirdColumnMode: 'notifications',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n chatMention: true,\n polls: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: true,\n sidebarRight: undefined, // instance default\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: true,\n disableStickyHeaders: false,\n showScrollbars: false,\n 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 sensitiveIfSubject: undefined,\n renderMisskeyMarkdown: undefined,\n conversationDisplay: undefined, // instance default\n conversationTreeAdvanced: undefined, // instance default\n conversationOtherRepliesButton: undefined, // instance default\n conversationTreeFadeAncestors: undefined, // instance default\n maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n // Do not override with undefined\n ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n state[name] = value\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n state.highlight[user] = { color: color || data.color, type: type || data.type }\n } else {\n delete state.highlight[user]\n }\n }\n },\n actions: {\n loadSettings ({ dispatch }, data) {\n const knownKeys = new Set(Object.keys(defaultState))\n const presentKeys = new Set(Object.keys(data))\n const intersection = new Set()\n for (let elem of presentKeys) {\n if (knownKeys.has(elem)) {\n intersection.add(elem)\n }\n }\n\n intersection.forEach(\n name => dispatch('setOption', { name, value: data[name] })\n )\n },\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n Cookies.set(BACKEND_LANGUAGE_COOKIE_NAME, localeService.internalToBackendLocale(value))\n break\n case 'thirdColumnMode':\n dispatch('setLayoutWidth', undefined)\n break\n }\n }\n }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && 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","export const newExporter = ({\n filename = 'data',\n getExportedObject\n}) => ({\n exportData () {\n const stringified = JSON.stringify(getExportedObject(), null, 2) // Pretty-print and indent with 2 spaces\n\n // Create an invisible link with a data url and simulate a click\n const e = document.createElement('a')\n e.setAttribute('download', `${filename}.json`)\n e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n e.style.display = 'none'\n\n document.body.appendChild(e)\n e.click()\n document.body.removeChild(e)\n }\n})\n\nexport const newImporter = ({\n onImport,\n onImportFailure,\n validator = () => true\n}) => ({\n importData () {\n const filePicker = document.createElement('input')\n filePicker.setAttribute('type', 'file')\n filePicker.setAttribute('accept', '.json')\n\n filePicker.addEventListener('change', event => {\n if (event.target.files[0]) {\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n try {\n const parsed = JSON.parse(target.result)\n const validationResult = validator(parsed)\n if (validationResult === true) {\n onImport(parsed)\n } else {\n onImportFailure({ validationResult })\n }\n } catch (error) {\n onImportFailure({ error })\n }\n }\n reader.readAsText(event.target.files[0])\n }\n })\n\n document.body.appendChild(filePicker)\n filePicker.click()\n document.body.removeChild(filePicker)\n }\n})\n","<template>\n <div class=\"Flash\">\n <div\n v-if=\"player === true || player === 'hidden'\"\n ref=\"container\"\n class=\"player\"\n :class=\"{ hidden: player === 'hidden' }\"\n />\n <button\n v-if=\"player !== true\"\n class=\"button-unstyled placeholder\"\n @click=\"openPlayer\"\n >\n <span\n v-if=\"player === 'hidden'\"\n class=\"label\"\n >\n {{ $t('general.loading') }}\n </span>\n <span\n v-if=\"player === 'error'\"\n class=\"label\"\n >\n {{ $t('general.flash_fail') }}\n </span>\n <span\n v-else\n class=\"label\"\n >\n <p>\n {{ $t('general.flash_content') }}\n </p>\n <p>\n <FAIcon icon=\"exclamation-triangle\" />\n {{ $t('general.flash_security') }}\n </p>\n </span>\n </button>\n </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: 'hidden';\n }\n}\n</style>\n","const createRuffleService = () => {\n let ruffleInstance = null\n\n const getRuffle = () => new Promise((resolve, reject) => {\n if (ruffleInstance) {\n resolve(ruffleInstance)\n return\n }\n // Ruffle needs these to be set before it's loaded\n // https://github.com/ruffle-rs/ruffle/issues/3952\n window.RufflePlayer = {}\n window.RufflePlayer.config = {\n polyfills: false,\n publicPath: '/static/ruffle'\n }\n\n // Currently it's seems like a better way of loading ruffle\n // because it needs the wasm publically accessible, but it needs path to it\n // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n const script = document.createElement('script')\n // see webpack config, using CopyPlugin to copy it from node_modules\n // provided via ruffle-mirror\n script.src = '/static/ruffle/ruffle.js'\n script.type = 'text/javascript'\n script.onerror = (e) => { reject(e) }\n script.onabort = (e) => { reject(e) }\n script.oncancel = (e) => { reject(e) }\n script.onload = () => {\n ruffleInstance = window.RufflePlayer\n resolve(ruffleInstance)\n }\n document.body.appendChild(script)\n })\n\n return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStop,\n faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faStop,\n faExclamationTriangle\n)\n\nconst Flash = {\n props: [ 'src' ],\n data () {\n return {\n player: false, // can be true, \"hidden\", false. hidden = element exists\n loaded: false,\n ruffleInstance: null\n }\n },\n methods: {\n openPlayer () {\n if (this.player) return // prevent double-loading, or re-loading on failure\n this.player = 'hidden'\n RuffleService.getRuffle().then((ruffle) => {\n const player = ruffle.newest().createPlayer()\n player.config = {\n letterbox: 'on'\n }\n const container = this.$refs.container\n container.appendChild(player)\n player.style.width = '100%'\n player.style.height = '100%'\n player.load(this.src).then(() => {\n this.player = true\n }).catch((e) => {\n console.error('Error loading ruffle', e)\n this.player = 'error'\n })\n this.ruffleInstance = player\n this.$emit('playerOpened')\n })\n },\n closePlayer () {\n this.ruffleInstance && this.ruffleInstance.remove()\n this.player = false\n this.$emit('playerClosed')\n }\n }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=0dec384a\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n data () {\n return {\n inProgress: false\n }\n },\n computed: {\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_cancel')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n },\n disabled () {\n return this.inProgress || this.user.deactivated\n }\n },\n methods: {\n onClick () {\n this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n }\n }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=2c877477\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: isPressed }\"\n :disabled=\"disabled\"\n :title=\"title\"\n @click=\"onClick\"\n >\n {{ label }}\n </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <video\n class=\"video\"\n preload=\"metadata\"\n :src=\"attachment.url\"\n :loop=\"loopVideo\"\n :controls=\"controls\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n playsinline\n @playing=\"onPlaying\"\n @pause=\"onPaused\"\n />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","<template>\n <div>\n <a\n class=\"link-preview-card\"\n :href=\"card.url\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <div\n v-if=\"useImage && imageLoaded\"\n class=\"card-image\"\n >\n <img :src=\"card.image\">\n </div>\n <div class=\"card-content\">\n <span class=\"card-host faint\">\n <span\n v-if=\"censored\"\n class=\"nsfw-alert alert warning\"\n >{{ $t('status.nsfw') }}</span>\n {{ card.provider_name }}\n </span>\n <h4 class=\"card-title\">{{ card.title }}</h4>\n <p\n v-if=\"useDescription\"\n class=\"card-description\"\n >{{ card.description }}</p>\n </div>\n </a>\n </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=03087feb\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"avatars\">\n <router-link\n v-for=\"user in slicedUsers\"\n :key=\"user.id\"\n :to=\"userProfileLink(user)\"\n class=\"avatars-item\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./avatar_list.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=4cea5bcf\"\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=4cea5bcf&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => input => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n .sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // An exact match always wins\n aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n // Prioritize custom emoji a lot\n aScore += a.imageUrl ? 100 : 0\n bScore += b.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n // Sort by length\n aScore -= a.displayText.length\n bScore -= b.displayText.length\n\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return bScore - aScore + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n displayText: screen_name_ui,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","<template>\n <div>\n <label for=\"interface-language-switcher\">\n {{ promptText }}\n </label>\n {{ ' ' }}\n <Select\n id=\"interface-language-switcher\"\n v-model=\"controlledLanguage\"\n >\n <option\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n :value=\"lang.code\"\n >\n {{ lang.name }}\n </option>\n </Select>\n </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n Select\n },\n props: {\n promptText: {\n type: String,\n required: true\n },\n language: {\n type: String,\n required: true\n },\n setLanguage: {\n type: Function,\n required: true\n }\n },\n computed: {\n languages () {\n return localeService.languages\n },\n\n controlledLanguage: {\n get: function () { return this.language },\n set: function (val) {\n this.setLanguage(val)\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n return localeService.getLanguageName(code)\n }\n }\n}\n</script>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=25be3710\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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 <button\n v-if=\"showLocal\"\n class=\"button-unstyled scope\"\n :class=\"css.local\"\n :title=\"$t('post_status.scope.local')\"\n type=\"button\"\n @click=\"changeVis('local')\"\n >\n <FAIcon\n icon=\"users\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ScopeSelector {\n\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showLocal () {\n return this.originalScope !== 'direct' && this.shouldShow('local')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' },\n local: { selected: this.currentScope === 'local' }\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=4ebab9b5\"\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=4ebab9b5&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n const params = {}\n set(params, path, value)\n return rootState\n .api\n .backendInteractor\n .updateProfile({ params })\n .then(result => {\n commit('addNewUsers', [result])\n commit('setCurrentUser', result)\n })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n const settings = {}\n set(settings, path, value)\n return rootState\n .api\n .backendInteractor\n .updateNotificationSettings({ settings })\n .then(result => {\n if (result.status === 'success') {\n commit('confirmServerSideOption', { name, value })\n } else {\n commit('confirmServerSideOption', { name, value: oldValue })\n }\n })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n 'defaultScope': 'source.privacy',\n 'defaultNSFW': 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n 'stripRichContent': {\n get: 'source.pleroma.no_rich_text',\n set: 'no_rich_text'\n },\n // Privacy\n 'locked': 'locked',\n 'acceptChatMessages': {\n get: 'pleroma.accepts_chat_messages',\n set: 'accepts_chat_messages'\n },\n 'allowFollowingMove': {\n get: 'pleroma.allow_following_move',\n set: 'allow_following_move'\n },\n 'discoverable': {\n get: 'source.pleroma.discoverable',\n set: 'discoverable'\n },\n 'hideFavorites': {\n get: 'pleroma.hide_favorites',\n set: 'hide_favorites'\n },\n 'hideFollowers': {\n get: 'pleroma.hide_followers',\n set: 'hide_followers'\n },\n 'hideFollows': {\n get: 'pleroma.hide_follows',\n set: 'hide_follows'\n },\n 'hideFollowersCount': {\n get: 'pleroma.hide_followers_count',\n set: 'hide_followers_count'\n },\n 'hideFollowsCount': {\n get: 'pleroma.hide_follows_count',\n set: 'hide_follows_count'\n },\n // NotificationSettingsAPIs\n 'webPushHideContents': {\n get: 'pleroma.notification_settings.hide_notification_contents',\n set: 'hide_notification_contents',\n api: notificationsApi\n },\n 'blockNotificationsFromStrangers': {\n get: 'pleroma.notification_settings.block_from_strangers',\n set: 'block_from_strangers',\n api: notificationsApi\n }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n state: { ...defaultState },\n mutations: {\n confirmServerSideOption (state, { name, value }) {\n set(state, name, value)\n },\n wipeServerSideOption (state, { name }) {\n set(state, name, null)\n },\n wipeAllServerSideOptions (state) {\n Object.keys(settingsMap).forEach(key => {\n set(state, key, null)\n })\n },\n // Set the settings based on their path location\n setCurrentUser (state, user) {\n Object.entries(settingsMap).forEach((map) => {\n const [name, value] = map\n const { get: path = value } = value\n set(state, name, get(user._original, path))\n })\n }\n },\n actions: {\n setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n const oldValue = get(state, name)\n const map = settingsMap[name]\n if (!map) throw new Error('Invalid server-side setting')\n const { set: path = map, api = defaultApi } = map\n commit('wipeServerSideOption', { name })\n\n api({ rootState, commit }, { path, value, oldValue })\n .catch((e) => {\n console.warn('Error setting server-side option:', e)\n commit('confirmServerSideOption', { name, value: oldValue })\n })\n },\n logout ({ commit }) {\n commit('wipeAllServerSideOptions')\n }\n }\n}\n\nexport default serverSideConfig\n","import 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","<template>\n <div\n ref=\"root\"\n v-click-outside=\"onClickOutside\"\n class=\"emoji-input\"\n :class=\"{ 'with-picker': !hideEmojiButton }\"\n >\n <slot />\n <template v-if=\"enableEmojiPicker\">\n <button\n v-if=\"!hideEmojiButton\"\n class=\"button-unstyled emoji-picker-icon\"\n type=\"button\"\n @click.prevent=\"togglePicker\"\n >\n <FAIcon :icon=\"['far', 'smile-beam']\" />\n </button>\n <EmojiPicker\n v-if=\"enableEmojiPicker\"\n ref=\"picker\"\n :class=\"{ hide: !showPicker }\"\n :enable-sticker-picker=\"enableStickerPicker\"\n class=\"emoji-picker-panel\"\n @emoji=\"insert\"\n @sticker-uploaded=\"onStickerUploaded\"\n @sticker-upload-failed=\"onStickerUploadFailed\"\n />\n </template>\n <div\n ref=\"panel\"\n class=\"autocomplete-panel\"\n :class=\"{ hide: !showSuggestions }\"\n >\n <div\n ref=\"panel-body\"\n class=\"autocomplete-panel-body\"\n >\n <div\n v-for=\"(suggestion, index) in suggestions\"\n :key=\"index\"\n class=\"autocomplete-item\"\n :class=\"{ highlighted: index === highlighted }\"\n @click.stop.prevent=\"onClick($event, suggestion)\"\n >\n <span class=\"image\">\n <img\n v-if=\"suggestion.img\"\n :src=\"suggestion.img\"\n >\n <span v-else>{{ suggestion.replacement }}</span>\n </span>\n <div class=\"label\">\n <span class=\"displayText\">{{ suggestion.displayText }}</span>\n <span class=\"detailText\">{{ suggestion.detailText }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: .2em .25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none\n }\n }\n\n .autocomplete {\n &-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none\n }\n\n &-body {\n margin: 0 0.5em 0 0.5em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5);\n box-shadow: var(--popupShadow);\n min-width: 75%;\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n }\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n }\n\n input, textarea {\n flex: 1 0 auto;\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 let result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","<template>\n <div class=\"emoji-picker panel panel-default panel-body\">\n <div class=\"heading\">\n <span class=\"emoji-tabs\">\n <span\n v-for=\"group in emojis\"\n :key=\"group.id\"\n class=\"emoji-tabs-item\"\n :class=\"{\n active: activeGroupView === group.id,\n disabled: group.emojis.length === 0\n }\"\n :title=\"group.text\"\n @click.prevent=\"highlight(group.id)\"\n >\n <FAIcon\n :icon=\"group.icon\"\n fixed-width\n />\n </span>\n </span>\n <span\n v-if=\"stickerPickerEnabled\"\n class=\"additional-tabs\"\n >\n <span\n class=\"stickers-tab-icon additional-tabs-item\"\n :class=\"{active: showingStickers}\"\n :title=\"$t('emoji.stickers')\"\n @click.prevent=\"toggleStickers\"\n >\n <FAIcon\n icon=\"sticky-note\"\n fixed-width\n />\n </span>\n </span>\n </div>\n <div class=\"content\">\n <div\n class=\"emoji-content\"\n :class=\"{hidden: showingStickers}\"\n >\n <div class=\"emoji-search\">\n <input\n v-model=\"keyword\"\n type=\"text\"\n class=\"form-control\"\n :placeholder=\"$t('emoji.search_emoji')\"\n >\n </div>\n <div\n ref=\"emoji-groups\"\n class=\"emoji-groups\"\n :class=\"groupsScrolledClass\"\n @scroll=\"onScroll\"\n >\n <div\n v-for=\"group in emojisView\"\n :key=\"group.id\"\n class=\"emoji-group\"\n >\n <h6\n :ref=\"'group-' + group.id\"\n class=\"emoji-group-title\"\n >\n {{ group.text }}\n </h6>\n <span\n v-for=\"emoji in group.emojis\"\n :key=\"group.id + emoji.displayText\"\n :title=\"emoji.displayText\"\n class=\"emoji-item\"\n @click.stop.prevent=\"onEmoji(emoji)\"\n >\n <span v-if=\"!emoji.imageUrl\">{{ emoji.replacement }}</span>\n <img\n v-else\n :src=\"emoji.imageUrl\"\n >\n </span>\n <span :ref=\"'group-end-' + group.id\" />\n </div>\n </div>\n <div class=\"keep-open\">\n <Checkbox v-model=\"keepOpen\">\n {{ $t('emoji.keep_open') }}\n </Checkbox>\n </div>\n </div>\n <div\n v-if=\"showingStickers\"\n class=\"stickers-content\"\n >\n <sticker-picker\n @uploaded=\"onStickerUploaded\"\n @upload-failed=\"onStickerUploadFailed\"\n />\n </div>\n </div>\n </div>\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 { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of list) {\n const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiBufferSlice: LOAD_EMOJI_BY,\n customEmojiTimeout: null,\n customEmojiLoadAllConfirmed: false\n }\n },\n components: {\n StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n Checkbox\n },\n methods: {\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (e) {\n const target = (e && e.target) || this.$refs['emoji-groups']\n this.updateScrolledClass(target)\n this.scrolledGroup(target)\n this.triggerLoadMore(target)\n },\n highlight (key) {\n const ref = this.$refs['group-' + key]\n const top = ref.offsetTop\n this.setShowStickers(false)\n this.activeGroup = key\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = top + 1\n })\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n triggerLoadMore (target) {\n const ref = this.$refs['group-end-custom']\n if (!ref) return\n const bottom = ref.offsetTop + ref.offsetHeight\n\n const scrollerBottom = target.scrollTop + target.clientHeight\n const scrollerTop = target.scrollTop\n const scrollerMax = target.scrollHeight\n\n // Loads more emoji when they come into view\n const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n // Always load when at the very top in case there's no scroll space yet\n const atTop = scrollerTop < 5\n // Don't load when looking at unicode category or at the very bottom\n const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n if (!bottomAboveViewport && (approachingBottom || atTop)) {\n this.loadEmoji()\n }\n },\n scrolledGroup (target) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojisView.forEach(group => {\n const ref = this.$refs['group-' + group.id]\n if (ref.offsetTop <= top) {\n this.activeGroup = group.id\n }\n })\n })\n },\n loadEmoji () {\n const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n if (allLoaded) {\n return\n }\n\n this.customEmojiBufferSlice += LOAD_EMOJI_BY\n },\n startEmojiLoad (forceUpdate = false) {\n if (!forceUpdate) {\n this.keyword = ''\n }\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = 0\n })\n const bufferSize = this.customEmojiBuffer.length\n const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n if (bufferPrefilledAll && !forceUpdate) {\n return\n }\n this.customEmojiBufferSlice = LOAD_EMOJI_BY\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n }\n },\n watch: {\n keyword () {\n this.customEmojiLoadAllConfirmed = false\n this.onScroll()\n this.startEmojiLoad(true)\n }\n },\n computed: {\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n filteredEmoji () {\n return filterByKeyword(\n this.$store.state.instance.customEmoji || [],\n this.keyword\n )\n },\n customEmojiBuffer () {\n return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n },\n emojis () {\n const standardEmojis = this.$store.state.instance.emoji || []\n const customEmojis = this.customEmojiBuffer\n\n return [\n {\n id: 'custom',\n text: this.$t('emoji.custom'),\n icon: 'smile-beam',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'box-open',\n emojis: filterByKeyword(standardEmojis, this.keyword)\n }\n ]\n },\n emojisView () {\n return this.emojis.filter(value => value.emojis.length > 0)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n }\n }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=50bb08b3\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n emits: ['update:modelValue', 'shown'],\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n modelValue: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n input: undefined,\n highlighted: 0,\n caret: 0,\n focused: false,\n blurTimeout: null,\n showPicker: false,\n temporarilyHideSuggestions: false,\n keepOpen: false,\n disableClickOutside: false,\n suggestions: []\n }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.showPicker &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return (this.wordAtCaret || {}).word || ''\n },\n wordAtCaret () {\n if (this.modelValue && this.caret) {\n const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n return word\n }\n }\n },\n mounted () {\n const { root } = this.$refs\n const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n if (!input) return\n this.input = input\n this.resize()\n input.addEventListener('blur', this.onBlur)\n input.addEventListener('focus', this.onFocus)\n input.addEventListener('paste', this.onPaste)\n input.addEventListener('keyup', this.onKeyUp)\n input.addEventListener('keydown', this.onKeyDown)\n input.addEventListener('click', this.onClickInput)\n input.addEventListener('transitionend', this.onTransition)\n input.addEventListener('input', this.onInput)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.removeEventListener('blur', this.onBlur)\n input.removeEventListener('focus', this.onFocus)\n input.removeEventListener('paste', this.onPaste)\n input.removeEventListener('keyup', this.onKeyUp)\n input.removeEventListener('keydown', this.onKeyDown)\n input.removeEventListener('click', this.onClickInput)\n input.removeEventListener('transitionend', this.onTransition)\n input.removeEventListener('input', this.onInput)\n }\n },\n watch: {\n showSuggestions: function (newValue) {\n this.$emit('shown', newValue)\n },\n textAtCaret: async function (newWord) {\n const firstchar = newWord.charAt(0)\n this.suggestions = []\n if (newWord === firstchar) return\n const matchedSuggestions = await this.suggest(newWord)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord) return\n if (matchedSuggestions.length <= 0) return\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n },\n suggestions: {\n handler (newValue) {\n this.$nextTick(this.resize)\n },\n deep: true\n }\n },\n methods: {\n focusPickerInput () {\n const pickerEl = this.$refs.picker.$el\n if (!pickerEl) return\n const pickerInput = pickerEl.querySelector('input')\n if (pickerInput) pickerInput.focus()\n },\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\n this.focusPickerInput()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(this.focusPickerInput)\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.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.keepOpen = keepOpen\n this.$emit('update:modelValue', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.focus()\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted -= 1\n if (this.highlighted < 0) {\n this.highlighted = this.suggestions.length - 1\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = 0\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs['picker'].$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onTransition (e) {\n this.resize()\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n this.resize()\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n if (!this.keepOpen) {\n this.showPicker = false\n }\n this.focused = true\n this.setCaret(e)\n this.resize()\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n this.resize()\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n this.resize()\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.blur()\n this.input.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.focus()\n }\n }\n\n this.showPicker = false\n this.resize()\n },\n onInput (e) {\n this.showPicker = false\n this.setCaret(e)\n this.resize()\n this.$emit('update:modelValue', e.target.value)\n },\n onClickInput (e) {\n this.showPicker = false\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n this.showPicker = false\n },\n onStickerUploaded (e) {\n this.showPicker = false\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.showPicker = false\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n },\n resize () {\n const panel = this.$refs.panel\n if (!panel) return\n const picker = this.$refs.picker.$el\n const panelBody = this.$refs['panel-body']\n const { offsetHeight, offsetTop } = this.input\n const offsetBottom = offsetTop + offsetHeight\n\n this.setPlacement(panelBody, panel, offsetBottom)\n this.setPlacement(picker, picker, offsetBottom)\n },\n setPlacement (container, target, offsetBottom) {\n if (!container || !target) return\n\n target.style.top = offsetBottom + 'px'\n target.style.bottom = 'auto'\n\n if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n target.style.top = 'auto'\n target.style.bottom = this.input.offsetHeight + 'px'\n }\n },\n overflowsBottom (el) {\n return el.getBoundingClientRect().bottom > window.innerHeight\n }\n }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=59b4cd40\"\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=59b4cd40&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","module.exports = __webpack_public_path__ + \"static/img/nsfw.ca95de9.png\";","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 \"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 \"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 \"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 \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n }\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n }\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])}\n },\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 \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n \"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 },\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 \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/x.misskeymarkdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MFM\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n \"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 \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible on other instances\"])}\n },\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])},\n \"local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Local - do not federate this post\"])}\n }\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])}\n },\n \"remote_user_resolver\": {\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n },\n \"settings\": {\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n }\n },\n \"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 \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current avatar\"])},\n \"current_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your current mascot\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n }\n },\n \"profile_fields\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n \"mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastodon FE Mascot\"])},\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_mascot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new mascot\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n \"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 \"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_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 \"sensitive_if_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically mark images as sensitive if a subject line is specified\"])},\n \"render_mfm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Render Misskey Markdown\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's cool use it. If it breaks refresh I guess?\"])},\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 \"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 \"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_show_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full user names as tooltip for remote users\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\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 \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n }\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n }\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n }\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n }\n },\n \"time\": {\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" day\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" days\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hour\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hours\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\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 \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minute\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minutes\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" month\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" months\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" second\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" seconds\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" week\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" weeks\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" year\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" years\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\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 },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n \"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 \"domain_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock domain\"])},\n \"mute_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block domain\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"delete_user_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you absolutely sure? This action cannot be undone.\"])}\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 },\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 },\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 },\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 \"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}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./login_form.vue?vue&type=style&index=0&id=9e104930&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_upload.vue?vue&type=style&index=0&id=8e180d3a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./scope_selector.vue?vue&type=style&index=0&id=4ebab9b5&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./checkbox.vue?vue&type=style&index=0&id=deb5bfe6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_input.vue?vue&type=style&index=0&id=59b4cd40&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll_form.vue?vue&type=style&index=0&id=21f5ba7b&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./still-image.vue?vue&type=style&index=0&id=4da90e4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./attachment.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mention_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./mentions_line.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./hashtag_link.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status_body.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_content.vue?vue&type=style&index=0&id=475fea91&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_form.vue?vue&type=style&index=0&id=ae252da2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./popover.vue?vue&type=style&index=0&id=24420bf0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./moderation_tools.vue?vue&type=style&index=0&id=0ae1f97e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./account_actions.vue?vue&type=style&index=0&id=cbff36f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./user_card.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_panel.vue?vue&type=style&index=0&id=460aaa4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./nav_panel.vue?vue&type=style&index=0&id=fdfe5e92&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./features_panel.vue?vue&type=style&index=0&id=9d4c35f4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./who_to_follow_panel.vue?vue&type=style&index=0&id=b4d31272&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./shout_panel.vue?vue&type=style&index=0&id=3464bd9c&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./modal.vue?vue&type=style&index=0&id=1b320182&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./media_modal.vue?vue&type=style&index=0&id=85a073e6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./side_drawer.vue?vue&type=style&index=0&id=4a50df4d&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_post_status_button.vue?vue&type=style&index=0&id=9a586640&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./reply_button.vue?vue&type=style&index=0&id=56f413c0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./favorite_button.vue?vue&type=style&index=0&id=21f861d8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./react_button.vue?vue&type=style&index=0&id=0101edf8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./retweet_button.vue?vue&type=style&index=0&id=46fe49c4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./extra_buttons.vue?vue&type=style&index=0&id=3a956a44&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./avatar_list.vue?vue&type=style&index=0&id=4cea5bcf&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./status_popover.vue?vue&type=style&index=0&id=fa4a5d94&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_list_popover.vue?vue&type=style&index=0&id=3dc0c2d4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./emoji_reactions.vue?vue&type=style&index=0&id=1bf35779&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./status.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notification.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./notification_filters.vue?vue&type=style&index=0&id=afbf2f10&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mobile_nav.vue?vue&type=style&index=0&id=cab8ee52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search_bar.vue?vue&type=style&index=0&id=105122b7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_reporting_modal.vue?vue&type=style&index=0&id=116c0e28&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./global_notice_list.vue?vue&type=style&index=0&id=5e034d4c&lang=scss\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js!../node_modules/css-loader/index.js!../node_modules/vue-loader/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js!../node_modules/sass-loader/lib/loader.js!./App.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./thread_tree.vue?vue&type=style&index=0&id=38969046&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./conversation.vue?vue&type=style&index=0&id=ee2f7a9a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_menu.vue?vue&type=style&index=0&id=0d348974&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!./timeline.scss?vue&type=style&index=0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_title.vue?vue&type=style&index=0&id=113f5355&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./basic_user_card.vue?vue&type=style&index=0&id=dd332bac&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_list.vue?vue&type=style&index=0&id=598ab446&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat_message.vue?vue&type=style&index=0&id=3566ce4a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_card.vue?vue&type=style&index=0&id=4030f5aa&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./user_profile.vue?vue&type=style&index=0&id=56ed1f7e&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./search.vue?vue&type=style&index=0&id=52f57ebe&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./registration.vue?vue&type=style&index=0&id=c19f87d0&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./terms_of_service_panel.vue?vue&type=style&index=0&id=687e38f6&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./staff_panel.vue?vue&type=style&index=0&id=31dce24a&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js!../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/dist/index.js??ref--2!./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n layoutType: 'normal',\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n state.settings.currentSaveStateNotice = { error: false, data: success }\n state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n } else {\n state.settings.currentSaveStateNotice = { error: true, errorData: error }\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setLayoutType (state, value) {\n state.layoutType = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLayoutWidth (state, value) {\n state.layoutWidth = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch, state },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n commit('pushGlobalNotice', notice)\n // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n // TODO: Generate UUID or something instead or relying on !== operator?\n const newNotice = state.globalNotices[state.globalNotices.length - 1]\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n }\n return newNotice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n // value is optional, assuming it was cached prior\n setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n let width = value\n if (value !== undefined) {\n commit('setLayoutWidth', value)\n } else {\n width = state.layoutWidth\n }\n const mobileLayout = width <= 800\n const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n const { thirdColumnMode } = rootGetters.mergedConfig\n if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n commit('setLayoutType', normalOrMobile)\n } else {\n const wideLayout = width >= 1300\n commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n }\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n greentext: false,\n useAtIcon: false,\n mentionLinkDisplay: 'short',\n mentionLinkShowTooltip: true,\n mentionLinkShowAvatar: false,\n mentionLinkFadeDomain: true,\n mentionLinkShowYous: false,\n mentionLinkBoldenYou: true,\n hideFilteredStatuses: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: false,\n hideMutedThreads: true,\n hideWordFilteredPosts: false,\n hidePostStats: false,\n hideBotIndication: false,\n hideSitename: false,\n hideUserStats: false,\n muteBotStatuses: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n sensitiveIfSubject: false,\n renderMisskeyMarkdown: false,\n conversationDisplay: 'linear',\n conversationTreeAdvanced: false,\n conversationOtherRepliesButton: 'below',\n conversationTreeFadeAncestors: false,\n maxDepthInThread: 6,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: [],\n emojiFetched: false,\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n state[name] = value\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n },\n instanceDomain (state) {\n return new URL(state.server).hostname\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'shoutAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const res = await window.fetch('/static/emoji.json')\n if (res.ok) {\n const values = await res.json()\n const emoji = Object.keys(values).map((key) => {\n return {\n displayText: key,\n imageUrl: false,\n replacement: values[key]\n }\n }).sort((a, b) => a.name > b.name ? 1 : -1)\n commit('setInstanceOption', { name: 'emoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n conversationsObject[conversationId] = [status]\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n 'status': (status) => {\n addStatus(status, showImmediately)\n },\n 'retweet': (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n 'favorite': (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n 'deletion': (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n 'follow': (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n 'default': (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors['default']\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n status['emoji_reactions'] = emojiReactions\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status['emoji_reactions'] = [...status.emoji_reactions, newReaction]\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status['emoji_reactions'] = status.emoji_reactions.filter(r => r.name !== emoji)\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args['until'] = until || timelineData.minId\n } else {\n if (since === undefined) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n }\n\n args['userId'] = userId\n args['tag'] = tag\n args['withMuted'] = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args['replyVisibility'] = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return promiseInterval(boundFetchAndUpdate, 20000)\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, 240000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n obj[item.id] = item\n if (item.screen_name && !item.screen_name.includes('@')) {\n obj[item.screen_name.toLowerCase()] = item\n }\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst fetchMascot = (store) => {\n return store.rootState.api.backendInteractor.fetchMascot()\n .then(({ url }) => store.commit('updateMascot', url))\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 let 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 mergeOrAdd(state.users, state.usersObject, user)\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n state.relationships[relationship.id] = relationship\n })\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n updateMascot (state, mascotUrl) {\n state.currentUser.mascot = mascotUrl\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n user['highlight'] = highlighted\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n const result = state.usersObject[query]\n // In case it's a screen_name, we can try searching case-insensitive\n if (!result && typeof query === 'string') {\n return state.usersObject[query.toLowerCase()]\n }\n return result\n },\n 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 signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchMascot (store) {\n return fetchMascot(store)\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) => { let deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n let rootState = store.rootState\n\n try {\n let data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n let errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n\n // Start fetching chats\n store.dispatch('startFetchingChats')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('fetchTimeline', 'friends', { since: null })\n store.dispatch('fetchNotifications', { since: null })\n store.dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n store.dispatch('fetchChats', { latest: true })\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments: attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, timeline, { ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers['followRequests']) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n let requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeShout', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","const shout = {\n state: {\n messages: [],\n channel: { state: '' },\n 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 userId: null,\n statuses: [],\n preTickedIds: [],\n modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.userId = userId\n state.statuses = statuses\n state.preTickedIds = preTickedIds\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n state.pollsObject[poll.id] = merge(existingPoll, poll)\n } else {\n state.pollsObject[poll.id] = poll\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue + 1\n } else {\n state.trackedPolls[pollId] = 1\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue - 1\n } else {\n state.trackedPolls[pollId] = 0\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId: chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage['fakeId']\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage['isTail'] = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object['isTail'] = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object['isHead'] = true\n object['messageChainId'] = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import { 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, 60000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n state.openedChats[chat.id] = chat\n\n if (!state.openedChatMessageServices[chat.id]) {\n state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n state.chatList.idStore[updatedChat.id] = updatedChat\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n state.chatList.idStore[updatedChat.id] = updatedChat\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","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 ? state : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n let value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(cloneDeep(state), paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","<template>\n <div\n id=\"app-loaded\"\n :style=\"bgStyle\"\n >\n <div\n id=\"app_bg_wrapper\"\n class=\"app-bg-wrapper\"\n />\n <MobileNav v-if=\"layoutType === 'mobile'\" />\n <DesktopNav v-else />\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 id=\"sidebar\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\">\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 <div id=\"main-scroller\" class=\"column main\" :class=\"{ '-full-height': isChats }\">\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 </div>\n <div id=\"notifs-column\" class=\"column -scrollable\" :class=\"{ '-show-scrollbar': showScrollbars }\"/>\n </div>\n <media-modal />\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 <SettingsModal />\n <div id=\"modal\" />\n <GlobalNoticeList />\n </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n <div 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 </div>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n</style>\n","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.login') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <template v-if=\"isPasswordAuth\">\n <div class=\"form-group\">\n <label for=\"username\">{{ $t('login.username') }}</label>\n <input\n id=\"username\"\n v-model=\"user.username\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n :placeholder=\"$t('login.placeholder')\"\n >\n </div>\n <div class=\"form-group\">\n <label for=\"password\">{{ $t('login.password') }}</label>\n <input\n id=\"password\"\n ref=\"passwordInput\"\n v-model=\"user.password\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div class=\"form-group\">\n <router-link :to=\"{name: 'password-reset'}\">\n {{ $t('password_reset.forgot_password') }}\n </router-link>\n </div>\n </template>\n\n <div\n v-if=\"isTokenAuth\"\n class=\"form-group\"\n >\n <p>{{ $t('login.description') }}</p>\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <router-link\n v-if=\"registrationOpen\"\n :to=\"{name: 'registration'}\"\n class=\"register\"\n >\n {{ $t('login.register') }}\n </router-link>\n </div>\n <button\n :disabled=\"loggingIn\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('login.login') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./login_form.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1.0em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height:24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n let 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=9e104930\"\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=9e104930&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.recovery') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireTOTP\"\n >\n {{ $t('login.enter_two_factor_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./recovery_form.js\" ></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=13ff0678\"\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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.totp') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">\n {{ $t('login.authentication_code') }}\n </label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireRecovery\"\n >\n {{ $t('login.enter_recovery_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n size=\"lg\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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=460aaa4a\"\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=460aaa4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <ul>\n <li v-if=\"currentUser || !privateMode\">\n <button\n class=\"button-unstyled menu-item\"\n @click=\"toggleTimelines\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"stream\"\n />{{ $t(\"nav.timelines\") }}\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <div\n v-show=\"showTimelines\"\n class=\"timelines-background\"\n >\n <TimelineMenuContent class=\"timelines\" />\n </div>\n </li>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"bell\"\n />{{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser && pleromaChatMessagesAvailable\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n >\n <div\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </div>\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"comments\"\n />{{ $t(\"nav.chats\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser && currentUser.locked\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'friend-requests' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"user-plus\"\n />{{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li>\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'about' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"info-circle\"\n />{{ $t(\"nav.about\") }}\n </router-link>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./nav_panel.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .menu-item {\n display: block;\n box-sizing: border-box;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .fa-scale-110 {\n margin-right: 0.8em;\n }\n\n .badge {\n position: absolute;\n right: 0.6rem;\n top: 1.25em;\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n)\n\nconst TimelineMenuContent = {\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default TimelineMenuContent\n","import { render } from \"./timeline_menu_content.vue?vue&type=template&id=9e3b525a\"\nimport script from \"./timeline_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <ul>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'friends' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"home\"\n />{{ $t(\"nav.home_timeline\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser || !privateMode\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'public-timeline' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"users\"\n />{{ $t(\"nav.public_tl\") }}\n </router-link>\n </li>\n <li v-if=\"federating && (currentUser || !privateMode)\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'public-external-timeline' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"globe\"\n />{{ $t(\"nav.twkn\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'bookmarks'}\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"bookmark\"\n />{{ $t(\"nav.bookmarks\") }}\n </router-link>\n </li>\n <li v-if=\"currentUser\">\n <router-link\n class=\"menu-item\"\n :to=\"{ name: 'dms', params: { username: currentUser.screen_name } }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding \"\n icon=\"envelope\"\n />{{ $t(\"nav.dms\") }}\n </router-link>\n </li>\n </ul>\n</template>\n\n<script src=\"./timeline_menu_content.js\" ></script>\n","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n)\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: {\n TimelineMenuContent\n },\n data () {\n return {\n showTimelines: false\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=fdfe5e92\"\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=fdfe5e92&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=5b01187b\"\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 \"/home/hannah/personal/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=9d4c35f4\"\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=9d4c35f4&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"who-to-follow-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n </div>\n <div class=\"who-to-follow\">\n <p\n v-for=\"user in usersToFollow\"\n :key=\"user.id\"\n class=\"who-to-follow-items\"\n >\n <img :src=\"user.img\">\n <router-link :to=\"userProfileLink(user.id, user.name)\">\n {{ user.name }}\n </router-link><br>\n </p>\n <p class=\"who-to-follow-more\">\n <router-link :to=\"{ name: 'who-to-follow' }\">\n {{ $t('who_to_follow.more') }}\n </router-link>\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\" ></script>\n\n<style lang=\"scss\">\n .who-to-follow * {\n vertical-align: middle;\n }\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n .who-to-follow {\n padding: 0em 1em;\n margin: 0px;\n }\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0px;\n margin: 1em 0em;\n }\n .who-to-follow-more {\n padding: 0px;\n margin: 1em 0em;\n text-align: center;\n }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n let user = shuffled[index]\n let img = user.avatar || this.$store.state.instance.defaultAvatar\n let name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n var credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=b4d31272\"\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=b4d31272&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!collapsed || !floating\"\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading timeline-heading\"\n :class=\"{ 'shout-heading': floating }\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n {{ $t('shoutbox.title') }}\n <FAIcon\n v-if=\"floating\"\n icon=\"times\"\n class=\"close-icon\"\n />\n </div>\n </div>\n <div class=\"shout-window\">\n <div\n v-for=\"message in messages\"\n :key=\"message.id\"\n class=\"shout-message\"\n >\n <span class=\"shout-avatar\">\n <img :src=\"message.author.avatar\">\n </span>\n <div class=\"shout-content\">\n <router-link\n class=\"shout-name\"\n :to=\"userProfileLink(message.author)\"\n >\n {{ message.author.username }}\n </router-link>\n <br>\n <span class=\"shout-text\">\n {{ message.text }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"shout-input\">\n <textarea\n v-model=\"currentMessage\"\n class=\"shout-input-textarea\"\n rows=\"1\"\n @keyup.enter=\"submit(currentMessage)\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading -stub timeline-heading shout-heading\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n <FAIcon\n class=\"icon\"\n icon=\"bullhorn\"\n />\n {{ $t('shoutbox.title') }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: 1000;\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst shoutPanel = {\n props: [ 'floating' ],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.shout.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=3464bd9c\"\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=3464bd9c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n :is-open=\"modalActivated\"\n class=\"settings-modal\"\n :class=\"{ peek: modalPeeked }\"\n :no-background=\"modalPeeked\"\n >\n <div class=\"settings-modal-panel panel\">\n <div class=\"panel-heading\">\n <span class=\"title\">\n {{ $t('settings.settings') }}\n </span>\n <transition name=\"fade\">\n <div\n v-if=\"currentSaveStateNotice\"\n class=\"alert\"\n :class=\"{ transparent: !currentSaveStateNotice.error, error: currentSaveStateNotice.error}\"\n @click.prevent\n >\n {{ currentSaveStateNotice.error ? $t('settings.saving_err') : $t('settings.saving_ok') }}\n </div>\n </transition>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.peek')\"\n @click=\"peekModal\"\n >\n <FAIcon\n :icon=\"['far', 'window-minimize']\"\n fixed-width\n />\n </button>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n @click=\"closeModal\"\n >\n <FAIcon\n icon=\"times\"\n fixed-width\n />\n </button>\n </div>\n <div class=\"panel-body\">\n <SettingsModalContent v-if=\"modalOpenedOnce\" />\n </div>\n <div class=\"panel-footer settings-footer\">\n <Popover\n class=\"export\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5, x: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template v-slot:trigger>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n >\n <span>{{ $t(\"settings.file_export_import.backup_restore\") }}</span>\n {{ ' ' }}\n <FAIcon\n icon=\"chevron-down\"\n />\n </button>\n </template>\n <template v-slot:content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backup\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backupWithTheme\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings_theme\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"restore\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-upload\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.restore_settings\") }}</span>\n </button>\n </div>\n </template>\n </Popover>\n\n <Checkbox\n :model-value=\"!!expertLevel\"\n @update:modelValue=\"expertLevel = Number($event)\"\n >\n {{ $t(\"settings.expert_mode\") }}\n </Checkbox>\n <span\n id=\"unscrolled-content\"\n class=\"extra-content\"\n />\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./settings_modal.js\"></script>\n\n<style src=\"./settings_modal.scss\" lang=\"scss\"></style>\n","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n 'open': this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: 2000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgba(0, 0, 0, 0);\n }\n to {\n background-color: rgba(0, 0, 0, 0.5);\n }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=1b320182\"\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=1b320182&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=595215a2\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n emits: ['resetAsyncComponent'],\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n .btn {\n margin: .5em;\n padding: .5em 2em;\n }\n}\n</style>\n","import { render } from \"./async_component_error.vue?vue&type=template&id=26dcc164\"\nimport script from \"./async_component_error.vue?vue&type=script&lang=js\"\nexport * from \"./async_component_error.vue?vue&type=script&lang=js\"\n\nimport \"./async_component_error.vue?vue&type=style&index=0&id=26dcc164&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineAsyncComponent, shallowReactive, h } from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => defineAsyncComponent({\n loader: asyncComponent,\n ...options\n })\n\n const observe = shallowReactive({ c: asyncComponentFactory() })\n\n return {\n render () {\n // emit event resetAsyncComponent to reloading\n return h(observe.c(), {\n onResetAsyncComponent () {\n observe.c = asyncComponentFactory()\n }\n })\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n faTimes,\n faFileUpload,\n faFileDownload,\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n faTimes,\n faWindowMinimize,\n faFileUpload,\n faFileDownload,\n faChevronDown\n)\n\nconst SettingsModal = {\n data () {\n return {\n dataImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n dataThemeExporter: newExporter({\n filename: 'pleromafe_settings.full',\n getExportedObject: () => this.generateExport(true)\n }),\n dataExporter: newExporter({\n filename: 'pleromafe_settings',\n getExportedObject: () => this.generateExport()\n })\n }\n },\n components: {\n Modal,\n Popover,\n Checkbox,\n SettingsModalContent: getResettableAsyncComponent(\n () => import('./settings_modal_content.vue'),\n {\n loadingComponent: PanelLoading,\n errorComponent: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n },\n importValidator (data) {\n if (!Array.isArray(data._pleroma_settings_version)) {\n return {\n messageKey: 'settings.file_import_export.invalid_file'\n }\n }\n\n const [major, minor] = data._pleroma_settings_version\n\n if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_new',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_old',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n this.$store.dispatch('pushGlobalNotice', {\n level: 'warning',\n messageKey: 'settings.file_export_import.errors.file_slightly_new'\n })\n }\n\n return true\n },\n onImportFailure (result) {\n if (result.error) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n } else {\n this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n }\n },\n onImport (data) {\n if (data) { this.$store.dispatch('loadSettings', data) }\n },\n restore () {\n this.dataImporter.importData()\n },\n backup () {\n this.dataExporter.exportData()\n },\n backupWithTheme () {\n this.dataThemeExporter.exportData()\n },\n generateExport (theme = false) {\n const { config } = this.$store.state\n let sample = config\n if (!theme) {\n const ignoreList = new Set([\n 'customTheme',\n 'customThemeSource',\n 'colors'\n ])\n sample = Object.fromEntries(\n Object\n .entries(sample)\n .filter(([key]) => !ignoreList.has(key))\n )\n }\n const clone = cloneDeep(sample)\n clone._pleroma_settings_version = [\n PLEROMAFE_SETTINGS_MAJOR_VERSION,\n PLEROMAFE_SETTINGS_MINOR_VERSION\n ]\n return clone\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalOpenedOnce () {\n return this.$store.state.interface.settingsModalLoaded\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n },\n expertLevel: {\n get () {\n return this.$store.state.config.expertLevel > 0\n },\n set (value) {\n console.log(value)\n this.$store.dispatch('setOption', { name: 'expertLevel', value: value ? 1 : 0 })\n }\n }\n }\n}\n\nexport default SettingsModal\n","import { render } from \"./settings_modal.vue?vue&type=template&id=417af644\"\nimport script from \"./settings_modal.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"showing\"\n class=\"media-modal-view\"\n @backdropClicked=\"hideIfNotSwiped\"\n >\n <SwipeClick\n v-if=\"type === 'image'\"\n ref=\"swipeClick\"\n class=\"modal-image-container\"\n :direction=\"swipeDirection\"\n :threshold=\"swipeThreshold\"\n @preview-requested=\"handleSwipePreview\"\n @swipe-finished=\"handleSwipeEnd\"\n @swipeless-clicked=\"hide\"\n >\n <PinchZoom\n ref=\"pinchZoom\"\n class=\"modal-image-container-inner\"\n selector=\".modal-image\"\n reach-min-scale-strategy=\"reset\"\n stop-propagate-handled=\"stop-propgate-handled\"\n :allow-pan-min-scale=\"pinchZoomMinScale\"\n :min-scale=\"pinchZoomMinScale\"\n :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n >\n <img\n :class=\"{ loading }\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n @load=\"onImageLoaded\"\n >\n </PinchZoom>\n </SwipeClick>\n <VideoAttachment\n v-if=\"type === 'video'\"\n class=\"modal-image\"\n :attachment=\"currentMedia\"\n :controls=\"true\"\n />\n <audio\n v-if=\"type === 'audio'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n controls\n />\n <Flash\n v-if=\"type === 'flash'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n />\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.previous')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n @click.stop.prevent=\"goPrev\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-left\"\n />\n </button>\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.next')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n @click.stop.prevent=\"goNext\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-right\"\n />\n </button>\n <button\n class=\"modal-view-button modal-view-button-hide\"\n :title=\"$t('media_modal.hide')\"\n @click.stop.prevent=\"hide\"\n >\n <FAIcon\n class=\"button-icon\"\n icon=\"times\"\n />\n </button>\n\n <span\n v-if=\"description\"\n class=\"description\"\n >\n {{ description }}\n </span>\n <span\n class=\"counter\"\n >\n {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n </span>\n <span\n v-if=\"loading\"\n class=\"loading-spinner\"\n >\n <FAIcon\n spin\n icon=\"circle-notch\"\n size=\"5x\"\n />\n </span>\n </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.modal-view.media-modal-view {\n z-index: 9000;\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n overflow: hidden;\n}\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(.4,0,.22,1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #FFF;\n text-align: center;\n background-color: rgba(0,0,0,.3);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #FFF;\n text-align: center;\n background-color: rgba(0,0,0,.3);\n }\n\n &--prev {\n left: 0;\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n methods: {\n setTransform ({ scale, x, y }) {\n this.$el.setTransform({ scale, x, y })\n }\n },\n created () {\n // Make lint happy\n (() => PinchZoom)()\n }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <pinch-zoom\n class=\"pinch-zoom-parent\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <slot />\n </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n // swipePreviewCallback(offsets: Array[Number])\n // offsets: the offset vector which the underlying component should move, from the starting position\n // swipeEndCallback(sign: 0|-1|1)\n // sign: if the swipe does not meet the threshold, 0\n // if the swipe meets the threshold in the positive direction, 1\n // if the swipe meets the threshold in the negative direction, -1\n constructor ({\n direction,\n // swipeStartCallback\n swipePreviewCallback,\n swipeEndCallback,\n swipeCancelCallback,\n swipelessClickCallback,\n threshold = 30,\n perpendicularTolerance = 1.0,\n disableClickThreshold = 1\n }) {\n const nop = () => {}\n this.direction = direction\n this.swipePreviewCallback = swipePreviewCallback || nop\n this.swipeEndCallback = swipeEndCallback || nop\n this.swipeCancelCallback = swipeCancelCallback || nop\n this.swipelessClickCallback = swipelessClickCallback || nop\n this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n this.perpendicularTolerance = perpendicularTolerance\n this._reset()\n }\n\n _reset () {\n this._startPos = [0, 0]\n this._pointerId = -1\n this._swiping = false\n this._swiped = false\n this._preventNextClick = false\n }\n\n start (event) {\n // Only handle left click\n if (event.button !== BUTTON_LEFT) {\n return\n }\n\n this._startPos = pointerEventCoord(event)\n this._pointerId = event.pointerId\n this._swiping = true\n this._swiped = false\n }\n\n move (event) {\n if (this._swiping && this._pointerId === event.pointerId) {\n this._swiped = true\n\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n this.swipePreviewCallback(delta)\n }\n }\n\n cancel (event) {\n if (!this._swiping || this._pointerId !== event.pointerId) {\n return\n }\n\n this.swipeCancelCallback()\n }\n\n end (event) {\n if (!this._swiping) {\n return\n }\n\n if (this._pointerId !== event.pointerId) {\n return\n }\n\n this._swiping = false\n\n // movement too small\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n const sign = (() => {\n if (vectorLength(delta) < this.threshold()) {\n return 0\n }\n // movement is opposite from direction\n const isPositive = dotProduct(delta, this.direction) > 0\n\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, this.direction)\n const perpendicularDir = perpendicular(this.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * this.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) {\n return 0\n }\n\n return isPositive ? 1 : -1\n })()\n\n if (this._swiped) {\n this.swipeEndCallback(sign)\n }\n this._reset()\n // Only a mouse will fire click event when\n // the end point is far from the starting point\n // so for other kinds of pointers do not check\n // whether we have swiped\n if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n this._preventNextClick = true\n }\n }\n\n click (event) {\n if (!this._preventNextClick) {\n this.swipelessClickCallback()\n }\n this._reset()\n }\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe,\n SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n * direction: a vector that indicates the direction of the intended swipe\n * threshold: the minimum distance in pixels the swipe has moved on `direction'\n * for swipe-finished() to have a non-zero sign\n * perpendicularTolerance: see gesture_service\n *\n * Events:\n * preview-requested(offsets)\n * Emitted when the pointer has moved.\n * offsets: the offsets from the start of the swipe to the current cursor position\n *\n * swipe-canceled()\n * Emitted when the swipe has been canceled due to a pointercancel event.\n *\n * swipe-finished(sign: 0|-1|1)\n * Emitted when the swipe has finished.\n * sign: if the swipe does not meet the threshold, 0\n * if the swipe meets the threshold in the positive direction, 1\n * if the swipe meets the threshold in the negative direction, -1\n *\n * swipeless-clicked()\n * Emitted when there is a click without swipe.\n * This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n props: {\n direction: {\n type: Array\n },\n threshold: {\n type: Function,\n default: () => 30\n },\n perpendicularTolerance: {\n type: Number,\n default: 1.0\n }\n },\n methods: {\n handlePointerDown (event) {\n this.$gesture.start(event)\n },\n handlePointerMove (event) {\n this.$gesture.move(event)\n },\n handlePointerUp (event) {\n this.$gesture.end(event)\n },\n handlePointerCancel (event) {\n this.$gesture.cancel(event)\n },\n handleNativeClick (event) {\n this.$gesture.click(event)\n },\n preview (offsets) {\n this.$emit('preview-requested', offsets)\n },\n end (sign) {\n this.$emit('swipe-finished', sign)\n },\n click () {\n this.$emit('swipeless-clicked')\n },\n cancel () {\n this.$emit('swipe-canceled')\n }\n },\n created () {\n this.$gesture = new GestureService.SwipeAndClickGesture({\n direction: this.direction,\n threshold: this.threshold,\n perpendicularTolerance: this.perpendicularTolerance,\n swipePreviewCallback: this.preview,\n swipeEndCallback: this.end,\n swipeCancelCallback: this.cancel,\n swipelessClickCallback: this.click\n })\n }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-bind=\"$attrs\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerCancel\"\n @click=\"handleNativeClick\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n PinchZoom,\n SwipeClick,\n Modal,\n Flash\n },\n data () {\n return {\n loading: false,\n swipeDirection: GestureService.DIRECTION_LEFT,\n swipeThreshold: () => {\n const considerableMoveRatio = 1 / 4\n return window.innerWidth * considerableMoveRatio\n },\n pinchZoomMinScale: 1,\n pinchZoomScaleResetLimit: 1.2\n }\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n description () {\n return this.currentMedia.description\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? this.getType(this.currentMedia) : null\n }\n },\n methods: {\n getType (media) {\n return fileTypeService.fileType(media.mimetype)\n },\n hide () {\n // HACK: Closing immediately via a touch will cause the click\n // to be processed on the content below the overlay\n const transitionTime = 100 // ms\n setTimeout(() => {\n this.$store.dispatch('closeMediaViewer')\n }, transitionTime)\n },\n hideIfNotSwiped (event) {\n // If we have swiped over SwipeClick, do not trigger hide\n const comp = this.$refs.swipeClick\n if (!comp) {\n this.hide()\n } else {\n comp.$gesture.click(event)\n }\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n const newMedia = this.media[prevIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n const newMedia = this.media[nextIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n onImageLoaded () {\n this.loading = false\n },\n handleSwipePreview (offsets) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n },\n handleSwipeEnd (sign) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n if (sign > 0) {\n this.goNext()\n } else if (sign < 0) {\n this.goPrev()\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n unmounted () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=85a073e6\"\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=85a073e6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"side-drawer-container\"\n :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n >\n <div\n class=\"side-drawer-darken\"\n :class=\"{ 'side-drawer-darken-closed': closed}\"\n />\n <div\n class=\"side-drawer\"\n :class=\"{'side-drawer-closed': closed}\"\n @touchstart=\"touchStart\"\n @touchmove=\"touchMove\"\n >\n <div\n class=\"side-drawer-heading\"\n @click=\"toggleDrawer\"\n >\n <UserCard\n v-if=\"currentUser\"\n :user-id=\"currentUser.id\"\n :hide-bio=\"true\"\n />\n <div\n v-else\n class=\"side-drawer-logo-wrapper\"\n >\n <img :src=\"logo\">\n <span v-if=\"!hideSitename\">{{ sitename }}</span>\n </div>\n </div>\n <ul>\n <li\n v-if=\"!currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'login' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-in-alt\"\n /> {{ $t(\"login.login\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: timelinesRoute }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"home\"\n /> {{ $t(\"nav.timelines\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && pleromaChatMessagesAvailable\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n style=\"position: relative\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"comments\"\n /> {{ $t(\"nav.chats\") }}\n <span\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </span>\n </router-link>\n </li>\n </ul>\n <ul v-if=\"currentUser\">\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n /> {{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser.locked\"\n @click=\"toggleDrawer\"\n >\n <router-link to=\"/friend-requests\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"shout\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'shout-panel' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"shoutbox.title\") }}\n </router-link>\n </li>\n </ul>\n <ul>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'search' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n /> {{ $t(\"nav.search\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && suggestionsEnabled\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'who-to-follow' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.who_to_follow\") }}\n </router-link>\n </li>\n <li @click=\"toggleDrawer\">\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n /> {{ $t(\"settings.settings\") }}\n </button>\n </li>\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'about'}\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"info-circle\"\n /> {{ $t(\"nav.about\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && currentUser.role === 'admin'\"\n @click=\"toggleDrawer\"\n >\n <a\n href=\"/pleroma/admin/#/login-pleroma\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n /> {{ $t(\"nav.administration\") }}\n </a>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"doLogout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n /> {{ $t(\"login.logout\") }}\n </button>\n </li>\n </ul>\n </div>\n <div\n class=\"side-drawer-click-outside\"\n :class=\"{'side-drawer-click-outside-closed': closed}\"\n @click.stop.prevent=\"toggleDrawer\"\n />\n </div>\n</template>\n\n<script src=\"./side_drawer.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.side-drawer-container {\n position: fixed;\n z-index: 1000;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.side-drawer-darken-closed {\n background-color: rgba(0, 0, 0, 0);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition: 0.35s;\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a, button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nconst SideDrawer = {\n props: [ 'logout' ],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n 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 if (this.$store.state.interface.lastTimeline) {\n return this.$store.state.interface.lastTimeline\n }\n return this.currentUser ? 'friends' : 'public-timeline'\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=4a50df4d\"\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=4a50df4d&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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])\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=9a586640\"\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=9a586640&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 @click=\"openPostForm\"\n >\n <FAIcon icon=\"pen\" />\n </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3), 0px 4px 6px rgba(0, 0, 0, 0.3);\n z-index: 10;\n\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n</style>\n","<template>\n <div\n class=\"MobileNav\"\n >\n <nav\n id=\"nav\"\n class=\"mobile-nav\"\n @click=\"scrollToTop()\"\n >\n <div class=\"item\">\n <button\n class=\"button-unstyled mobile-nav-button\"\n @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\"\n class=\"alert-dot\"\n />\n </button>\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 <div class=\"item right\">\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled mobile-nav-button\"\n @click.stop.prevent=\"openMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n />\n <div\n v-if=\"unseenNotificationsCount\"\n class=\"alert-dot\"\n />\n </button>\n </div>\n </nav>\n <div\n v-if=\"currentUser\"\n class=\"mobile-notifications-drawer\"\n :class=\"{ '-closed': !notificationsOpen }\"\n @touchstart.stop=\"notificationsTouchStart\"\n @touchmove.stop=\"notificationsTouchMove\"\n >\n <div class=\"mobile-notifications-header\">\n <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n <a\n class=\"mobile-nav-button\"\n @click.stop.prevent=\"closeMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </a>\n </div>\n <div\n class=\"mobile-notifications\"\n id=\"mobile-notifications\"\n @scroll=\"onScroll\"\n >\n </div>\n </div>\n <SideDrawer\n ref=\"sideDrawer\"\n :logout=\"logout\"\n />\n </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobileNav {\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 .3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgba(0,0,0,.6);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: 1001;\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: 1;\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0px 0px 4px rgba(0,0,0,.6);\n box-shadow: var(--topBarShadow);\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n .panel:after {\n border-radius: 0;\n }\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.closeMobileNotifications,\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications () {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n this.markNotificationsAsSeen()\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n markNotificationsAsSeen () {\n // this.$refs.notifications.markAsSeen()\n this.$store.dispatch('markNotificationsAsSeen')\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=cab8ee52\"\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=cab8ee52&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <nav\n id=\"nav\"\n class=\"DesktopNav\"\n :class=\"{ '-logoLeft': logoLeft }\"\n @click=\"scrollToTop()\"\n >\n <div class=\"inner-nav\">\n <div class=\"item sitename\">\n <router-link\n v-if=\"!hideSitename\"\n class=\"site-name\"\n :to=\"{ name: 'root' }\"\n active-class=\"home\"\n >\n {{ sitename }}\n </router-link>\n </div>\n <router-link\n class=\"logo\"\n :to=\"{ name: 'root' }\"\n :style=\"logoBgStyle\"\n >\n <div\n class=\"mask\"\n :style=\"logoMaskStyle\"\n />\n <img\n :src=\"logo\"\n :style=\"logoStyle\"\n >\n </router-link>\n <div class=\"item right actions\">\n <search-bar\n v-if=\"currentUser || !privateMode\"\n @toggled=\"onSearchBarToggled\"\n @click.stop\n />\n <button\n class=\"button-unstyled nav-icon\"\n @click.stop=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n :title=\"$t('nav.preferences')\"\n />\n </button>\n <a\n v-if=\"currentUser && currentUser.role === 'admin'\"\n href=\"/pleroma/admin/#/login-pleroma\"\n class=\"nav-icon\"\n target=\"_blank\"\n @click.stop\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n :title=\"$t('nav.administration')\"\n />\n </a>\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled nav-icon\"\n @click.prevent=\"logout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n :title=\"$t('login.logout')\"\n />\n </button>\n </div>\n </div>\n </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","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=105122b7\"\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=105122b7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=\"SearchBar\"\n :class=\"{ '-expanded': !hidden }\"\n >\n <button\n v-if=\"hidden\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.search')\"\n type=\"button\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </button>\n <template v-else>\n <input\n id=\"search-bar-input\"\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-bar-input\"\n :placeholder=\"$t('nav.search')\"\n type=\"text\"\n @keyup.enter=\"find(searchTerm)\"\n >\n <button\n class=\"button-default search-button\"\n type=\"submit\"\n @click=\"find(searchTerm)\"\n >\n <FAIcon\n fixed-width\n icon=\"search\"\n />\n </button>\n <button\n class=\"button-unstyled cancel-search\"\n type=\"button\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n class=\"cancel-icon fa-scale-110 fa-old-padding\"\n />\n </button>\n </template>\n </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n</style>\n","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n )\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n 'visibility': this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n } : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n 'margin': `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask ? {} : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=a81d722a\"\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 \"/home/hannah/personal/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 <div class=\"title\">\n {{ $t('user_reporting.title', [user.screen_name_ui]) }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"user-reporting-panel-left\">\n <div>\n <p>{{ $t('user_reporting.add_comment_description') }}</p>\n <textarea\n v-model=\"comment\"\n class=\"form-control\"\n :placeholder=\"$t('user_reporting.additional_comments')\"\n rows=\"1\"\n @input=\"resize\"\n />\n </div>\n <div v-if=\"!user.is_local\">\n <p>{{ $t('user_reporting.forward_description') }}</p>\n <Checkbox v-model=\"forward\">\n {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n </Checkbox>\n </div>\n <div>\n <button\n class=\"btn button-default\"\n :disabled=\"processing\"\n @click=\"reportUser\"\n >\n {{ $t('user_reporting.submit') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('user_reporting.generic_error') }}\n </div>\n </div>\n </div>\n <div class=\"user-reporting-panel-right\">\n <List :items=\"statuses\">\n <template v-slot:item=\"{item}\">\n <div class=\"status-fadein user-reporting-panel-sitem\">\n <Status\n :in-conversation=\"false\"\n :focused=\"false\"\n :statusoid=\"item\"\n />\n <Checkbox\n :model-value=\"isChecked(item.id)\"\n @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n />\n </div>\n </template>\n </List>\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n</style>\n","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.$store.state.reports.modalActivated\n },\n userId () {\n return this.$store.state.reports.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.$store.state.reports.statuses\n },\n preTickedIds () {\n return this.$store.state.reports.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=116c0e28\"\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=116c0e28&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isLoggedIn && !resettingForm\"\n :is-open=\"modalActivated\"\n class=\"post-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"post-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.new_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"global-notice-list\">\n <div\n v-for=\"(notice, index) in notices\"\n :key=\"index\"\n class=\"alert global-notice\"\n :class=\"{ ['global-' + notice.level]: true }\"\n >\n <div class=\"notice-message\">\n {{ $t(notice.messageKey, notice.messageArgs) }}\n </div>\n <button\n class=\"button-unstyled close-notice\"\n @click=\"closeNotice(notice)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.global-notice-list {\n position: fixed;\n top: 50px;\n width: 100%;\n pointer-events: none;\n z-index: 1001;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=5e034d4c\"\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=5e034d4c&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\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,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n 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 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 newPostButtonShown () {\n if (this.isChats) return false\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\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=6df91bcb\"\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 \"/home/hannah/personal/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 v-if=\"!embedded\" />\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 <TimelineQuickSettings v-if=\"!embedded\" />\n </div>\n <div :class=\"classes.body\">\n <div\n ref=\"timeline\"\n class=\"timeline\"\n >\n <conversation\n v-for=\"statusId in filteredPinnedStatusIds\"\n :key=\"statusId + '-pinned'\"\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 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 :to=\"footerSlipgate\" :disabled=\"!embedded || !footerSlipgate\">\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 </div>\n <div class=\"conversation-body panel-body\">\n <div\n v-if=\"isTreeView\"\n class=\"thread-body\"\n >\n <div\n v-if=\"shouldShowAllConversationButton\"\n class=\"conversation-dive-to-top-level-box\"\n >\n <i18n-t\n keypath=\"status.show_all_conversation_with_icon\"\n tag=\"button\"\n class=\"button-unstyled -link\"\n @click.prevent=\"diveToTopLevel\"\n scope=\"global\"\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 <div\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 </div>\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 <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 </div>\n </div>\n </div>\n <div\n v-else\n :style=\"hiddenStyle\"\n />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--border, $fallback--border);\n border-radius: 0;\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--border, $fallback--border);\n border-radius: 0;\n /* Make the button stretch along the whole row */\n &, &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &:last-child .conversation-status,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left-width: 4px;\n border-left-style: solid;\n border-left-color: $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n</style>\n","<template>\n <div 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 </div>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleRight\n)\n\nconst ThreadTree = {\n components: {\n Status\n },\n name: 'ThreadTree',\n props: {\n depth: Number,\n status: Object,\n inProfile: Boolean,\n conversation: Array,\n collapsable: Boolean,\n isExpanded: Boolean,\n pinnedStatusIdsObject: Object,\n profileUserId: String,\n\n focused: Function,\n highlight: String,\n getReplies: Function,\n setHighlight: Function,\n toggleExpanded: Function,\n\n simple: Boolean,\n // to control display of the whole thread forest\n toggleThreadDisplay: Function,\n threadDisplayStatus: Object,\n showThreadRecursively: Function,\n totalReplyCount: Object,\n totalReplyDepth: Object,\n statusContentProperties: Object,\n setStatusContentProperty: Function,\n toggleStatusContentProperty: Function,\n dive: Function\n },\n computed: {\n suspendable () {\n const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n if (this.$refs.childComponent) {\n return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n }\n return selfSuspendable\n },\n reverseLookupTable () {\n return this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n },\n currentReplies () {\n return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n },\n threadShowing () {\n return this.threadDisplayStatus[this.status.id] === 'showing'\n },\n currentProp () {\n return this.statusContentProperties[this.status.id]\n }\n },\n methods: {\n statusById (id) {\n return this.conversation[this.reverseLookupTable[id]]\n },\n collapseThread () {\n },\n showThread () {\n },\n showAllSubthreads () {\n },\n toggleCurrentProp (name) {\n this.toggleStatusContentProperty(this.status.id, name)\n },\n setCurrentProp (name, newVal) {\n this.setStatusContentProperty(this.status.id, name)\n }\n }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=38969046\"\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=38969046&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n)\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false,\n threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n statusContentPropertiesObject: {},\n inlineDivePosition: null\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n maxDepthToShowByDefault () {\n // maxDepthInThread = max number of depths that is *visible*\n // since our depth starts with 0 and \"showing\" means \"showing children\"\n // there is a -2 here\n const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n return maxDepth >= 1 ? maxDepth : 1\n },\n 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: 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 },\n components: {\n Status,\n ThreadTree\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n } else {\n this.resetDisplayState()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n 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=ee2f7a9a\"\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=ee2f7a9a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 :margin=\"{ left: -15, right: -200 }\"\n :bound-to=\"{ x: 'container' }\"\n popover-class=\"timeline-menu-popover-wrap\"\n @show=\"openMenu\"\n @close=\"() => isOpen = false\"\n >\n <template v-slot:content>\n <div class=\"timeline-menu-popover popover-default\">\n <TimelineMenuContent />\n </div>\n </template>\n <template v-slot:trigger>\n <button 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 </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\" ></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.TimelineMenu {\n flex-shrink: 1;\n margin-right: auto;\n min-width: 0;\n width: 24rem;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .timeline-menu-popover-wrap {\n overflow: hidden;\n // Match panel heading padding to line up menu with bottom of heading\n margin-top: 0.6rem;\n padding: 0 15px 15px 15px;\n }\n\n .timeline-menu-popover {\n width: 24rem;\n max-width: 100vw;\n margin: 0;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n transform: translateY(-100%);\n transition: transform 100ms;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n &.open .timeline-menu-popover {\n transform: translateY(0);\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n\n a {\n display: block;\n padding: 0.6em 0.65em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n 'friends': 'nav.home_timeline',\n 'bookmarks': 'nav.bookmarks',\n 'dms': 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n TimelineMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=0d348974\"\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=0d348974&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=\"TimelineQuickSettings\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <div v-if=\"loggedIn\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"replyVisibilityAll = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n />{{ $t('settings.reply_visibility_all') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"replyVisibilityFollowing = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n />{{ $t('settings.reply_visibility_following_short') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"replyVisibilitySelf = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n />{{ $t('settings.reply_visibility_self_short') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </div>\n <button\n class=\"button-default dropdown-item\"\n @click=\"muteBotStatuses = !muteBotStatuses\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n />{{ $t('settings.mute_bot_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"hideMedia = !hideMedia\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n />{{ $t('settings.hide_media_previews') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"hideMutedPosts = !hideMutedPosts\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n />{{ $t('settings.hide_all_muted_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"openTab('filtering')\"\n >\n <FAIcon icon=\"font\" />{{ $t('settings.word_filter') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"openTab('general')\"\n >\n <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled\">\n <FAIcon icon=\"filter\" />\n </button>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_quick_settings.js\"></script>\n\n<style lang=\"scss\">\n\n.TimelineQuickSettings {\n\n > button {\n line-height: 100%;\n height: 100%;\n width: var(--__panel-heading-height-inner);\n text-align: center;\n\n svg {\n font-size: 1.2em;\n }\n }\n}\n\n</style>\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 TimelineQuickSettings = {\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default TimelineQuickSettings\n","import { render } from \"./timeline_quick_settings.vue?vue&type=template&id=ad1076ec\"\nimport script from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\nexport * from \"./timeline_quick_settings.js?vue&type=script&lang=js\"\n\nimport \"./timeline_quick_settings.vue?vue&type=style&index=0&id=ad1076ec&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog\n)\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\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 paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n TimelineQuickSettings\n },\n computed: {\n 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 classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n }\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n 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 stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n window.scrollTo({ top: 0 })\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=17475b75\"\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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <conversation\n :collapsable=\"false\"\n is-page=\"true\"\n :status-id=\"statusId\"\n />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t(\"nav.interactions\") }}\n </div>\n </div>\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onModeSwitch\"\n >\n <span\n key=\"mentions\"\n :label=\"$t('nav.mentions')\"\n />\n <span\n key=\"likes+repeats\"\n :label=\"$t('interactions.favs_repeats')\"\n />\n <span\n key=\"follows\"\n :label=\"$t('interactions.follows')\"\n />\n <span\n v-if=\"!allowFollowingMove\"\n key=\"moves\"\n :label=\"$t('interactions.moves')\"\n />\n </tab-switcher>\n <Notifications\n ref=\"notifications\"\n :no-heading=\"true\"\n :minimal-mode=\"true\"\n :filter-mode=\"filterMode\"\n />\n </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict['mentions']\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications,\n TabSwitcher\n }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=109005c8\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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 \"/home/hannah/personal/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 v-slot:item=\"{item}\">\n <ChatListItem\n :key=\"item.id\"\n :compact=\"false\"\n :chat=\"item\"\n />\n </template>\n </List>\n </div>\n <div\n v-else\n class=\"emtpy-chat-list-alert\"\n >\n <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n <div\n class=\"chat-list-item\"\n @click.capture.prevent=\"openChat\"\n >\n <div class=\"chat-list-item-left\">\n <UserAvatar\n :user=\"chat.account\"\n height=\"48px\"\n width=\"48px\"\n />\n </div>\n <div class=\"chat-list-item-center\">\n <div class=\"heading\">\n <span\n v-if=\"chat.account\"\n class=\"name-and-account-name\"\n >\n <ChatTitle\n :user=\"chat.account\"\n />\n </span>\n <span class=\"heading-right\" />\n <div class=\"time-wrapper\">\n <Timeago\n :time=\"chat.updated_at\"\n :auto-update=\"60\"\n />\n </div>\n </div>\n <div class=\"chat-preview\">\n <StatusBody\n class=\"chat-preview-body\"\n :status=\"messageForStatusContent\"\n :single-line=\"true\"\n />\n <div\n v-if=\"chat.unread > 0\"\n class=\"badge badge-notification unread-chat-count\"\n >\n {{ chat.unread }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_list_item.scss';\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\n\nexport default {\n name: 'ChatTitle',\n components: {\n UserAvatar,\n RichContent\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n },\n methods: {\n getUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name)\n }\n }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=113f5355\"\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=113f5355&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 <router-link\n class=\"avatar-container\"\n v-if=\"withAvatar && user\"\n :to=\"getUserProfileLink(user)\"\n >\n <UserAvatar\n class=\"titlebar-avatar\"\n :user=\"user\"\n />\n </router-link>\n <RichContent\n v-if=\"user\"\n class=\"username\"\n :title=\"'@'+(user && user.screen_name_ui)\"\n :html=\"htmlTitle\"\n :emoji=\"user.emoji || []\"\n />\n </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n name: 'ChatListItem',\n props: [\n 'chat'\n ],\n components: {\n UserAvatar,\n AvatarList,\n Timeago,\n ChatTitle,\n StatusBody\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n attachmentInfo () {\n if (this.chat.lastMessage.attachments.length === 0) { return }\n\n const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n if (types.includes('video')) {\n return this.$t('file_type.video')\n } else if (types.includes('audio')) {\n return this.$t('file_type.audio')\n } else if (types.includes('image')) {\n return this.$t('file_type.image')\n } else {\n return this.$t('file_type.file')\n }\n },\n messageForStatusContent () {\n const message = this.chat.lastMessage\n const messageEmojis = message ? message.emojis : []\n const isYou = message && message.account_id === this.currentUser.id\n const content = message ? (this.attachmentInfo || message.content) : ''\n const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n return {\n summary: '',\n emojis: messageEmojis,\n raw_html: messagePreview,\n text: messagePreview,\n attachments: []\n }\n }\n },\n methods: {\n openChat (_e) {\n if (this.chat.id) {\n this.$router.push({\n name: 'chat',\n params: {\n username: this.currentUser.screen_name,\n recipient_id: this.chat.account.id\n }\n })\n }\n }\n }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=0623aed7\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"panel-default panel chat-new\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n </div>\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n placeholder=\"Search people\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"member-list\">\n <div\n v-for=\"user in availableUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <div @click.capture.prevent=\"goToChat(user)\">\n <BasicUserCard :user=\"user\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_new.scss';\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=54e93eee\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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=598ab446\"\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=598ab446&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"chat-view\">\n <div class=\"chat-view-inner\">\n <div\n ref=\"inner\"\n class=\"panel-default panel chat-view-body\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading -sticky chat-view-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title text-center\">\n <ChatTitle\n :user=\"recipient\"\n :with-avatar=\"true\"\n />\n </div>\n </div>\n <div\n class=\"message-list\"\n :style=\"{ height: scrollableContainerHeight }\"\n >\n <template v-if=\"!errorLoadingChat\">\n <ChatMessage\n v-for=\"chatViewItem in chatViewItems\"\n :key=\"chatViewItem.id\"\n :author=\"recipient\"\n :chat-view-item=\"chatViewItem\"\n :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n @hover=\"onMessageHover\"\n />\n </template>\n <div\n v-else\n class=\"chat-loading-error\"\n >\n <div class=\"alert error\">\n {{ $t('chats.error_loading_chat') }}\n </div>\n </div>\n </div>\n <div\n ref=\"footer\"\n class=\"panel-body footer\"\n >\n <div\n class=\"jump-to-bottom-button\"\n :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n @click=\"scrollDown({ behavior: 'smooth' })\"\n >\n <span>\n <FAIcon icon=\"chevron-down\" />\n <div\n v-if=\"newMessageCount\"\n class=\"badge badge-notification unread-chat-count unread-message-count\"\n >\n {{ newMessageCount }}\n </div>\n </span>\n </div>\n <PostStatusForm\n :disable-subject=\"true\"\n :disable-scope-selector=\"true\"\n :disable-notice=\"true\"\n :disable-lock-warning=\"true\"\n :disable-polls=\"true\"\n :disable-sensitivity-checkbox=\"true\"\n :disable-submit=\"errorLoadingChat || !currentChat\"\n :disable-preview=\"true\"\n :optimistic-posting=\"true\"\n :post-handler=\"sendMessage\"\n :submit-on-enter=\"!mobileLayout\"\n :preserve-focus=\"!mobileLayout\"\n :auto-focus=\"!mobileLayout\"\n :placeholder=\"formPlaceholder\"\n :file-limit=\"1\"\n max-height=\"160\"\n emoji-picker-placement=\"top\"\n @resize=\"handleResize\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat.scss';\n</style>\n","<template>\n <div\n v-if=\"isMessage\"\n class=\"chat-message-wrapper\"\n :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n @mouseover=\"onHover(true)\"\n @mouseleave=\"onHover(false)\"\n >\n <div\n class=\"chat-message\"\n :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n >\n <div\n v-if=\"!isCurrentUser\"\n class=\"avatar-wrapper\"\n >\n <router-link\n v-if=\"chatViewItem.isHead\"\n :to=\"userProfileLink\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"author\"\n />\n </router-link>\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=\"isCurrentUser ? '' : '.scrollable-message-list'\"\n :bound-to=\"{ x: 'container' }\"\n :margin=\"popoverMarginStyle\"\n @show=\"menuOpened = true\"\n @close=\"menuOpened = false\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"deleteMessage\"\n >\n <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n </button>\n </div>\n </template>\n <template v-slot: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 v-slot:footer>\n <span\n class=\"created-at\"\n >\n {{ createdAt }}\n </span>\n </template>\n </StatusContent>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"chat-message-date-separator\"\n >\n <ChatMessageDate :date=\"chatViewItem.date\" />\n </div>\n</template>\n\n<script src=\"./chat_message.js\" ></script>\n<style lang=\"scss\">\n@import './chat_message.scss';\n\n</style>\n","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/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 generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n emits: ['hover'],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n userProfileLink () {\n return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n 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=3566ce4a\"\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=3566ce4a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/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 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 { expand = false, delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n const { offsetHeight = undefined } = getScrollPosition()\n const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n if (diff !== 0 || (!this.bottomedOut() && expand)) {\n this.$nextTick(() => {\n window.scrollTo({ top: window.scrollY + 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 if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition()\n window.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition()\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable() && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=9416a190\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div\n v-if=\"user\"\n class=\"user-profile panel panel-default\"\n >\n <UserCard\n :user-id=\"userId\"\n :switcher=\"true\"\n :selected=\"timeline.viewing\"\n :allow-zooming-avatar=\"true\"\n rounded=\"top\"\n />\n <div\n v-if=\"user.fields_html && user.fields_html.length > 0\"\n class=\"user-profile-fields\"\n >\n <dl\n v-for=\"(field, index) in user.fields_html\"\n :key=\"index\"\n class=\"user-profile-field\"\n >\n <dt\n :title=\"user.fields_text[index].name\"\n class=\"user-profile-field-name\"\n >\n <RichContent\n :html=\"field.name\"\n :emoji=\"user.emoji\"\n />\n </dt>\n <dd\n :title=\"user.fields_text[index].value\"\n class=\"user-profile-field-value\"\n >\n <RichContent\n :html=\"field.value\"\n :emoji=\"user.emoji\"\n />\n </dd>\n </dl>\n </div>\n <tab-switcher\n :active-tab=\"tab\"\n :render-only-focused=\"true\"\n :on-switch=\"onTabSwitch\"\n >\n <Timeline\n key=\"statuses\"\n :label=\"$t('user_card.statuses')\"\n :count=\"user.statuses_count\"\n :embedded=\"true\"\n :title=\"$t('user_profile.timeline_title')\"\n :timeline=\"timeline\"\n timeline-name=\"user\"\n :user-id=\"userId\"\n :pinned-status-ids=\"user.pinnedStatusIds\"\n :in-profile=\"true\"\n :footerSlipgate=\"footerRef\"\n />\n <div\n v-if=\"followsTabVisible\"\n key=\"followees\"\n :label=\"$t('user_card.followees')\"\n :disabled=\"!user.friends_count\"\n >\n <FriendList :user-id=\"userId\">\n <template v-slot:item=\"{item}\">\n <FollowCard :user=\"item\" />\n </template>\n </FriendList>\n </div>\n <div\n v-if=\"followersTabVisible\"\n key=\"followers\"\n :label=\"$t('user_card.followers')\"\n :disabled=\"!user.followers_count\"\n >\n <FollowerList :user-id=\"userId\">\n <template v-slot: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 :footerSlipgate=\"footerRef\"\n />\n <Timeline\n v-if=\"isUs\"\n key=\"favorites\"\n :label=\"$t('user_card.favorites')\"\n :disabled=\"!favorites.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.favorites')\"\n timeline-name=\"favorites\"\n :timeline=\"favorites\"\n :in-profile=\"true\"\n :footerSlipgate=\"footerRef\"\n />\n </tab-switcher>\n <div class=\"panel-footer\" :ref=\"setFooterRef\"></div>\n </div>\n <div\n v-else\n class=\"panel user-profile-placeholder\"\n >\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.profile_tab') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <span v-if=\"error\">{{ error }}</span>\n <FAIcon\n v-else\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name, .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n</style>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-card-content-container\">\n <span\n v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n class=\"faint\"\n >\n {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n </span>\n <template v-if=\"!loggedIn\">\n <div\n v-if=\"!relationship.following\"\n class=\"follow-card-follow-button\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n </template>\n <template v-else-if=\"!isMe\">\n <FollowButton\n :relationship=\"relationship\"\n :label-following=\"$t('user_card.follow_unfollow')\"\n class=\"follow-card-follow-button\"\n :user=\"user\"\n />\n </template>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n flex-wrap: wrap;\n line-height: 1.5em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n</style>\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'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=4030f5aa\"\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=4030f5aa&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n unmounted, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n unmounted () {\n window.removeEventListener('scroll', this.scrollLoad)\n unmounted && unmounted(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render () {\n const props = {\n ...this.$props,\n [childPropName]: this.entries\n }\n const children = this.$slots\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey,\n footerRef: null\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load(routeParams.name || routeParams.id)\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n unmounted () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n }\n },\n methods: {\n setFooterRef (el) {\n this.footerRef = el\n },\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n // Check if user data is already loaded in store\n const user = this.$store.getters.findUser(userNameOrId)\n if (user) {\n loadById(user.id)\n } else {\n this.$store.dispatch('fetchUser', userNameOrId)\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation,\n RichContent\n }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=56ed1f7e\"\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=56ed1f7e&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.search') }}\n </div>\n </div>\n <div class=\"search-input-container\">\n <input\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-input\"\n :placeholder=\"$t('nav.search')\"\n @keyup.enter=\"newQuery(searchTerm)\"\n >\n <button\n class=\"btn button-default search-button\"\n type=\"submit\"\n @click=\"newQuery(searchTerm)\"\n >\n <FAIcon icon=\"search\" />\n </button>\n </div>\n <div\n v-if=\"loading\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div v-else-if=\"loaded\">\n <div class=\"search-nav-heading\">\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onResultTabSwitch\"\n :active-tab=\"currenResultTab\"\n >\n <span\n key=\"statuses\"\n :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n />\n <span\n key=\"people\"\n :label=\"$t('search.people') + resultCount('users')\"\n />\n <span\n key=\"hashtags\"\n :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n />\n </tab-switcher>\n </div>\n </div>\n <div class=\"panel-body\">\n <div v-if=\"currenResultTab === 'statuses'\">\n <div\n v-if=\"visibleStatuses.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\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 </div>\n <div v-else-if=\"currenResultTab === 'people'\">\n <div\n v-if=\"users.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item search-result\"\n />\n </div>\n <div v-else-if=\"currenResultTab === 'hashtags'\">\n <div\n v-if=\"hashtags.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <div\n v-for=\"hashtag in hashtags\"\n :key=\"hashtag.url\"\n class=\"status trend search-result\"\n >\n <div class=\"hashtag\">\n <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n #{{ hashtag.name }}\n </router-link>\n <div v-if=\"lastHistoryRecord(hashtag)\">\n <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n <span v-else>\n {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n </div>\n </div>\n <div\n v-if=\"lastHistoryRecord(hashtag)\"\n class=\"count\"\n >\n {{ lastHistoryRecord(hashtag).uses }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-result-footer text-center panel-footer faint\" />\n </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n</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'\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 },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.statuses = []\n this.hashtags = []\n this.$refs.searchInput.blur()\n\n this.$store.dispatch('search', { q: query, resolve: true })\n .then(data => {\n this.loading = false\n this.userIds = map(data.accounts, 'id')\n this.statuses = data.statuses\n this.hashtags = data.hashtags\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=52f57ebe\"\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=52f57ebe&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('registration.registration') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"registration-form\"\n @submit.prevent=\"submit(user)\"\n >\n <div class=\"container\">\n <div class=\"text-fields\">\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.username.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-username\"\n >{{ $t('login.username') }}</label>\n <input\n id=\"sign-up-username\"\n v-model.trim=\"v$.user.username.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"$t('registration.username_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.username.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.username.required\">\n <span>{{ $t('registration.validations.username_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-fullname\"\n >{{ $t('registration.fullname') }}</label>\n <input\n id=\"sign-up-fullname\"\n v-model.trim=\"v$.user.fullname.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :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 >{{ $t('registration.email') }}</label>\n <input\n id=\"email\"\n v-model=\"v$.user.email.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"email\"\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') }} ({{ $t('general.optional') }})</label>\n <textarea\n id=\"bio\"\n v-model=\"user.bio\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"bioPlaceholder\"\n />\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.password.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password\"\n >{{ $t('login.password') }}</label>\n <input\n id=\"sign-up-password\"\n v-model=\"user.password\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div\n v-if=\"v$.user.password.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.password.required\">\n <span>{{ $t('registration.validations.password_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password-confirmation\"\n >{{ $t('registration.password_confirm') }}</label>\n <input\n id=\"sign-up-password-confirmation\"\n v-model=\"user.confirm\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n >\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\">\n <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n </li>\n <li v-if=\"!v$.user.confirm.sameAsPassword\">\n <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.language.$error }\"\n >\n <interface-language-switcher\n for=\"email-language\"\n :prompt-text=\"$t('registration.email_language')\"\n :language=\"v$.user.language.$model\"\n :set-language=\"val => v$.user.language.$model = val\"\n />\n </div>\n\n <div\n v-if=\"accountApprovalRequired\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"reason\"\n >{{ $t('registration.reason') }}</label>\n <textarea\n id=\"reason\"\n v-model=\"user.reason\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"reasonPlaceholder\"\n />\n </div>\n\n <div\n v-if=\"captcha.type != 'none'\"\n id=\"captcha-group\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"captcha-label\"\n >{{ $t('registration.captcha') }}</label>\n\n <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n <img\n :src=\"captcha.url\"\n @click=\"setCaptcha\"\n >\n\n <sub>{{ $t('registration.new_captcha') }}</sub>\n\n <input\n id=\"captcha-answer\"\n v-model=\"captcha.solution\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n >\n </template>\n </div>\n\n <div\n v-if=\"token\"\n class=\"form-group\"\n >\n <label for=\"token\">{{ $t('registration.token') }}</label>\n <input\n id=\"token\"\n v-model=\"token\"\n disabled=\"true\"\n class=\"form-control\"\n type=\"text\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('registration.register') }}\n </button>\n </div>\n </div>\n\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"terms-of-service\"\n v-html=\"termsOfService\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n <div\n v-if=\"serverValidationErrors.length\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n <span\n v-for=\"error in serverValidationErrors\"\n :key=\"error\"\n >{{ error }}</span>\n </div>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: .6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height:16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst registration = {\n setup () { return { v$: useVuelidate() } },\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n reason: '',\n language: ''\n },\n captcha: {}\n }),\n components: {\n InterfaceLanguageSwitcher\n },\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAs: sameAs(this.user.password)\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) },\n language: {}\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n if (this.user.language) {\n this.user.language = localeService.internalToBackendLocale(this.user.language)\n }\n\n this.v$.$touch()\n\n if (!this.v$.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=c19f87d0\"\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=c19f87d0&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('password_reset.password_reset') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"password-reset-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"container\">\n <div v-if=\"!mailerEnabled\">\n <p v-if=\"passwordResetRequested\">\n {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n </p>\n <p v-else>\n {{ $t('password_reset.password_reset_disabled') }}\n </p>\n </div>\n <div v-else-if=\"success || throttled\">\n <p v-if=\"success\">\n {{ $t('password_reset.check_email') }}\n </p>\n <div class=\"form-group text-center\">\n <router-link :to=\"{name: 'root'}\">\n {{ $t('password_reset.return_home') }}\n </router-link>\n </div>\n </div>\n <div v-else>\n <p\n v-if=\"passwordResetRequested\"\n class=\"password-reset-required error\"\n >\n {{ $t('password_reset.password_reset_required') }}\n </p>\n <p>\n {{ $t('password_reset.instruction') }}\n </p>\n <div class=\"form-group\">\n <input\n ref=\"email\"\n v-model=\"user.email\"\n :disabled=\"isPending\"\n :placeholder=\"$t('password_reset.placeholder')\"\n class=\"form-control\"\n type=\"input\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default btn-block\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n </div>\n <p\n v-if=\"error\"\n class=\"alert error notice-dismissible\"\n >\n <span>{{ error }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissError()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n</style>\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","import { render } from \"./password_reset.vue?vue&type=template&id=3a677309\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.friend_requests') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <FollowRequestCard\n v-for=\"request in requests\"\n :key=\"request.id\"\n :user=\"request\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-request-card-content-container\">\n <button\n class=\"btn button-default\"\n @click=\"approveUser\"\n >\n {{ $t('user_card.approve') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"denyUser\"\n >\n {{ $t('user_card.deny') }}\n </button>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n }\n}\n\nexport default FollowRequestCard\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=84be1288\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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_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 \"/home/hannah/personal/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 \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n <div class=\"panel-body\">\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=4f8c3288\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"column-inner\">\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <staff-panel />\n <terms-of-service-panel />\n <MRFTransparencyPanel />\n <features-panel v-if=\"showFeaturesPanel\" />\n </div>\n</template>\n\n<script src=\"./about.js\" ></script>\n\n<style lang=\"scss\">\n</style>\n","<template>\n <div>\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"tos-content\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\" ></script>\n\n<style lang=\"scss\">\n.tos-content {\n margin: 1em\n}\n</style>\n","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=687e38f6\"\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=687e38f6&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"staff-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.staff\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"group in groupedStaffAccounts\"\n :key=\"group.role\"\n class=\"staff-group\"\n >\n <h4>{{ $t('general.role.' + group.role) }}</h4>\n <basic-user-card\n v-for=\"user in group.users\"\n :key=\"user.screen_name\"\n :user=\"user\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./staff_panel.js\" ></script>\n\n<style lang=\"scss\">\n\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts['admin'] },\n { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUser'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=31dce24a\"\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=31dce24a&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"federationPolicy\"\n class=\"mrf-transparency-panel\"\n >\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.mrf.federation\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"mrf-section\">\n <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n <ul>\n <li\n v-for=\"policy in mrfPolicies\"\n :key=\"policy\"\n v-text=\"policy\"\n />\n </ul>\n\n <h2 v-if=\"hasInstanceSpecificPolicies\">\n {{ $t(\"about.mrf.simple.simple_policies\") }}\n </h2>\n\n <div v-if=\"acceptInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in acceptInstances\"\n :key=\"entry.instance + '_accept'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"rejectInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in rejectInstances\"\n :key=\"entry.instance + '_reject'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"quarantineInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in quarantineInstances\"\n :key=\"entry.instance + '_quarantine'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"ftlRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in ftlRemovalInstances\"\n :key=\"entry.instance + '_ftl_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaNsfwInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaNsfwInstances\"\n :key=\"entry.instance + '_media_nsfw'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaRemovalInstances\"\n :key=\"entry.instance + '_media_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <h2 v-if=\"hasKeywordPolicies\">\n {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n </h2>\n\n <div v-if=\"keywordsFtlRemoval.length\">\n <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsFtlRemoval\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReject.length\">\n <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReject\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReplace.length\">\n <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReplace\"\n :key=\"keyword\"\n >\n {{ keyword.pattern }}\n {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n {{ keyword.replacement }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './mrf_transparency_panel.scss';\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n return instances.map(instance => {\n if (info[key] && info[key][instance] && info[key][instance]['reason']) {\n return { instance: instance, reason: info[key][instance]['reason'] }\n }\n return { instance: 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 { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=7f2ca562\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 \"./about.vue?vue&type=template&id=37ac4f64\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('remote_user_resolver.remote_user_resolver') }}\n </div>\n <div class=\"panel-body\">\n <p>\n {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n </p>\n <p v-if=\"error\">\n {{ $t('remote_user_resolver.error') }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=198402c4\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/home/hannah/personal/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n { name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n { name: 'remote-user-profile-acct',\n path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, 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: 'user-profile', path: '/:_(users)?/:name', component: UserProfile }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideBotIndication')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n var meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n getTOS({ store })\n getStickers({ store })\n\n const router = createRouter({\n history: createWebHistory(),\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { left: 0, top: 0 }\n }\n })\n\n const app = createApp(App)\n\n app.use(router)\n app.use(store)\n app.use(i18n)\n\n app.use(vClickOutside)\n app.use(VBodyScrollLock)\n\n app.component('FAIcon', FontAwesomeIcon)\n app.component('FALayers', FontAwesomeLayers)\n\n 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 usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n '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 api: apiModule,\n config: configModule,\n serverSideConfig: serverSideConfigModule,\n shout: shoutModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n chats: chatsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""}
\ No newline at end of file