From 7799c2fcd5d1a361d3b079e63c3b00ab10755c7f Mon Sep 17 00:00:00 2001 From: flarum-bot Date: Thu, 15 Jun 2023 17:09:20 +0000 Subject: [PATCH] Bundled output for commit 11b4a810b7432c59d78dd04468a487faafb3e7b7 Includes transpiled JS/TS, and Typescript declaration files (typings). [skip ci] --- extensions/mentions/js/dist/forum.js | 2 +- extensions/mentions/js/dist/forum.js.map | 2 +- framework/core/js/dist-typings/common/helpers/username.d.ts | 2 +- framework/core/js/dist/admin.js | 2 +- framework/core/js/dist/admin.js.map | 2 +- framework/core/js/dist/forum.js | 2 +- framework/core/js/dist/forum.js.map | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/extensions/mentions/js/dist/forum.js b/extensions/mentions/js/dist/forum.js index 683135b28..d697518c4 100644 --- a/extensions/mentions/js/dist/forum.js +++ b/extensions/mentions/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e),t.d(e,{extend:()=>Kt,filterGroupMentions:()=>ne,filterPostMentions:()=>te,filterTagMentions:()=>se,filterUserMentions:()=>Vt,postFilterGroupMentions:()=>oe,postFilterPostMentions:()=>ee,postFilterTagMentions:()=>re,postFilterUserMentions:()=>Zt});var n={};t.r(n),t.d(n,{default:()=>W,insertMention:()=>G});var o={};t.r(o),t.d(o,{filterGroupMentions:()=>ne,filterPostMentions:()=>te,filterTagMentions:()=>se,filterUserMentions:()=>Vt,postFilterGroupMentions:()=>oe,postFilterPostMentions:()=>ee,postFilterTagMentions:()=>re,postFilterUserMentions:()=>Zt});const s=flarum.core.compat["common/extend"],r=flarum.core.compat["forum/app"];var i=t.n(r);const a=flarum.core.compat["forum/components/NotificationGrid"];var c=t.n(a);const l=flarum.core.compat["common/utils/string"],u=flarum.core.compat["common/helpers/textContrastClass"];var d=t.n(u);const f=flarum.core.compat["forum/components/Post"];var p=t.n(f);const h=flarum.core.compat["forum/components/CommentPost"];var g=t.n(h);const b=flarum.core.compat["forum/components/PostPreview"];var v=t.n(b);const y=flarum.core.compat["common/components/LoadingIndicator"];var w=t.n(y);const x=flarum.core.compat["common/components/Link"];var M=t.n(x);const P=flarum.core.compat["common/helpers/punctuateSeries"];var C=t.n(P);const T=flarum.core.compat["common/helpers/username"];var A=t.n(T);const B=flarum.core.compat["common/helpers/icon"];var _=t.n(B);const N=flarum.core.compat["common/components/Button"];var S=t.n(N);const k=flarum.core.compat["common/components/Modal"];var F=t.n(k);const I=flarum.core.compat["common/states/PaginatedListState"];var L=t.n(I);class R extends(L()){constructor(t,e){void 0===e&&(e=1),t.page={...t.page||{},limit:10},super(t,e,10)}get type(){return"posts"}}class j extends(F()){oninit(t){super.oninit(t),this.state=new R({filter:{mentionedPost:this.attrs.post.id()},sort:"number"}),this.state.refresh()}className(){return"MentionedByModal"}title(){return i().translator.trans("flarum-mentions.forum.mentioned_by.title")}content(){return m("[",null,m("div",{className:"Modal-body"},this.state.isInitialLoading()?m(w(),null):m("[",null,m("ul",{className:"MentionedByModal-list Dropdown-menu Dropdown-menu--inline Post-mentionedBy-preview"},this.state.getPages().map((t=>t.items.map((t=>m("li",{"data-number":t.number()},m(v(),{post:t,onclick:()=>i().modal.close()}))))))))),this.state.hasNext()&&m("div",{className:"Modal-footer"},m("div",{className:"Form Form--centered"},m("div",{className:"Form-group"},m(S(),{className:"Button Button--block",onclick:()=>this.state.loadNext(),loading:this.state.isLoadingNext()},i().translator.trans("flarum-mentions.forum.mentioned_by.load_more_button"))))))}}const D=flarum.core.compat["forum/utils/DiscussionControls"];var U=t.n(D);const H=flarum.core.compat["forum/components/EditPostComposer"];var E=t.n(H);function G(t,e,n){return new Promise((o=>{const s=i().mentionFormats.mentionable("post").replacement(t)+" ";e.fields.content()||(e.body.attrs.originalContent=s);const r=e.editor.getSelectionRange()[0],a=e.fields.content().slice(0,r),c=0==a.length?0:3-a.match(/(\n{0,2})$/)[0].length;return e.editor.insertAtCursor(Array(c).join("\n")+(n?"> "+s+n.trim().replace(/\n/g,"\n> ")+"\n\n":s),!1),o(e)}))}function W(t,e){return i().composer.bodyMatches(E())&&i().composer.body.attrs.post.discussion()===t.discussion()?G(t,i().composer,e):U().replyAction.call(t.discussion()).then((n=>G(t,n,e)))}const O=flarum.core.compat["common/Fragment"];var q=t.n(O);class J extends(q()){constructor(t){super(),this.post=t}view(){return m("button",{className:"Button PostQuoteButton",onclick:()=>{W(this.post,this.content)}},_()("fas fa-quote-left",{className:"Button-icon"}),i().translator.trans("flarum-mentions.forum.post.quote_button"))}show(t,e){const n=this.$().show(),o=n.offsetParent().offset();n.css("left",t-o.left).css("top",e-o.top),this.hideHandler=this.hide.bind(this),$(document).on("mouseup",this.hideHandler)}showStart(t,e){const n=this.$();this.show(t,$(window).scrollTop()+e-n.outerHeight()-5)}showEnd(t,e){const n=this.$();this.show(t-n.outerWidth(),$(window).scrollTop()+e+5)}hide(){this.$().hide(),$(document).off("mouseup",this.hideHandler)}}function z(t){const e=window.getSelection();if(!e.isCollapsed){const n=e.getRangeAt(0),o=n.commonAncestorContainer;if(t[0]===o||$.contains(t[0],o)){const t=$("
").append(n.cloneContents());return t.find("img.emoji").replaceWith((function(){return this.alt})),t.find("img").replaceWith((function(){return"![](".concat(this.src,")")})),t.find("a").replaceWith((function(){return"[".concat(this.innerText,"](").concat(this.href,")")})),t.text()}}return""}const Q=flarum.core.compat["common/components/TextEditor"];var X=t.n(Q);const Y=flarum.core.compat["common/components/TextEditorButton"];var K=t.n(Y);const V=flarum.core.compat["common/utils/KeyboardNavigatable"];var Z=t.n(V);function tt(t){return tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tt(t)}function et(t,e,n){return(e=function(t){var e=function(t,e){if("object"!==tt(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==tt(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===tt(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class nt extends(q()){constructor(){super(...arguments),et(this,"items",[]),et(this,"active",!1),et(this,"index",0),et(this,"keyWasJustPressed",!1)}view(){return m("ul",{className:"Dropdown-menu MentionsDropdown"},this.items.map((t=>m("li",null,t))))}show(t,e){this.$().show().css({left:t+"px",top:e+"px"}),this.active=!0}hide(){this.$().hide(),this.active=!1}navigate(t){this.keyWasJustPressed=!0,this.setIndex(this.index+t,!0),clearTimeout(this.keyWasJustPressedTimeout),this.keyWasJustPressedTimeout=setTimeout((()=>this.keyWasJustPressed=!1),500)}complete(){this.$("li").eq(this.index).find("button").click()}setIndex(t,e){if(this.keyWasJustPressed&&!e)return;const n=this.$(),o=n.find("li");let s=t;s<0?s=o.length-1:s>=o.length&&(s=0),this.index=s;const r=o.removeClass("active").eq(s).addClass("active");if(e){const t=n.scrollTop(),e=n.offset().top,o=e+n.outerHeight(),s=r.offset().top,i=s+r.outerHeight();let a;so&&(a=t-o+i+parseInt(n.css("padding-bottom"),10)),void 0!==a&&n.stop(!0).animate({scrollTop:a},100)}}}class ot{constructor(){et(this,"instances",void 0),et(this,"mentionables",void 0),et(this,"extendable",void 0)}makeMentionables(){var t;return null!=(t=this.instances)?t:this.instances=this.mentionables.map((t=>new t(this)))}getMentionable(t){var e;return null!=(e=this.makeMentionables().find((e=>e.type()===t)))?e:null}extend(t){if(!this.extendable)throw new Error("This mention format does not allow extending.");this.mentionables.push(t)}}const st=flarum.core.compat["common/helpers/avatar"];var rt=t.n(st);const it=flarum.core.compat["common/helpers/highlight"];var at=t.n(it);class ct{constructor(t){et(this,"format",void 0),this.format=t}}const lt=flarum.core.compat["common/utils/extractText"];var mt=t.n(lt);const ut=()=>mt()(i().translator.trans("core.lib.username.deleted_text"));function dt(t,e){return void 0===e&&(e=!0),t?((e?t.displayName():t.username())||ut()).replace(/"#[a-z]{0,3}[0-9]+/,"_"):ut().replace(/"#[a-z]{0,3}[0-9]+/,"_")}class ft extends ct{type(){return"user"}initialResults(){return Array.from(i().store.all("users"))}replacement(t){if(i().forum.attribute("allowUsernameMentionFormat")){const e=dt(t,!1);return this.format.format(e)}const e=dt(t);return this.format.format(e,"",t.id())}suggestion(t,e){const n=A()(t);var o;return e&&(n.children=[at()(null!=(o=n.text)?o:"",e)],delete n.text),m("[",null,rt()(t),n)}matches(t,e){return!!e&&[t.username(),t.displayName()].some((t=>t.toLowerCase().substr(0,e.length)===e))}maxStoreMatchedResults(){return null}async search(t){return await i().store.find("users",{filter:{q:t},page:{limit:5}})}enabled(){return!0}}const pt=flarum.core.compat["forum/components/ReplyComposer"];var ht=t.n(pt);class gt extends ct{type(){return"post"}initialResults(){if(!i().composer.bodyMatches(ht())&&!i().composer.bodyMatches(E()))return[];const t=i().composer.body.attrs,e=t.post;return(e&&e.discussion()||t.discussion).posts().filter((t=>t&&"comment"===t.contentType()&&(!e||t.number()e.createdAt().getTime()-t.createdAt().getTime()))}replacement(t){const e=dt(t.user());return this.format.format(e,"p",t.id())}suggestion(t,e){var n;const o=t.user()||null,s=A()(o);var r;return e&&(s.children=[at()(null!=(r=s.text)?r:"",e)],delete s.text),m("[",null,rt()(o),s,[i().translator.trans("flarum-mentions.forum.composer.reply_to_post_text",{number:t.number()})," — ",(0,l.truncate)(null!=(n=t.contentPlain())?n:"",200)])}matches(t,e){const n=t.user(),o=i().mentionFormats.mentionable("user");return!e||n&&o.matches(n,e)}maxStoreMatchedResults(){return 5}search(t){return Promise.resolve([])}enabled(){return!0}}const bt=flarum.core.compat["common/models/Group"];var vt=t.n(bt);const yt=flarum.core.compat["common/components/Badge"];var wt=t.n(yt);class xt extends ct{type(){return"group"}initialResults(){return Array.from(i().store.all("groups").filter((t=>t.id()!==vt().GUEST_ID&&t.id()!==vt().MEMBER_ID)))}replacement(t){return this.format.format(t.namePlural(),"g",t.id())}suggestion(t,e){let n=t.namePlural();return e&&(n=at()(n,e)),m("[",null,m(wt(),{className:"Avatar Badge Badge--group--".concat(t.id()," Badge-icon"),color:t.color(),type:"group",icon:t.icon()}),m("span",{className:"username"},n))}matches(t,e){return!!e&&[t.namePlural().toLowerCase(),t.nameSingular().toLowerCase()].some((t=>t.toLowerCase().substr(0,e.length)===e))}maxStoreMatchedResults(){return null}search(t){return Promise.resolve([])}enabled(){var t,e,n;return null!=(t=null==(e=i().session)||null==(n=e.user)?void 0:n.canMentionGroups())&&t}}class Mt extends ot{constructor(){super(...arguments),et(this,"mentionables",[ft,gt,xt]),et(this,"extendable",!0)}trigger(){return"@"}queryFromTyped(t){const e=t.match(/^["“]?((?:(?!"#).)+)$/);return e?e[1]:null}format(t,e,n){return void 0===e&&(e=""),void 0===n&&(n=null),{simple:"@".concat(t),safe:'@"'.concat(t,'"#').concat(e).concat(n)}[n?"safe":"simple"]}}class Pt extends ct{type(){return"tag"}initialResults(){return Array.from(i().store.all("tags"))}replacement(t){return this.format.format(t.slug())}matches(t,e){return!!e&&[t.name().toLowerCase()].some((t=>t.toLowerCase().substr(0,e.length)===e))}maxStoreMatchedResults(){return null}async search(t){return await i().store.find("tags",{filter:{q:t},page:{limit:5}})}suggestion(t,e){let n=t.name();return e&&(n=at()(n,e)),m("[",null,m(wt(),{className:"Avatar",icon:t.icon(),color:t.color(),type:"tag"}),m("span",{className:"username"},n))}enabled(){return"flarum-tags"in flarum.extensions}}class Ct extends ot{constructor(){super(...arguments),et(this,"mentionables",[Pt]),et(this,"extendable",!1)}trigger(){return"#"}queryFromTyped(t){const e=t.match(/^[-_\p{L}\p{N}\p{M}]+$/giu);return e?e[0]:null}format(t){return"#".concat(t)}}class Tt{constructor(){et(this,"formats",[new Mt,new Ct])}get(t){var e;return null!=(e=this.formats.find((e=>e.trigger()===t)))?e:null}mentionable(t){for(const e of this.formats){const n=e.getMentionable(t);if(n)return n}return null}extend(t){this.formats.push(new t)}}const At=flarum.core.compat["common/Component"];var $t=t.n(At);const Bt=flarum.core.compat["common/utils/classList"];var _t=t.n(Bt);class Nt extends($t()){view(t){const{mentionable:e,...n}=this.attrs,o=_t()("MentionsDropdownItem","PostPreview","MentionsDropdown-".concat(e.type()));return m("button",Object.assign({className:o},n),m("span",{className:"PostPreview-content"},t.children))}}const St=flarum.core.compat["common/utils/throttleDebounce"];class kt{constructor(t){et(this,"mentionables",void 0),et(this,"results",{}),et(this,"typed",null),et(this,"searched",[]),et(this,"dropdownItemAttrs",{}),et(this,"search",(0,St.throttle)(250,(async()=>{if(!this.typed||this.typed.length<=1)return;const t=this.typed.toLowerCase();if(!this.searched.includes(t)){for(const e of this.mentionables)for(const n of await e.search(t))this.results[e.type()].has(n.id())||this.results[e.type()].set(n.id(),n);return this.searched.push(t),Promise.resolve()}}))),this.dropdownItemAttrs=t}init(t){this.typed=null,this.mentionables=t;for(const t of this.mentionables)this.results[t.type()]=new Map(t.initialResults().map((t=>[t.id(),t])))}matches(t,e){var n;return t.matches(e,(null==(n=this.typed)?void 0:n.toLowerCase())||"")}makeSuggestion(t,e){const n=t.suggestion(e,this.typed),o=t.replacement(e),{onclick:s,...r}=this.dropdownItemAttrs;return m(Nt,Object.assign({mentionable:t,onclick:()=>s(o)},r),n)}buildSuggestions(){const t=[];for(const e of this.mentionables){if(!e.enabled())continue;let n=Array.from(this.results[e.type()].values()).filter((t=>this.matches(e,t)));const o=e.maxStoreMatchedResults();o&&(n=n.splice(0,o));for(const o of n){const n=this.makeSuggestion(e,o);t.push(n)}}return t}}const Ft=flarum.core.compat["forum/components/Notification"];var It=t.n(Ft);class Lt extends(It()){icon(){return"fas fa-reply"}href(){const t=this.attrs.notification,e=t.subject(),n=t.content();return i().route.discussion(e.discussion(),n&&n.replyNumber)}content(){const t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.post_mentioned_text",{user:t,count:1})}excerpt(){return(0,l.truncate)(this.attrs.notification.subject().contentPlain()||"",200)}}class Rt extends(It()){icon(){return"fas fa-at"}href(){const t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())}content(){const t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.user_mentioned_text",{user:t})}excerpt(){return(0,l.truncate)(this.attrs.notification.subject().contentPlain(),200)}}class jt extends(It()){icon(){return"fas fa-at"}href(){const t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())}content(){const t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.group_mentioned_text",{user:t})}excerpt(){return(0,l.truncate)(this.attrs.notification.subject().contentPlain(),200)}}const Dt=flarum.core.compat["forum/components/UserPage"];var Ut=t.n(Dt);const Ht=flarum.core.compat["common/components/LinkButton"];var Et=t.n(Ht);const Gt=flarum.core.compat["common/models/User"];var Wt=t.n(Gt);flarum.core.compat["common/Model"];const Ot=flarum.core.compat["common/extenders"];var qt=t.n(Ot);const Jt=flarum.core.compat["common/models/Post"];var zt=t.n(Jt);const Qt=flarum.core.compat["forum/components/PostsUserPage"];var Xt=t.n(Qt);class Yt extends(Xt()){loadResults(t){return i().store.find("posts",{filter:{type:"comment",mentioned:this.user.id()},page:{offset:t,limit:this.loadLimit},sort:"-createdAt"})}}const Kt=[(new(qt().Routes)).add("user.mentions","/u/:username/mentions",Yt),new(qt().Model)(zt()).hasMany("mentionedBy").attribute("mentionedByCount"),new(qt().Model)(Wt()).attribute("canMentionGroups")];function Vt(t){let e;if(i().forum.attribute("allowUsernameMentionFormat")&&t.hasAttribute("username")?e=i().store.getBy("users","username",t.getAttribute("username")):t.hasAttribute("id")&&(e=i().store.getById("users",t.getAttribute("id"))),e)return t.setAttribute("id",e.id()),t.setAttribute("slug",e.slug()),t.setAttribute("displayname",mt()(A()(e))),!0;t.invalidate()}function Zt(t){t.setAttribute("deleted",!1)}function te(t){const e=i().store.getById("posts",t.getAttribute("id"));if(e)return t.setAttribute("discussionid",e.discussion().id()),t.setAttribute("number",e.number()),t.setAttribute("displayname",mt()(A()(e.user()))),!0}function ee(t){t.setAttribute("deleted",!1)}function ne(t){var e,n;if(null!=(e=i().session)&&null!=(n=e.user)&&n.canMentionGroups()){const e=i().store.getById("groups",t.getAttribute("id"));if(e)return t.setAttribute("groupname",mt()(e.namePlural())),!0}t.invalidate()}function oe(t){var e,n;if(null!=(e=i().session)&&null!=(n=e.user)&&n.canMentionGroups()){const e=i().store.getById("groups",t.getAttribute("id"));t.setAttribute("color",e.color()),t.setAttribute("icon",e.icon()),t.setAttribute("deleted",!1)}}function se(t){if("flarum-tags"in flarum.extensions){const e=i().store.getBy("tags","slug",t.getAttribute("slug"));if(e)return t.setAttribute("id",e.id()),t.setAttribute("tagname",e.name()),!0}t.invalidate()}function re(t){if("flarum-tags"in flarum.extensions){const e=i().store.getBy("tags","slug",t.getAttribute("slug"));t.setAttribute("icon",e.icon()),t.setAttribute("color",e.color()),t.setAttribute("deleted",!1)}}const ie={"mentions/components/MentionsUserPage":Yt,"mentions/components/PostMentionedNotification":Lt,"mentions/components/UserMentionedNotification":Rt,"mentions/components/GroupMentionedNotification":jt,"mentions/fragments/AutocompleteDropdown":nt,"mentions/fragments/PostQuoteButton":J,"mentions/utils/getCleanDisplayName":dt,"mentions/utils/getMentionText":function(t,e,n){if(void 0!==t&&void 0===e)return i().mentionables.get("user").replacement(t);if(void 0!==t&&void 0!==e)return i().mentionables.get("post").replacement(i().store.getById("posts",e));if(void 0!==n)return i().mentionables.get("group").replacement(n);throw"No parameters were passed"},"mentions/utils/reply":n,"mentions/utils/selectedText":z,"mentions/utils/textFormatter":o,"mentions/mentionables/MentionableModel":ct,"mentions/mentionables/formats/MentionFormat":ot,"mentions/extenders/Mentionables":class{constructor(){et(this,"formats",[]),et(this,"mentionables",{})}format(t){return this.formats.push(t),this}mentionable(t,e){return this.mentionables[t]||(this.mentionables[t]=[]),this.mentionables[t].push(e),this}extend(t){for(const e of this.formats)t.mentionFormats.extend(e);for(const e in this.mentionables){const n=t.mentionFormats.get(e);if(n)for(const t of this.mentionables[e])n.extend(t)}}}},ae=flarum.core;i().initializers.add("flarum-mentions",(function(){!function(){function t(){const t=this.attrs.post.contentHtml();if(t===this.oldPostContentHtml||this.isEditing())return;this.oldPostContentHtml=t;const e=this.attrs.post,n=this.$();this.$().on("click",".UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted), .TagMention:not(.TagMention--deleted)",(function(t){m.route.set(this.getAttribute("href")),t.preventDefault()})),this.$(".PostMention:not(.PostMention--deleted)").each((function(){const t=$(this),o=t.data("id");let s;const r=$('
'),e=new nt;(0,s.extend)(X().prototype,"oncreate",(function(){const n=this.$(".TextEditor-editor").wrap('
');this.navigator=new(Z()),this.navigator.when((()=>e.active)).onUp((()=>e.navigate(-1))).onDown((()=>e.navigate(1))).onSelect(e.complete.bind(e)).onCancel(e.hide.bind(e)).bindTo(n),n.after(t)})),(0,s.extend)(X().prototype,"buildEditorParams",(function(n){let o,s,r,a=new kt({onmouseenter:function(){e.setIndex($(this).parent().index())},onclick:t=>{this.attrs.composer.editor.replaceBeforeCursor(s-1,t+" "),e.hide()}});n.inputListeners.push((()=>{const n=this.attrs.composer.editor.getSelectionRange(),c=n[0];if(n[1]-c>0)return;const l=this.attrs.composer.editor.getLastNChars(30);s=0;let u=null;for(let t=l.length-1;t>=0;t--){const e=l.substr(t,1);if(u=i().mentionFormats.get(e),u&&(0===t||/\s/.test(l.substr(t-1,1)))){o=t+1,s=c-l.length+t+1,a.init(u.makeMentionables());break}}if(e.hide(),e.active=!1,s){var d;const n=l.substring(o).toLowerCase();if(r=u.queryFromTyped(n),!r)return;a.typed=r;const i=()=>{const n=a.buildSuggestions();if(n.length){e.items=n,m.render(t[0],e.render()),e.show();const o=this.attrs.composer.editor.getCaretCoordinates(s),r=e.$().outerWidth(),i=e.$().outerHeight(),a=e.$().offsetParent();let c=o.left,l=o.top+15;l+i>a.height()&&(l=o.top-i-15),c+r>a.width()&&(c=a.width()-r),l=Math.max(-(a.offset().top-$(document).scrollTop()),l),c=Math.max(-a.offset().left,c),e.show(c,l)}else e.active=!1,e.hide()};e.active=!0,i(),e.setIndex(0),e.$().scrollTop(0),null==(d=a.search())||d.then(i)}}))})),(0,s.extend)(X().prototype,"toolbarItems",(function(t){t.add("mention",m(K(),{onclick:()=>this.attrs.composer.editor.insertAtCursor(" @"),icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.composer.mention_tooltip")))}))}(),i().notificationComponents.postMentioned=Lt,i().notificationComponents.userMentioned=Rt,i().notificationComponents.groupMentioned=jt,(0,s.extend)(c().prototype,"notificationTypes",(function(t){t.add("postMentioned",{name:"postMentioned",icon:"fas fa-reply",label:i().translator.trans("flarum-mentions.forum.settings.notify_post_mentioned_label")}),t.add("userMentioned",{name:"userMentioned",icon:"fas fa-at",label:i().translator.trans("flarum-mentions.forum.settings.notify_user_mentioned_label")}),t.add("groupMentioned",{name:"groupMentioned",icon:"fas fa-at",label:i().translator.trans("flarum-mentions.forum.settings.notify_group_mentioned_label")})})),(0,s.extend)(Ut().prototype,"navItems",(function(t){const e=this.user;t.add("mentions",m(Et(),{href:i().route("user.mentions",{username:e.slug()}),name:"mentions",icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.user.mentions_link")),80)})),l.getPlainContent.removeSelectors.push("a.PostMention"),(0,s.extend)(p().prototype,"oncreate",(function(){this.$(".GroupMention--colored, .TagMention--colored").each((function(){this.classList.add(d()(getComputedStyle(this).getPropertyValue("--color")))}))}))})),Object.assign(ae.compat,ie)})(),module.exports=e})(); +(()=>{var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e),t.d(e,{extend:()=>Kt,filterGroupMentions:()=>ne,filterPostMentions:()=>te,filterTagMentions:()=>se,filterUserMentions:()=>Vt,postFilterGroupMentions:()=>oe,postFilterPostMentions:()=>ee,postFilterTagMentions:()=>re,postFilterUserMentions:()=>Zt});var n={};t.r(n),t.d(n,{default:()=>W,insertMention:()=>G});var o={};t.r(o),t.d(o,{filterGroupMentions:()=>ne,filterPostMentions:()=>te,filterTagMentions:()=>se,filterUserMentions:()=>Vt,postFilterGroupMentions:()=>oe,postFilterPostMentions:()=>ee,postFilterTagMentions:()=>re,postFilterUserMentions:()=>Zt});const s=flarum.core.compat["common/extend"],r=flarum.core.compat["forum/app"];var i=t.n(r);const a=flarum.core.compat["forum/components/NotificationGrid"];var c=t.n(a);const l=flarum.core.compat["common/utils/string"],u=flarum.core.compat["common/helpers/textContrastClass"];var d=t.n(u);const f=flarum.core.compat["forum/components/Post"];var p=t.n(f);const h=flarum.core.compat["forum/components/CommentPost"];var g=t.n(h);const b=flarum.core.compat["forum/components/PostPreview"];var y=t.n(b);const v=flarum.core.compat["common/components/LoadingIndicator"];var w=t.n(v);const x=flarum.core.compat["common/components/Link"];var M=t.n(x);const P=flarum.core.compat["common/helpers/punctuateSeries"];var C=t.n(P);const T=flarum.core.compat["common/helpers/username"];var A=t.n(T);const B=flarum.core.compat["common/helpers/icon"];var _=t.n(B);const N=flarum.core.compat["common/components/Button"];var S=t.n(N);const k=flarum.core.compat["common/components/Modal"];var F=t.n(k);const I=flarum.core.compat["common/states/PaginatedListState"];var L=t.n(I);class R extends(L()){constructor(t,e){void 0===e&&(e=1),t.page={...t.page||{},limit:10},super(t,e,10)}get type(){return"posts"}}class j extends(F()){oninit(t){super.oninit(t),this.state=new R({filter:{mentionedPost:this.attrs.post.id()},sort:"number"}),this.state.refresh()}className(){return"MentionedByModal"}title(){return i().translator.trans("flarum-mentions.forum.mentioned_by.title")}content(){return m("[",null,m("div",{className:"Modal-body"},this.state.isInitialLoading()?m(w(),null):m("[",null,m("ul",{className:"MentionedByModal-list Dropdown-menu Dropdown-menu--inline Post-mentionedBy-preview"},this.state.getPages().map((t=>t.items.map((t=>m("li",{"data-number":t.number()},m(y(),{post:t,onclick:()=>i().modal.close()}))))))))),this.state.hasNext()&&m("div",{className:"Modal-footer"},m("div",{className:"Form Form--centered"},m("div",{className:"Form-group"},m(S(),{className:"Button Button--block",onclick:()=>this.state.loadNext(),loading:this.state.isLoadingNext()},i().translator.trans("flarum-mentions.forum.mentioned_by.load_more_button"))))))}}const D=flarum.core.compat["forum/utils/DiscussionControls"];var U=t.n(D);const H=flarum.core.compat["forum/components/EditPostComposer"];var E=t.n(H);function G(t,e,n){return new Promise((o=>{const s=i().mentionFormats.mentionable("post").replacement(t)+" ";e.fields.content()||(e.body.attrs.originalContent=s);const r=e.editor.getSelectionRange()[0],a=e.fields.content().slice(0,r),c=0==a.length?0:3-a.match(/(\n{0,2})$/)[0].length;return e.editor.insertAtCursor(Array(c).join("\n")+(n?"> "+s+n.trim().replace(/\n/g,"\n> ")+"\n\n":s),!1),o(e)}))}function W(t,e){return i().composer.bodyMatches(E())&&i().composer.body.attrs.post.discussion()===t.discussion()?G(t,i().composer,e):U().replyAction.call(t.discussion()).then((n=>G(t,n,e)))}const O=flarum.core.compat["common/Fragment"];var q=t.n(O);class J extends(q()){constructor(t){super(),this.post=t}view(){return m("button",{className:"Button PostQuoteButton",onclick:()=>{W(this.post,this.content)}},_()("fas fa-quote-left",{className:"Button-icon"}),i().translator.trans("flarum-mentions.forum.post.quote_button"))}show(t,e){const n=this.$().show(),o=n.offsetParent().offset();n.css("left",t-o.left).css("top",e-o.top),this.hideHandler=this.hide.bind(this),$(document).on("mouseup",this.hideHandler)}showStart(t,e){const n=this.$();this.show(t,$(window).scrollTop()+e-n.outerHeight()-5)}showEnd(t,e){const n=this.$();this.show(t-n.outerWidth(),$(window).scrollTop()+e+5)}hide(){this.$().hide(),$(document).off("mouseup",this.hideHandler)}}function z(t){const e=window.getSelection();if(!e.isCollapsed){const n=e.getRangeAt(0),o=n.commonAncestorContainer;if(t[0]===o||$.contains(t[0],o)){const t=$("
").append(n.cloneContents());return t.find("img.emoji").replaceWith((function(){return this.alt})),t.find("img").replaceWith((function(){return"![](".concat(this.src,")")})),t.find("a").replaceWith((function(){return"[".concat(this.innerText,"](").concat(this.href,")")})),t.text()}}return""}const Q=flarum.core.compat["common/components/TextEditor"];var X=t.n(Q);const Y=flarum.core.compat["common/components/TextEditorButton"];var K=t.n(Y);const V=flarum.core.compat["common/utils/KeyboardNavigatable"];var Z=t.n(V);function tt(t){return tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tt(t)}function et(t,e,n){return(e=function(t){var e=function(t,e){if("object"!==tt(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e);if("object"!==tt(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"===tt(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}class nt extends(q()){constructor(){super(...arguments),et(this,"items",[]),et(this,"active",!1),et(this,"index",0),et(this,"keyWasJustPressed",!1)}view(){return m("ul",{className:"Dropdown-menu MentionsDropdown"},this.items.map((t=>m("li",null,t))))}show(t,e){this.$().show().css({left:t+"px",top:e+"px"}),this.active=!0}hide(){this.$().hide(),this.active=!1}navigate(t){this.keyWasJustPressed=!0,this.setIndex(this.index+t,!0),clearTimeout(this.keyWasJustPressedTimeout),this.keyWasJustPressedTimeout=setTimeout((()=>this.keyWasJustPressed=!1),500)}complete(){this.$("li").eq(this.index).find("button").click()}setIndex(t,e){if(this.keyWasJustPressed&&!e)return;const n=this.$(),o=n.find("li");let s=t;s<0?s=o.length-1:s>=o.length&&(s=0),this.index=s;const r=o.removeClass("active").eq(s).addClass("active");if(e){const t=n.scrollTop(),e=n.offset().top,o=e+n.outerHeight(),s=r.offset().top,i=s+r.outerHeight();let a;so&&(a=t-o+i+parseInt(n.css("padding-bottom"),10)),void 0!==a&&n.stop(!0).animate({scrollTop:a},100)}}}class ot{constructor(){et(this,"instances",void 0),et(this,"mentionables",void 0),et(this,"extendable",void 0)}makeMentionables(){var t;return null!=(t=this.instances)?t:this.instances=this.mentionables.map((t=>new t(this)))}getMentionable(t){var e;return null!=(e=this.makeMentionables().find((e=>e.type()===t)))?e:null}extend(t){if(!this.extendable)throw new Error("This mention format does not allow extending.");this.mentionables.push(t)}}const st=flarum.core.compat["common/helpers/avatar"];var rt=t.n(st);const it=flarum.core.compat["common/helpers/highlight"];var at=t.n(it);class ct{constructor(t){et(this,"format",void 0),this.format=t}}const mt=flarum.core.compat["common/utils/extractText"];var lt=t.n(mt);const ut=()=>lt()(i().translator.trans("core.lib.username.deleted_text"));function dt(t,e){return void 0===e&&(e=!0),t?((e?t.displayName():t.username())||ut()).replace(/"#[a-z]{0,3}[0-9]+/,"_"):ut().replace(/"#[a-z]{0,3}[0-9]+/,"_")}class ft extends ct{type(){return"user"}initialResults(){return Array.from(i().store.all("users"))}replacement(t){if(i().forum.attribute("allowUsernameMentionFormat")){const e=dt(t,!1);return this.format.format(e)}const e=dt(t);return this.format.format(e,"",t.id())}suggestion(t,e){const n=A()(t,(t=>at()(t,e)));return m("[",null,rt()(t),n)}matches(t,e){return!!e&&[t.username(),t.displayName()].some((t=>t.toLowerCase().substr(0,e.length)===e))}maxStoreMatchedResults(){return null}async search(t){return await i().store.find("users",{filter:{q:t},page:{limit:5}})}enabled(){return!0}}const pt=flarum.core.compat["forum/components/ReplyComposer"];var ht=t.n(pt);class gt extends ct{type(){return"post"}initialResults(){if(!i().composer.bodyMatches(ht())&&!i().composer.bodyMatches(E()))return[];const t=i().composer.body.attrs,e=t.post;return(e&&e.discussion()||t.discussion).posts().filter((t=>t&&"comment"===t.contentType()&&(!e||t.number()e.createdAt().getTime()-t.createdAt().getTime()))}replacement(t){const e=dt(t.user());return this.format.format(e,"p",t.id())}suggestion(t,e){var n;const o=t.user()||null,s=A()(o,(t=>at()(t,e)));return m("[",null,rt()(o),s,[i().translator.trans("flarum-mentions.forum.composer.reply_to_post_text",{number:t.number()})," — ",(0,l.truncate)(null!=(n=t.contentPlain())?n:"",200)])}matches(t,e){const n=t.user(),o=i().mentionFormats.mentionable("user");return!e||n&&o.matches(n,e)}maxStoreMatchedResults(){return 5}search(t){return Promise.resolve([])}enabled(){return!0}}const bt=flarum.core.compat["common/models/Group"];var yt=t.n(bt);const vt=flarum.core.compat["common/components/Badge"];var wt=t.n(vt);class xt extends ct{type(){return"group"}initialResults(){return Array.from(i().store.all("groups").filter((t=>t.id()!==yt().GUEST_ID&&t.id()!==yt().MEMBER_ID)))}replacement(t){return this.format.format(t.namePlural(),"g",t.id())}suggestion(t,e){let n=t.namePlural();return e&&(n=at()(n,e)),m("[",null,m(wt(),{className:"Avatar Badge Badge--group--".concat(t.id()," Badge-icon"),color:t.color(),type:"group",icon:t.icon()}),m("span",{className:"username"},n))}matches(t,e){return!!e&&[t.namePlural().toLowerCase(),t.nameSingular().toLowerCase()].some((t=>t.toLowerCase().substr(0,e.length)===e))}maxStoreMatchedResults(){return null}search(t){return Promise.resolve([])}enabled(){var t,e,n;return null!=(t=null==(e=i().session)||null==(n=e.user)?void 0:n.canMentionGroups())&&t}}class Mt extends ot{constructor(){super(...arguments),et(this,"mentionables",[ft,gt,xt]),et(this,"extendable",!0)}trigger(){return"@"}queryFromTyped(t){const e=t.match(/^["“]?((?:(?!"#).)+)$/);return e?e[1]:null}format(t,e,n){return void 0===e&&(e=""),void 0===n&&(n=null),{simple:"@".concat(t),safe:'@"'.concat(t,'"#').concat(e).concat(n)}[n?"safe":"simple"]}}class Pt extends ct{type(){return"tag"}initialResults(){return Array.from(i().store.all("tags"))}replacement(t){return this.format.format(t.slug())}matches(t,e){return!!e&&[t.name().toLowerCase()].some((t=>t.toLowerCase().substr(0,e.length)===e))}maxStoreMatchedResults(){return null}async search(t){return await i().store.find("tags",{filter:{q:t},page:{limit:5}})}suggestion(t,e){let n=t.name();return e&&(n=at()(n,e)),m("[",null,m(wt(),{className:"Avatar",icon:t.icon(),color:t.color(),type:"tag"}),m("span",{className:"username"},n))}enabled(){return"flarum-tags"in flarum.extensions}}class Ct extends ot{constructor(){super(...arguments),et(this,"mentionables",[Pt]),et(this,"extendable",!1)}trigger(){return"#"}queryFromTyped(t){const e=t.match(/^[-_\p{L}\p{N}\p{M}]+$/giu);return e?e[0]:null}format(t){return"#".concat(t)}}class Tt{constructor(){et(this,"formats",[new Mt,new Ct])}get(t){var e;return null!=(e=this.formats.find((e=>e.trigger()===t)))?e:null}mentionable(t){for(const e of this.formats){const n=e.getMentionable(t);if(n)return n}return null}extend(t){this.formats.push(new t)}}const At=flarum.core.compat["common/Component"];var $t=t.n(At);const Bt=flarum.core.compat["common/utils/classList"];var _t=t.n(Bt);class Nt extends($t()){view(t){const{mentionable:e,...n}=this.attrs,o=_t()("MentionsDropdownItem","PostPreview","MentionsDropdown-".concat(e.type()));return m("button",Object.assign({className:o},n),m("span",{className:"PostPreview-content"},t.children))}}const St=flarum.core.compat["common/utils/throttleDebounce"];class kt{constructor(t){et(this,"mentionables",void 0),et(this,"results",{}),et(this,"typed",null),et(this,"searched",[]),et(this,"dropdownItemAttrs",{}),et(this,"search",(0,St.throttle)(250,(async()=>{if(!this.typed||this.typed.length<=1)return;const t=this.typed.toLowerCase();if(!this.searched.includes(t)){for(const e of this.mentionables)for(const n of await e.search(t))this.results[e.type()].has(n.id())||this.results[e.type()].set(n.id(),n);return this.searched.push(t),Promise.resolve()}}))),this.dropdownItemAttrs=t}init(t){this.typed=null,this.mentionables=t;for(const t of this.mentionables)this.results[t.type()]=new Map(t.initialResults().map((t=>[t.id(),t])))}matches(t,e){var n;return t.matches(e,(null==(n=this.typed)?void 0:n.toLowerCase())||"")}makeSuggestion(t,e){const n=t.suggestion(e,this.typed),o=t.replacement(e),{onclick:s,...r}=this.dropdownItemAttrs;return m(Nt,Object.assign({mentionable:t,onclick:()=>s(o)},r),n)}buildSuggestions(){const t=[];for(const e of this.mentionables){if(!e.enabled())continue;let n=Array.from(this.results[e.type()].values()).filter((t=>this.matches(e,t)));const o=e.maxStoreMatchedResults();o&&(n=n.splice(0,o));for(const o of n){const n=this.makeSuggestion(e,o);t.push(n)}}return t}}const Ft=flarum.core.compat["forum/components/Notification"];var It=t.n(Ft);class Lt extends(It()){icon(){return"fas fa-reply"}href(){const t=this.attrs.notification,e=t.subject(),n=t.content();return i().route.discussion(e.discussion(),n&&n.replyNumber)}content(){const t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.post_mentioned_text",{user:t,count:1})}excerpt(){return(0,l.truncate)(this.attrs.notification.subject().contentPlain()||"",200)}}class Rt extends(It()){icon(){return"fas fa-at"}href(){const t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())}content(){const t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.user_mentioned_text",{user:t})}excerpt(){return(0,l.truncate)(this.attrs.notification.subject().contentPlain(),200)}}class jt extends(It()){icon(){return"fas fa-at"}href(){const t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())}content(){const t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.group_mentioned_text",{user:t})}excerpt(){return(0,l.truncate)(this.attrs.notification.subject().contentPlain(),200)}}const Dt=flarum.core.compat["forum/components/UserPage"];var Ut=t.n(Dt);const Ht=flarum.core.compat["common/components/LinkButton"];var Et=t.n(Ht);const Gt=flarum.core.compat["common/models/User"];var Wt=t.n(Gt);flarum.core.compat["common/Model"];const Ot=flarum.core.compat["common/extenders"];var qt=t.n(Ot);const Jt=flarum.core.compat["common/models/Post"];var zt=t.n(Jt);const Qt=flarum.core.compat["forum/components/PostsUserPage"];var Xt=t.n(Qt);class Yt extends(Xt()){loadResults(t){return i().store.find("posts",{filter:{type:"comment",mentioned:this.user.id()},page:{offset:t,limit:this.loadLimit},sort:"-createdAt"})}}const Kt=[(new(qt().Routes)).add("user.mentions","/u/:username/mentions",Yt),new(qt().Model)(zt()).hasMany("mentionedBy").attribute("mentionedByCount"),new(qt().Model)(Wt()).attribute("canMentionGroups")];function Vt(t){let e;if(i().forum.attribute("allowUsernameMentionFormat")&&t.hasAttribute("username")?e=i().store.getBy("users","username",t.getAttribute("username")):t.hasAttribute("id")&&(e=i().store.getById("users",t.getAttribute("id"))),e)return t.setAttribute("id",e.id()),t.setAttribute("slug",e.slug()),t.setAttribute("displayname",lt()(A()(e))),!0;t.invalidate()}function Zt(t){t.setAttribute("deleted",!1)}function te(t){const e=i().store.getById("posts",t.getAttribute("id"));if(e)return t.setAttribute("discussionid",e.discussion().id()),t.setAttribute("number",e.number()),t.setAttribute("displayname",lt()(A()(e.user()))),!0}function ee(t){t.setAttribute("deleted",!1)}function ne(t){var e,n;if(null!=(e=i().session)&&null!=(n=e.user)&&n.canMentionGroups()){const e=i().store.getById("groups",t.getAttribute("id"));if(e)return t.setAttribute("groupname",lt()(e.namePlural())),!0}t.invalidate()}function oe(t){var e,n;if(null!=(e=i().session)&&null!=(n=e.user)&&n.canMentionGroups()){const e=i().store.getById("groups",t.getAttribute("id"));t.setAttribute("color",e.color()),t.setAttribute("icon",e.icon()),t.setAttribute("deleted",!1)}}function se(t){if("flarum-tags"in flarum.extensions){const e=i().store.getBy("tags","slug",t.getAttribute("slug"));if(e)return t.setAttribute("id",e.id()),t.setAttribute("tagname",e.name()),!0}t.invalidate()}function re(t){if("flarum-tags"in flarum.extensions){const e=i().store.getBy("tags","slug",t.getAttribute("slug"));t.setAttribute("icon",e.icon()),t.setAttribute("color",e.color()),t.setAttribute("deleted",!1)}}const ie={"mentions/components/MentionsUserPage":Yt,"mentions/components/PostMentionedNotification":Lt,"mentions/components/UserMentionedNotification":Rt,"mentions/components/GroupMentionedNotification":jt,"mentions/fragments/AutocompleteDropdown":nt,"mentions/fragments/PostQuoteButton":J,"mentions/utils/getCleanDisplayName":dt,"mentions/utils/getMentionText":function(t,e,n){if(void 0!==t&&void 0===e)return i().mentionables.get("user").replacement(t);if(void 0!==t&&void 0!==e)return i().mentionables.get("post").replacement(i().store.getById("posts",e));if(void 0!==n)return i().mentionables.get("group").replacement(n);throw"No parameters were passed"},"mentions/utils/reply":n,"mentions/utils/selectedText":z,"mentions/utils/textFormatter":o,"mentions/mentionables/MentionableModel":ct,"mentions/mentionables/formats/MentionFormat":ot,"mentions/extenders/Mentionables":class{constructor(){et(this,"formats",[]),et(this,"mentionables",{})}format(t){return this.formats.push(t),this}mentionable(t,e){return this.mentionables[t]||(this.mentionables[t]=[]),this.mentionables[t].push(e),this}extend(t){for(const e of this.formats)t.mentionFormats.extend(e);for(const e in this.mentionables){const n=t.mentionFormats.get(e);if(n)for(const t of this.mentionables[e])n.extend(t)}}}},ae=flarum.core;i().initializers.add("flarum-mentions",(function(){!function(){function t(){const t=this.attrs.post.contentHtml();if(t===this.oldPostContentHtml||this.isEditing())return;this.oldPostContentHtml=t;const e=this.attrs.post,n=this.$();this.$().on("click",".UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted), .TagMention:not(.TagMention--deleted)",(function(t){m.route.set(this.getAttribute("href")),t.preventDefault()})),this.$(".PostMention:not(.PostMention--deleted)").each((function(){const t=$(this),o=t.data("id");let s;const r=$('
'),e=new nt;(0,s.extend)(X().prototype,"oncreate",(function(){const n=this.$(".TextEditor-editor").wrap('
');this.navigator=new(Z()),this.navigator.when((()=>e.active)).onUp((()=>e.navigate(-1))).onDown((()=>e.navigate(1))).onSelect(e.complete.bind(e)).onCancel(e.hide.bind(e)).bindTo(n),n.after(t)})),(0,s.extend)(X().prototype,"buildEditorParams",(function(n){let o,s,r,a=new kt({onmouseenter:function(){e.setIndex($(this).parent().index())},onclick:t=>{this.attrs.composer.editor.replaceBeforeCursor(s-1,t+" "),e.hide()}});n.inputListeners.push((()=>{const n=this.attrs.composer.editor.getSelectionRange(),c=n[0];if(n[1]-c>0)return;const l=this.attrs.composer.editor.getLastNChars(30);s=0;let u=null;for(let t=l.length-1;t>=0;t--){const e=l.substr(t,1);if(u=i().mentionFormats.get(e),u&&(0===t||/\s/.test(l.substr(t-1,1)))){o=t+1,s=c-l.length+t+1,a.init(u.makeMentionables());break}}if(e.hide(),e.active=!1,s){var d;const n=l.substring(o).toLowerCase();if(r=u.queryFromTyped(n),!r)return;a.typed=r;const i=()=>{const n=a.buildSuggestions();if(n.length){e.items=n,m.render(t[0],e.render()),e.show();const o=this.attrs.composer.editor.getCaretCoordinates(s),r=e.$().outerWidth(),i=e.$().outerHeight(),a=e.$().offsetParent();let c=o.left,l=o.top+15;l+i>a.height()&&(l=o.top-i-15),c+r>a.width()&&(c=a.width()-r),l=Math.max(-(a.offset().top-$(document).scrollTop()),l),c=Math.max(-a.offset().left,c),e.show(c,l)}else e.active=!1,e.hide()};e.active=!0,i(),e.setIndex(0),e.$().scrollTop(0),null==(d=a.search())||d.then(i)}}))})),(0,s.extend)(X().prototype,"toolbarItems",(function(t){t.add("mention",m(K(),{onclick:()=>this.attrs.composer.editor.insertAtCursor(" @"),icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.composer.mention_tooltip")))}))}(),i().notificationComponents.postMentioned=Lt,i().notificationComponents.userMentioned=Rt,i().notificationComponents.groupMentioned=jt,(0,s.extend)(c().prototype,"notificationTypes",(function(t){t.add("postMentioned",{name:"postMentioned",icon:"fas fa-reply",label:i().translator.trans("flarum-mentions.forum.settings.notify_post_mentioned_label")}),t.add("userMentioned",{name:"userMentioned",icon:"fas fa-at",label:i().translator.trans("flarum-mentions.forum.settings.notify_user_mentioned_label")}),t.add("groupMentioned",{name:"groupMentioned",icon:"fas fa-at",label:i().translator.trans("flarum-mentions.forum.settings.notify_group_mentioned_label")})})),(0,s.extend)(Ut().prototype,"navItems",(function(t){const e=this.user;t.add("mentions",m(Et(),{href:i().route("user.mentions",{username:e.slug()}),name:"mentions",icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.user.mentions_link")),80)})),l.getPlainContent.removeSelectors.push("a.PostMention"),(0,s.extend)(p().prototype,"oncreate",(function(){this.$(".GroupMention--colored, .TagMention--colored").each((function(){this.classList.add(d()(getComputedStyle(this).getPropertyValue("--color")))}))}))})),Object.assign(ae.compat,ie)})(),module.exports=e})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/mentions/js/dist/forum.js.map b/extensions/mentions/js/dist/forum.js.map index 8246c71b1..305e82d97 100644 --- a/extensions/mentions/js/dist/forum.js.map +++ b/extensions/mentions/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/mentions/webpack/bootstrap","webpack://@flarum/mentions/webpack/runtime/compat get default export","webpack://@flarum/mentions/webpack/runtime/define property getters","webpack://@flarum/mentions/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/mentions/webpack/runtime/make namespace object","webpack://@flarum/mentions/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/textContrastClass']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/PostPreview']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/states/PaginatedListState']\"","webpack://@flarum/mentions/./src/forum/state/MentionedByModalState.ts","webpack://@flarum/mentions/./src/forum/components/MentionedByModal.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/EditPostComposer']\"","webpack://@flarum/mentions/./src/forum/utils/reply.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Fragment']\"","webpack://@flarum/mentions/./src/forum/fragments/PostQuoteButton.js","webpack://@flarum/mentions/./src/forum/utils/selectedText.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/TextEditor']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/TextEditorButton']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/mentions/./src/forum/fragments/AutocompleteDropdown.js","webpack://@flarum/mentions/./src/forum/mentionables/formats/MentionFormat.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/mentions/./src/forum/mentionables/MentionableModel.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/mentions/./src/forum/utils/getCleanDisplayName.js","webpack://@flarum/mentions/./src/forum/mentionables/UserMention.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/ReplyComposer']\"","webpack://@flarum/mentions/./src/forum/mentionables/PostMention.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Group']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/mentions/./src/forum/mentionables/GroupMention.tsx","webpack://@flarum/mentions/./src/forum/mentionables/formats/AtMentionFormat.ts","webpack://@flarum/mentions/./src/forum/mentionables/TagMention.tsx","webpack://@flarum/mentions/./src/forum/mentionables/formats/HashMentionFormat.ts","webpack://@flarum/mentions/./src/forum/mentionables/formats/MentionFormats.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/mentions/./src/forum/components/MentionsDropdownItem.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/throttleDebounce']\"","webpack://@flarum/mentions/./src/forum/mentionables/MentionableModels.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/mentions/./src/forum/components/PostMentionedNotification.js","webpack://@flarum/mentions/./src/forum/components/UserMentionedNotification.js","webpack://@flarum/mentions/./src/forum/components/GroupMentionedNotification.js","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/User']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/mentions/./src/forum/components/MentionsUserPage.js","webpack://@flarum/mentions/./src/forum/extend.ts","webpack://@flarum/mentions/./src/forum/utils/textFormatter.js","webpack://@flarum/mentions/./src/forum/compat.js","webpack://@flarum/mentions/./src/forum/utils/getMentionText.js","webpack://@flarum/mentions/./src/forum/extenders/Mentionables.ts","webpack://@flarum/mentions/external assign \"flarum.core\"","webpack://@flarum/mentions/./src/forum/index.js","webpack://@flarum/mentions/./src/forum/addPostMentionPreviews.js","webpack://@flarum/mentions/./src/forum/addMentionedByList.js","webpack://@flarum/mentions/./src/forum/addPostReplyAction.js","webpack://@flarum/mentions/./src/forum/addPostQuoteButton.js","webpack://@flarum/mentions/./src/forum/addComposerAutocomplete.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/textContrastClass'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostPreview'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/states/PaginatedListState'];","import PaginatedListState, { PaginatedListParams } from 'flarum/common/states/PaginatedListState';\nimport Post from 'flarum/common/models/Post';\n\nexport interface MentionedByModalListParams extends PaginatedListParams {\n filter: {\n mentionedPost: string;\n };\n sort?: string;\n page?: {\n offset?: number;\n limit: number;\n };\n}\n\nexport default class MentionedByModalState

extends PaginatedListState {\n constructor(params: P, page: number = 1) {\n const limit = 10;\n\n params.page = { ...(params.page || {}), limit };\n\n super(params, page, limit);\n }\n\n get type(): string {\n return 'posts';\n }\n}\n","import app from 'flarum/forum/app';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\nimport type Post from 'flarum/common/models/Post';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport MentionedByModalState from '../state/MentionedByModalState';\n\nexport interface IMentionedByModalAttrs extends IInternalModalAttrs {\n post: Post;\n}\n\nexport default class MentionedByModal extends Modal<\n CustomAttrs,\n MentionedByModalState\n> {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.state = new MentionedByModalState({\n filter: {\n mentionedPost: this.attrs.post.id()!,\n },\n sort: 'number',\n });\n\n this.state.refresh();\n }\n\n className(): string {\n return 'MentionedByModal';\n }\n\n title(): Mithril.Children {\n return app.translator.trans('flarum-mentions.forum.mentioned_by.title');\n }\n\n content(): Mithril.Children {\n return (\n <>\n

\n {this.state.isInitialLoading() ? (\n \n ) : (\n <>\n
    \n {this.state.getPages().map((page) =>\n page.items.map((reply) => (\n
  • \n app.modal.close()} />\n
  • \n ))\n )}\n
\n \n )}\n
\n {this.state.hasNext() && (\n
\n
\n
\n \n
\n
\n
\n )}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EditPostComposer'];","import app from 'flarum/forum/app';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\n\nexport function insertMention(post, composer, quote) {\n return new Promise((resolve) => {\n const mention = app.mentionFormats.mentionable('post').replacement(post) + ' ';\n\n // If the composer is empty, then assume we're starting a new reply.\n // In which case we don't want the user to have to confirm if they\n // close the composer straight away.\n if (!composer.fields.content()) {\n composer.body.attrs.originalContent = mention;\n }\n\n const cursorPosition = composer.editor.getSelectionRange()[0];\n const preceding = composer.fields.content().slice(0, cursorPosition);\n const precedingNewlines = preceding.length == 0 ? 0 : 3 - preceding.match(/(\\n{0,2})$/)[0].length;\n\n composer.editor.insertAtCursor(\n Array(precedingNewlines).join('\\n') + // Insert up to two newlines, depending on preceding whitespace\n (quote ? '> ' + mention + quote.trim().replace(/\\n/g, '\\n> ') + '\\n\\n' : mention),\n false\n );\n return resolve(composer);\n });\n}\n\nexport default function reply(post, quote) {\n if (app.composer.bodyMatches(EditPostComposer) && app.composer.body.attrs.post.discussion() === post.discussion()) {\n // If we're already editing a post in the discussion of post we're quoting,\n // insert the mention directly.\n return insertMention(post, app.composer, quote);\n } else {\n // The default \"Reply\" action behavior will only open a new composer if\n // necessary, but it will always be a ReplyComposer, hence the exceptional\n // case above.\n return DiscussionControls.replyAction.call(post.discussion()).then((composer) => insertMention(post, composer, quote));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Fragment'];","import app from 'flarum/forum/app';\nimport Fragment from 'flarum/common/Fragment';\nimport icon from 'flarum/common/helpers/icon';\n\nimport reply from '../utils/reply';\n\nexport default class PostQuoteButton extends Fragment {\n constructor(post) {\n super();\n\n this.post = post;\n }\n\n view() {\n return (\n {\n reply(this.post, this.content);\n }}\n >\n {icon('fas fa-quote-left', { className: 'Button-icon' })}\n {app.translator.trans('flarum-mentions.forum.post.quote_button')}\n \n );\n }\n\n show(left, top) {\n const $this = this.$().show();\n const parentOffset = $this.offsetParent().offset();\n\n $this.css('left', left - parentOffset.left).css('top', top - parentOffset.top);\n\n this.hideHandler = this.hide.bind(this);\n $(document).on('mouseup', this.hideHandler);\n }\n\n showStart(left, top) {\n const $this = this.$();\n\n this.show(left, $(window).scrollTop() + top - $this.outerHeight() - 5);\n }\n\n showEnd(right, bottom) {\n const $this = this.$();\n\n this.show(right - $this.outerWidth(), $(window).scrollTop() + bottom + 5);\n }\n\n hide() {\n this.$().hide();\n $(document).off('mouseup', this.hideHandler);\n }\n}\n","/**\n * Finds the selected text in the provided composer body.\n */\nexport default function selectedText(body) {\n const selection = window.getSelection();\n\n if (!selection.isCollapsed) {\n const range = selection.getRangeAt(0);\n const parent = range.commonAncestorContainer;\n\n if (body[0] === parent || $.contains(body[0], parent)) {\n const clone = $('
').append(range.cloneContents());\n\n // Replace emoji images with their shortcode (found in alt attribute)\n clone.find('img.emoji').replaceWith(function () {\n return this.alt;\n });\n\n // Replace all other images with a Markdown image\n clone.find('img').replaceWith(function () {\n return `![](${this.src})`;\n });\n\n // Replace all links with a Markdown link\n clone.find('a').replaceWith(function () {\n return `[${this.innerText}](${this.href})`;\n });\n\n return clone.text();\n }\n }\n return '';\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditorButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import Fragment from 'flarum/common/Fragment';\n\nexport default class AutocompleteDropdown extends Fragment {\n items = [];\n active = false;\n index = 0;\n keyWasJustPressed = false;\n\n view() {\n return (\n
    \n {this.items.map((item) => (\n
  • {item}
  • \n ))}\n
\n );\n }\n\n show(left, top) {\n this.$()\n .show()\n .css({\n left: left + 'px',\n top: top + 'px',\n });\n this.active = true;\n }\n\n hide() {\n this.$().hide();\n this.active = false;\n }\n\n navigate(delta) {\n this.keyWasJustPressed = true;\n this.setIndex(this.index + delta, true);\n clearTimeout(this.keyWasJustPressedTimeout);\n this.keyWasJustPressedTimeout = setTimeout(() => (this.keyWasJustPressed = false), 500);\n }\n\n complete() {\n this.$('li').eq(this.index).find('button').click();\n }\n\n setIndex(index, scrollToItem) {\n if (this.keyWasJustPressed && !scrollToItem) return;\n\n const $dropdown = this.$();\n const $items = $dropdown.find('li');\n let rangedIndex = index;\n\n if (rangedIndex < 0) {\n rangedIndex = $items.length - 1;\n } else if (rangedIndex >= $items.length) {\n rangedIndex = 0;\n }\n\n this.index = rangedIndex;\n\n const $item = $items.removeClass('active').eq(rangedIndex).addClass('active');\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop();\n const dropdownTop = $dropdown.offset().top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight();\n const itemTop = $item.offset().top;\n const itemBottom = itemTop + $item.outerHeight();\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\n","import type MentionableModel from '../MentionableModel';\nimport type Model from 'flarum/common/Model';\n\nexport default abstract class MentionFormat {\n protected instances?: MentionableModel[];\n\n public makeMentionables(): MentionableModel[] {\n return this.instances ?? (this.instances = this.mentionables.map((Mentionable) => new Mentionable(this)));\n }\n\n public getMentionable(type: string): MentionableModel | null {\n return this.makeMentionables().find((mentionable) => mentionable.type() === type) ?? null;\n }\n\n public extend(mentionable: new (...args: any[]) => MentionableModel): void {\n if (!this.extendable) throw new Error('This mention format does not allow extending.');\n\n this.mentionables.push(mentionable);\n }\n\n abstract mentionables: (new (...args: any[]) => MentionableModel)[];\n\n protected abstract extendable: boolean;\n\n abstract trigger(): string;\n\n /**\n * Picks the term to search in the API from the typed text.\n * @example:\n * * Full text = `Hello @\"John D`\n * * Typed text = `\"John D`\n * * Query = `John D`\n */\n abstract queryFromTyped(typed: string): string | null;\n\n abstract format(...args: any): string;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","import type Mithril from 'mithril';\nimport type Model from 'flarum/common/Model';\nimport type MentionFormat from './formats/MentionFormat';\n\nexport default abstract class MentionableModel {\n public format: Format;\n\n public constructor(format: Format) {\n this.format = format;\n }\n\n abstract type(): string;\n abstract initialResults(): M[];\n abstract search(typed: string): Promise;\n abstract replacement(model: M): string;\n abstract suggestion(model: M, typed: string): Mithril.Children;\n abstract matches(model: M, typed: string): boolean;\n abstract maxStoreMatchedResults(): number | null;\n abstract enabled(): boolean;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","import app from 'flarum/forum/app';\nimport extractText from 'flarum/common/utils/extractText';\n\n/**\n * Whether to use the old mentions format.\n *\n * `'@username'` or `'@\"Display name\"'`\n */\nexport const shouldUseOldFormat = () => app.forum.attribute('allowUsernameMentionFormat') || false;\n\nconst getDeletedUserText = () => extractText(app.translator.trans('core.lib.username.deleted_text'));\n\n/**\n * Fetches a user's username or display name.\n *\n * Chooses based on the format option set in the admin settings page.\n *\n * @param user An instance of the User model to fetch the username for\n * @param useDisplayName If `true`, uses `user.displayName()`, otherwise, uses `user.username()`\n */\nexport default function getCleanDisplayName(user, useDisplayName = true) {\n if (!user) return getDeletedUserText().replace(/\"#[a-z]{0,3}[0-9]+/, '_');\n\n const text = (useDisplayName ? user.displayName() : user.username()) || getDeletedUserText();\n\n return text.replace(/\"#[a-z]{0,3}[0-9]+/, '_');\n}\n","import app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport type User from 'flarum/common/models/User';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport avatar from 'flarum/common/helpers/avatar';\nimport highlight from 'flarum/common/helpers/highlight';\nimport MentionableModel from './MentionableModel';\nimport getCleanDisplayName, { shouldUseOldFormat } from '../utils/getCleanDisplayName';\nimport AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class UserMention extends MentionableModel {\n type(): string {\n return 'user';\n }\n\n initialResults(): User[] {\n return Array.from(app.store.all('users'));\n }\n\n /**\n * Automatically determines which mention syntax to be used based on the option in the\n * admin dashboard. Also performs display name clean-up automatically.\n *\n * @\"Display name\"#UserID or `@username`\n *\n * @example New display name syntax\n * // '@\"user\"#1'\n * forUser(User) // User is ID 1, display name is 'User'\n *\n * @example Using old syntax\n * // '@username'\n * forUser(user) // User's username is 'username'\n */\n public replacement(user: User): string {\n if (shouldUseOldFormat()) {\n const cleanText = getCleanDisplayName(user, false);\n return this.format.format(cleanText);\n }\n\n const cleanText = getCleanDisplayName(user);\n return this.format.format(cleanText, '', user.id());\n }\n\n suggestion(model: User, typed: string): Mithril.Children {\n const username = usernameHelper(model);\n\n if (typed) {\n username.children = [highlight((username.text ?? '') as string, typed)];\n delete username.text;\n }\n\n return (\n <>\n {avatar(model)}\n {username}\n \n );\n }\n\n matches(model: User, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.username(), model.displayName()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n async search(typed: string): Promise {\n return await app.store.find('users', { filter: { q: typed }, page: { limit: 5 } });\n }\n\n enabled(): boolean {\n return true;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ReplyComposer'];","import app from 'flarum/forum/app';\nimport MentionableModel from './MentionableModel';\nimport type Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport avatar from 'flarum/common/helpers/avatar';\nimport highlight from 'flarum/common/helpers/highlight';\nimport { truncate } from 'flarum/common/utils/string';\nimport ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport getCleanDisplayName from '../utils/getCleanDisplayName';\nimport type AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class PostMention extends MentionableModel {\n type(): string {\n return 'post';\n }\n\n /**\n * If the user is replying to a discussion, or if they are editing a\n * post, then we can suggest other posts in the discussion to mention.\n * We will add the 5 most recent comments in the discussion which\n * match any username characters that have been typed.\n */\n initialResults(): Post[] {\n if (!app.composer.bodyMatches(ReplyComposer) && !app.composer.bodyMatches(EditPostComposer)) {\n return [];\n }\n\n // @ts-ignore\n const composerAttrs = app.composer.body.attrs;\n const composerPost = composerAttrs.post;\n const discussion = (composerPost && composerPost.discussion()) || composerAttrs.discussion;\n\n return (\n discussion\n .posts()\n // Filter to only comment posts, and replies before this message\n .filter((post: Post) => post && post.contentType() === 'comment' && (!composerPost || post.number() < composerPost.number()))\n // Sort by new to old\n .sort((a: Post, b: Post) => b.createdAt().getTime() - a.createdAt().getTime())\n );\n }\n\n /**\n * Generates the syntax for mentioning of a post. Also cleans up the display name.\n *\n * @example Post mention\n * // '@\"User\"#p13'\n * // @\"Display name\"#pPostID\n * forPostMention(user, 13) // User display name is 'User', post ID is 13\n */\n public replacement(post: Post): string {\n const user = post.user();\n const cleanText = getCleanDisplayName(user);\n return this.format.format(cleanText, 'p', post.id());\n }\n\n suggestion(model: Post, typed: string): Mithril.Children {\n const user = model.user() || null;\n const username = usernameHelper(user);\n\n if (typed) {\n username.children = [highlight((username.text ?? '') as string, typed)];\n delete username.text;\n }\n\n return (\n <>\n {avatar(user)}\n {username}\n {[\n app.translator.trans('flarum-mentions.forum.composer.reply_to_post_text', { number: model.number() }),\n ' — ',\n truncate(model.contentPlain() ?? '', 200),\n ]}\n \n );\n }\n\n matches(model: Post, typed: string): boolean {\n const user = model.user();\n const userMentionable = app.mentionFormats.mentionable('user')!;\n\n return !typed || (user && userMentionable.matches(user, typed));\n }\n\n maxStoreMatchedResults(): number {\n return 5;\n }\n\n /**\n * Post mention suggestions are only offered from current discussion posts.\n */\n search(typed: string): Promise {\n return Promise.resolve([]);\n }\n\n enabled(): boolean {\n return true;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import app from 'flarum/forum/app';\nimport Group from 'flarum/common/models/Group';\nimport MentionableModel from './MentionableModel';\nimport type Mithril from 'mithril';\nimport Badge from 'flarum/common/components/Badge';\nimport highlight from 'flarum/common/helpers/highlight';\nimport type AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class GroupMention extends MentionableModel {\n type(): string {\n return 'group';\n }\n\n initialResults(): Group[] {\n return Array.from(\n app.store.all('groups').filter((g: Group) => {\n return g.id() !== Group.GUEST_ID && g.id() !== Group.MEMBER_ID;\n })\n );\n }\n\n /**\n * Generates the mention syntax for a group mention.\n *\n * @\"Name Plural\"#gGroupID\n *\n * @example Group mention\n * // '@\"Mods\"#g4'\n * forGroup(group) // Group display name is 'Mods', group ID is 4\n */\n public replacement(group: Group): string {\n return this.format.format(group.namePlural(), 'g', group.id());\n }\n\n suggestion(model: Group, typed: string): Mithril.Children {\n let groupName: Mithril.Children = model.namePlural();\n\n if (typed) {\n groupName = highlight(groupName, typed);\n }\n\n return (\n <>\n \n {groupName}\n \n );\n }\n\n matches(model: Group, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.namePlural().toLowerCase(), model.nameSingular().toLowerCase()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n /**\n * All groups are already loaded, so we don't need to search for them.\n */\n search(typed: string): Promise {\n return Promise.resolve([]);\n }\n\n enabled(): boolean {\n return app.session?.user?.canMentionGroups() ?? false;\n }\n}\n","import MentionFormat from './MentionFormat';\nimport type MentionableModel from '../MentionableModel';\nimport UserMention from '../UserMention';\nimport PostMention from '../PostMention';\nimport GroupMention from '../GroupMention';\n\nexport default class AtMentionFormat extends MentionFormat {\n public mentionables: (new (...args: any[]) => MentionableModel)[] = [UserMention, PostMention, GroupMention];\n protected extendable: boolean = true;\n\n public trigger(): string {\n return '@';\n }\n\n public queryFromTyped(typed: string): string | null {\n const matchTyped = typed.match(/^[\"“]?((?:(?!\"#).)+)$/);\n\n return matchTyped ? matchTyped[1] : null;\n }\n\n public format(name: string, char: string | null = '', id: string | null = null): string {\n return {\n simple: `@${name}`,\n safe: `@\"${name}\"#${char}${id}`,\n }[id ? 'safe' : 'simple'];\n }\n}\n","import app from 'flarum/forum/app';\nimport Badge from 'flarum/common/components/Badge';\nimport highlight from 'flarum/common/helpers/highlight';\nimport type Tag from 'flarum/tags/common/models/Tag';\nimport type Mithril from 'mithril';\nimport MentionableModel from './MentionableModel';\nimport type HashMentionFormat from './formats/HashMentionFormat';\n\nexport default class TagMention extends MentionableModel {\n type(): string {\n return 'tag';\n }\n\n initialResults(): Tag[] {\n return Array.from(app.store.all('tags'));\n }\n\n /**\n * Generates the mention syntax for a tag mention.\n *\n * ~tagSlug\n *\n * @example Tag mention\n * // ~general\n * forTag(tag) // Tag display name is 'Tag', tag ID is 5\n */\n public replacement(tag: Tag): string {\n return this.format.format(tag.slug());\n }\n\n matches(model: Tag, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.name().toLowerCase()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n async search(typed: string): Promise {\n return await app.store.find('tags', { filter: { q: typed }, page: { limit: 5 } });\n }\n\n suggestion(model: Tag, typed: string): Mithril.Children {\n let tagName: Mithril.Children = model.name();\n\n if (typed) {\n tagName = highlight(tagName, typed);\n }\n\n return (\n <>\n \n {tagName}\n \n );\n }\n\n enabled(): boolean {\n return 'flarum-tags' in flarum.extensions;\n }\n}\n","import MentionFormat from './MentionFormat';\nimport MentionableModel from '../MentionableModel';\nimport TagMention from '../TagMention';\n\nexport default class HashMentionFormat extends MentionFormat {\n public mentionables: (new (...args: any[]) => MentionableModel)[] = [TagMention];\n protected extendable: boolean = false;\n\n public trigger(): string {\n return '#';\n }\n\n public queryFromTyped(typed: string): string | null {\n const matchTyped = typed.match(/^[-_\\p{L}\\p{N}\\p{M}]+$/giu);\n\n return matchTyped ? matchTyped[0] : null;\n }\n\n public format(slug: string): string {\n return `#${slug}`;\n }\n}\n","import AtMentionFormat from './AtMentionFormat';\nimport HashMentionFormat from './HashMentionFormat';\nimport type MentionFormat from './MentionFormat';\nimport MentionableModel from '../MentionableModel';\n\nexport default class MentionFormats {\n protected formats: MentionFormat[] = [new AtMentionFormat(), new HashMentionFormat()];\n\n public get(symbol: string): MentionFormat | null {\n return this.formats.find((f) => f.trigger() === symbol) ?? null;\n }\n\n public mentionable(type: string): MentionableModel | null {\n for (const format of this.formats) {\n const mentionable = format.getMentionable(type);\n\n if (mentionable) return mentionable;\n }\n\n return null;\n }\n\n public extend(format: new () => MentionFormat) {\n this.formats.push(new format());\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import Component from 'flarum/common/Component';\nimport type { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport type MentionableModel from '../mentionables/MentionableModel';\nimport type Mithril from 'mithril';\n\nexport interface IMentionsDropdownItemAttrs extends ComponentAttrs {\n mentionable: MentionableModel;\n onclick: () => void;\n onmouseenter: () => void;\n}\n\nexport default class MentionsDropdownItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { mentionable, ...attrs } = this.attrs;\n\n const className = classList('MentionsDropdownItem', 'PostPreview', `MentionsDropdown-${mentionable.type()}`);\n\n return (\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/throttleDebounce'];","import type MentionableModel from './MentionableModel';\nimport type Model from 'flarum/common/Model';\nimport type Mithril from 'mithril';\nimport MentionsDropdownItem from '../components/MentionsDropdownItem';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\n\nexport default class MentionableModels {\n protected mentionables?: MentionableModel[];\n /**\n * We store models returned from an API here to preserve order in which they are returned\n * This prevents the list jumping around while models are returned.\n * We also use a hashmap for model IDs to provide O(1) lookup for the users already in the list.\n */\n private results: Record> = {};\n public typed: string | null = null;\n private searched: string[] = [];\n private dropdownItemAttrs: Record = {};\n\n constructor(dropdownItemAttrs: Record) {\n this.dropdownItemAttrs = dropdownItemAttrs;\n }\n\n public init(mentionables: MentionableModel[]): void {\n this.typed = null;\n this.mentionables = mentionables;\n\n for (const mentionable of this.mentionables) {\n this.results[mentionable.type()] = new Map(mentionable.initialResults().map((result) => [result.id() as string, result]));\n }\n }\n\n /**\n * Don't send API calls searching for models until at least 2 characters have been typed.\n * This focuses the mention results on models already loaded.\n */\n public readonly search = throttle(250, async (): Promise => {\n if (!this.typed || this.typed.length <= 1) return;\n\n const typedLower = this.typed.toLowerCase();\n\n if (this.searched.includes(typedLower)) return;\n\n for (const mentionable of this.mentionables!) {\n for (const model of await mentionable.search(typedLower)) {\n if (!this.results[mentionable.type()].has(model.id() as string)) {\n this.results[mentionable.type()].set(model.id() as string, model);\n }\n }\n }\n\n this.searched.push(typedLower);\n\n return Promise.resolve();\n });\n\n public matches(mentionable: MentionableModel, model: Model): boolean {\n return mentionable.matches(model, this.typed?.toLowerCase() || '');\n }\n\n public makeSuggestion(mentionable: MentionableModel, model: Model): Mithril.Children {\n const content = mentionable.suggestion(model, this.typed!);\n const replacement = mentionable.replacement(model);\n\n const { onclick, ...attrs } = this.dropdownItemAttrs;\n\n return (\n onclick(replacement)} {...attrs}>\n {content}\n \n );\n }\n\n public buildSuggestions(): Mithril.Children {\n const suggestions: Mithril.Children = [];\n\n for (const mentionable of this.mentionables!) {\n if (!mentionable.enabled()) continue;\n\n let matches = Array.from(this.results[mentionable.type()].values()).filter((model) => this.matches(mentionable, model));\n\n const max = mentionable.maxStoreMatchedResults();\n if (max) matches = matches.splice(0, max);\n\n for (const model of matches) {\n const dropdownItem = this.makeSuggestion(mentionable, model);\n suggestions.push(dropdownItem);\n }\n }\n\n return suggestions;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostMentionedNotification extends Notification {\n icon() {\n return 'fas fa-reply';\n }\n\n href() {\n const notification = this.attrs.notification;\n const post = notification.subject();\n const content = notification.content();\n\n return app.route.discussion(post.discussion(), content && content.replyNumber);\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.post_mentioned_text', { user, count: 1 });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain() || '', 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class UserMentionedNotification extends Notification {\n icon() {\n return 'fas fa-at';\n }\n\n href() {\n const post = this.attrs.notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.user_mentioned_text', { user });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class GroupMentionedNotification extends Notification {\n icon() {\n return 'fas fa-at';\n }\n\n href() {\n const post = this.attrs.notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.group_mentioned_text', { user });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `MentionsUserPage` component shows post which user Mentioned at\n */\nexport default class MentionsUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param {Integer} [offset] The position to start getting results from.\n * @return {Promise}\n * @protected\n */\n loadResults(offset) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n mentioned: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport MentionsUserPage from './components/MentionsUserPage';\n\nexport default [\n new Extend.Routes() //\n .add('user.mentions', '/u/:username/mentions', MentionsUserPage),\n\n new Extend.Model(Post) //\n .hasMany('mentionedBy')\n .attribute('mentionedByCount'),\n\n new Extend.Model(User) //\n .attribute('canMentionGroups'),\n];\n","import app from 'flarum/forum/app';\nimport username from 'flarum/common/helpers/username';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport function filterUserMentions(tag) {\n let user;\n\n if (app.forum.attribute('allowUsernameMentionFormat') && tag.hasAttribute('username'))\n user = app.store.getBy('users', 'username', tag.getAttribute('username'));\n else if (tag.hasAttribute('id')) user = app.store.getById('users', tag.getAttribute('id'));\n\n if (user) {\n tag.setAttribute('id', user.id());\n tag.setAttribute('slug', user.slug());\n tag.setAttribute('displayname', extractText(username(user)));\n\n return true;\n }\n\n tag.invalidate();\n}\n\nexport function postFilterUserMentions(tag) {\n tag.setAttribute('deleted', false);\n}\n\nexport function filterPostMentions(tag) {\n const post = app.store.getById('posts', tag.getAttribute('id'));\n\n if (post) {\n tag.setAttribute('discussionid', post.discussion().id());\n tag.setAttribute('number', post.number());\n tag.setAttribute('displayname', extractText(username(post.user())));\n\n return true;\n }\n}\n\nexport function postFilterPostMentions(tag) {\n tag.setAttribute('deleted', false);\n}\n\nexport function filterGroupMentions(tag) {\n if (app.session?.user?.canMentionGroups()) {\n const group = app.store.getById('groups', tag.getAttribute('id'));\n\n if (group) {\n tag.setAttribute('groupname', extractText(group.namePlural()));\n\n return true;\n }\n }\n\n tag.invalidate();\n}\n\nexport function postFilterGroupMentions(tag) {\n if (app.session?.user?.canMentionGroups()) {\n const group = app.store.getById('groups', tag.getAttribute('id'));\n\n tag.setAttribute('color', group.color());\n tag.setAttribute('icon', group.icon());\n tag.setAttribute('deleted', false);\n }\n}\n\nexport function filterTagMentions(tag) {\n if ('flarum-tags' in flarum.extensions) {\n const model = app.store.getBy('tags', 'slug', tag.getAttribute('slug'));\n\n if (model) {\n tag.setAttribute('id', model.id());\n tag.setAttribute('tagname', model.name());\n\n return true;\n }\n }\n\n tag.invalidate();\n}\n\nexport function postFilterTagMentions(tag) {\n if ('flarum-tags' in flarum.extensions) {\n const model = app.store.getBy('tags', 'slug', tag.getAttribute('slug'));\n\n tag.setAttribute('icon', model.icon());\n tag.setAttribute('color', model.color());\n tag.setAttribute('deleted', false);\n }\n}\n","import GroupMentionedNotification from './components/GroupMentionedNotification';\nimport MentionsUserPage from './components/MentionsUserPage';\nimport PostMentionedNotification from './components/PostMentionedNotification';\nimport UserMentionedNotification from './components/UserMentionedNotification';\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport PostQuoteButton from './fragments/PostQuoteButton';\nimport getCleanDisplayName from './utils/getCleanDisplayName';\nimport getMentionText from './utils/getMentionText';\nimport * as reply from './utils/reply';\nimport selectedText from './utils/selectedText';\nimport * as textFormatter from './utils/textFormatter';\nimport MentionableModel from './mentionables/MentionableModel';\nimport MentionFormat from './mentionables/formats/MentionFormat';\nimport Mentionables from './extenders/Mentionables';\n\nexport default {\n 'mentions/components/MentionsUserPage': MentionsUserPage,\n 'mentions/components/PostMentionedNotification': PostMentionedNotification,\n 'mentions/components/UserMentionedNotification': UserMentionedNotification,\n 'mentions/components/GroupMentionedNotification': GroupMentionedNotification,\n 'mentions/fragments/AutocompleteDropdown': AutocompleteDropdown,\n 'mentions/fragments/PostQuoteButton': PostQuoteButton,\n 'mentions/utils/getCleanDisplayName': getCleanDisplayName,\n 'mentions/utils/getMentionText': getMentionText,\n 'mentions/utils/reply': reply,\n 'mentions/utils/selectedText': selectedText,\n 'mentions/utils/textFormatter': textFormatter,\n 'mentions/mentionables/MentionableModel': MentionableModel,\n 'mentions/mentionables/formats/MentionFormat': MentionFormat,\n 'mentions/extenders/Mentionables': Mentionables,\n};\n","import app from 'flarum/forum/app';\n\n/**\n * Fetches the mention text for a specified user (and optionally a post ID for replies or group).\n *\n * Automatically determines which mention syntax to be used based on the option in the\n * admin dashboard. Also performs display name clean-up automatically.\n *\n * @deprecated Use `app.mentionables.get('user').replacement(user)` instead. Will be removed in 2.0.\n */\nexport default function getMentionText(user, postId, group) {\n if (user !== undefined && postId === undefined) {\n return app.mentionables.get('user').replacement(user);\n } else if (user !== undefined && postId !== undefined) {\n return app.mentionables.get('post').replacement(app.store.getById('posts', postId));\n } else if (group !== undefined) {\n return app.mentionables.get('group').replacement(group);\n }\n\n throw 'No parameters were passed';\n}\n","import type ForumApplication from 'flarum/forum/ForumApplication';\nimport type IExtender from 'flarum/common/extenders/IExtender';\nimport type MentionableModel from '../mentionables/MentionableModel';\nimport type MentionFormat from '../mentionables/formats/MentionFormat';\n\nexport default class Mentionables implements IExtender {\n protected formats: (new () => MentionFormat)[] = [];\n protected mentionables: Record MentionableModel)[]> = {};\n\n /**\n * Register a new mention format.\n * Must extend MentionFormat and have a unique unused trigger symbol.\n */\n format(format: new () => MentionFormat): this {\n this.formats.push(format);\n\n return this;\n }\n\n /**\n * Register a new mentionable model to a mention format.\n * Only works if the format has already been registered,\n * and the format allows using multiple mentionables.\n *\n * @param symbol The trigger symbol of the format to extend (ex: @).\n * @param mentionable The mentionable instance to register.\n * Must extend MentionableModel.\n */\n mentionable(symbol: string, mentionable: new () => MentionableModel): this {\n if (!this.mentionables[symbol]) {\n this.mentionables[symbol] = [];\n }\n\n this.mentionables[symbol].push(mentionable);\n\n return this;\n }\n\n extend(app: ForumApplication): void {\n for (const format of this.formats) {\n app.mentionFormats.extend(format);\n }\n\n for (const symbol in this.mentionables) {\n const format = app.mentionFormats.get(symbol);\n\n if (!format) continue;\n\n for (const mentionable of this.mentionables[symbol]) {\n format.extend(mentionable);\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\nimport { getPlainContent } from 'flarum/common/utils/string';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport Post from 'flarum/forum/components/Post';\n\nimport addPostMentionPreviews from './addPostMentionPreviews';\nimport addMentionedByList from './addMentionedByList';\nimport addPostReplyAction from './addPostReplyAction';\nimport addPostQuoteButton from './addPostQuoteButton';\nimport addComposerAutocomplete from './addComposerAutocomplete';\nimport PostMentionedNotification from './components/PostMentionedNotification';\nimport UserMentionedNotification from './components/UserMentionedNotification';\nimport GroupMentionedNotification from './components/GroupMentionedNotification';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-mentions', function () {\n // For every mention of a post inside a post's content, set up a hover handler\n // that shows a preview of the mentioned post.\n addPostMentionPreviews();\n\n // In the footer of each post, show information about who has replied (i.e.\n // who the post has been mentioned by).\n addMentionedByList();\n\n // Add a 'reply' control to the footer of each post. When clicked, it will\n // open up the composer and add a post mention to its contents.\n addPostReplyAction();\n\n // Show a Quote button when Post text is selected\n addPostQuoteButton();\n\n // After typing '@' in the composer, show a dropdown suggesting a bunch of\n // posts or users that the user could mention.\n addComposerAutocomplete();\n\n app.notificationComponents.postMentioned = PostMentionedNotification;\n app.notificationComponents.userMentioned = UserMentionedNotification;\n app.notificationComponents.groupMentioned = GroupMentionedNotification;\n\n // Add notification preferences.\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postMentioned', {\n name: 'postMentioned',\n icon: 'fas fa-reply',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_post_mentioned_label'),\n });\n\n items.add('userMentioned', {\n name: 'userMentioned',\n icon: 'fas fa-at',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_user_mentioned_label'),\n });\n\n items.add('groupMentioned', {\n name: 'groupMentioned',\n icon: 'fas fa-at',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_group_mentioned_label'),\n });\n });\n\n // Add mentions tab in user profile\n extend(UserPage.prototype, 'navItems', function (items) {\n const user = this.user;\n items.add(\n 'mentions',\n \n {app.translator.trans('flarum-mentions.forum.user.mentions_link')}\n ,\n 80\n );\n });\n\n // Remove post mentions when rendering post previews.\n getPlainContent.removeSelectors.push('a.PostMention');\n\n // Apply color contrast fix on group mentions.\n extend(Post.prototype, 'oncreate', function () {\n this.$('.GroupMention--colored, .TagMention--colored').each(function () {\n this.classList.add(textContrastClass(getComputedStyle(this).getPropertyValue('--color')));\n });\n });\n});\n\nexport * from './utils/textFormatter';\n\n// Expose compat API\nimport mentionsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, mentionsCompat);\n","import { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default function addPostMentionPreviews() {\n function addPreviews() {\n const contentHtml = this.attrs.post.contentHtml();\n\n if (contentHtml === this.oldPostContentHtml || this.isEditing()) return;\n\n this.oldPostContentHtml = contentHtml;\n\n const parentPost = this.attrs.post;\n const $parentPost = this.$();\n\n this.$().on(\n 'click',\n '.UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted), .TagMention:not(.TagMention--deleted)',\n function (e) {\n m.route.set(this.getAttribute('href'));\n e.preventDefault();\n }\n );\n\n this.$('.PostMention:not(.PostMention--deleted)').each(function () {\n const $this = $(this);\n const id = $this.data('id');\n let timeout;\n\n // Wrap the mention link in a wrapper element so that we can insert a\n // preview popup as its sibling and relatively position it.\n const $preview = $('
    ');\n $parentPost.append($preview);\n\n const getPostElement = () => {\n return $(`.PostStream-item[data-id=\"${id}\"]`);\n };\n\n const showPreview = () => {\n // When the user hovers their mouse over the mention, look for the\n // post that it's referring to in the stream, and determine if it's\n // in the viewport. If it is, we will \"pulsate\" it.\n const $post = getPostElement();\n let visible = false;\n if ($post.length) {\n const top = $post.offset().top;\n const scrollTop = window.pageYOffset;\n if (top > scrollTop && top + $post.height() < scrollTop + $(window).height()) {\n $post.addClass('pulsate');\n visible = true;\n }\n }\n\n // Otherwise, we will show a popup preview of the post. If the post\n // hasn't yet been loaded, we will need to do that.\n if (!visible) {\n // Position the preview so that it appears above the mention.\n // (The offsetParent should be .Post-body.)\n const positionPreview = () => {\n const previewHeight = $preview.outerHeight(true);\n let offset = 0;\n\n // If the preview goes off the top of the viewport, reposition it to\n // be below the mention.\n if ($this.offset().top - previewHeight < $(window).scrollTop() + $('#header').outerHeight()) {\n offset += $this.outerHeight(true);\n } else {\n offset -= previewHeight;\n }\n\n $preview\n .show()\n .css('top', $this.offset().top - $parentPost.offset().top + offset)\n .css('left', $this.offsetParent().offset().left - $parentPost.offset().left)\n .css('max-width', $this.offsetParent().width());\n };\n\n const showPost = (post) => {\n const discussion = post.discussion();\n\n m.render($preview[0], [\n discussion !== parentPost.discussion() && (\n
  • \n {discussion.title()}\n
  • \n ),\n
  • \n \n
  • ,\n ]);\n positionPreview();\n };\n\n const post = app.store.getById('posts', id);\n if (post && post.discussion()) {\n showPost(post);\n } else {\n m.render($preview[0], );\n app.store.find('posts', id).then(showPost);\n positionPreview();\n }\n\n setTimeout(() => $preview.off('transitionend').addClass('in'));\n }\n };\n\n const hidePreview = () => {\n getPostElement().removeClass('pulsate');\n if ($preview.hasClass('in')) {\n $preview.removeClass('in').one('transitionend', () => $preview.hide());\n }\n };\n\n // On a touch (mobile) device we cannot hover the link to reveal the preview.\n // Instead we cancel the navigation so that a click reveals the preview.\n // Users can then click on the preview to go to the post if desired.\n $this.on('touchend', (e) => {\n if (e.cancelable) {\n e.preventDefault();\n }\n });\n\n $this\n .add($preview)\n .hover(\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(showPreview, 250);\n },\n () => {\n clearTimeout(timeout);\n getPostElement().removeClass('pulsate');\n timeout = setTimeout(hidePreview, 250);\n }\n )\n .on('touchend', (e) => {\n showPreview();\n e.stopPropagation();\n });\n\n $(document).on('touchend', hidePreview);\n });\n }\n\n extend(CommentPost.prototype, 'oncreate', addPreviews);\n extend(CommentPost.prototype, 'onupdate', addPreviews);\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\nimport MentionedByModal from './components/MentionedByModal';\n\nexport default function addMentionedByList() {\n function hidePreview() {\n this.$('.Post-mentionedBy-preview')\n .removeClass('in')\n .one('transitionend', function () {\n $(this).hide();\n });\n }\n\n extend(CommentPost.prototype, 'oncreate', function () {\n let timeout;\n const post = this.attrs.post;\n const replies = post.mentionedBy();\n\n if (replies && replies.length) {\n const $preview = $('
      ');\n this.$().append($preview);\n\n const $parentPost = this.$();\n const $this = this.$('.Post-mentionedBy');\n\n const showPreview = () => {\n if (!$preview.hasClass('in') && $preview.is(':visible')) return;\n\n // When the user hovers their mouse over the list of people who have\n // replied to the post, render a list of reply previews into a\n // popup.\n m.render(\n $preview[0],\n <>\n {replies.map((reply) => (\n
    • \n \n
    • \n ))}\n {replies.length < post.mentionedByCount() && (\n
    • \n {\n hidePreview.call(this);\n app.modal.show(MentionedByModal, { post });\n }}\n >\n \n {icon('fas fa-reply-all')}\n \n {app.translator.trans('flarum-mentions.forum.post.mentioned_by_more_text', { count: post.mentionedByCount() - replies.length })}\n \n \n \n
    • \n )}\n \n );\n\n $preview\n .show()\n .css('top', $this.offset().top - $parentPost.offset().top + $this.outerHeight(true))\n .css('left', $this.offsetParent().offset().left - $parentPost.offset().left)\n .css('max-width', $parentPost.width());\n\n setTimeout(() => $preview.off('transitionend').addClass('in'));\n };\n\n $this.add($preview).hover(\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(showPreview, 250);\n },\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(hidePreview, 250);\n }\n );\n\n // Whenever the user hovers their mouse over a particular name in the\n // list of repliers, highlight the corresponding post in the preview\n // popup.\n this.$()\n .find('.Post-mentionedBy-summary a')\n .hover(\n function () {\n $preview.find('[data-number=\"' + $(this).data('number') + '\"]').addClass('active');\n },\n function () {\n $preview.find('[data-number]').removeClass('active');\n }\n );\n }\n });\n\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const replies = post.mentionedBy();\n\n if (replies && replies.length) {\n const users = [];\n const repliers = replies\n .sort((reply) => (reply.user() === app.session.user ? -1 : 0))\n .filter((reply) => {\n const user = reply.user();\n if (users.indexOf(user) === -1) {\n users.push(user);\n return true;\n }\n });\n\n const limit = 4;\n const overLimit = repliers.length > limit;\n\n // Create a list of unique users who have replied. So even if a user has\n // replied twice, they will only be in this array once.\n const names = repliers.slice(0, overLimit ? limit - 1 : limit).map((reply) => {\n const user = reply.user();\n\n return (\n \n {app.session.user === user ? app.translator.trans('flarum-mentions.forum.post.you_text') : username(user)}\n \n );\n });\n\n // If there are more users that we've run out of room to display, add a \"x\n // others\" name to the end of the list. Clicking on it will display a modal\n // with a full list of names.\n if (overLimit) {\n const count = repliers.length - names.length;\n\n names.push(app.translator.trans('flarum-mentions.forum.post.others_text', { count }));\n }\n\n items.add(\n 'replies',\n
      \n \n {icon('fas fa-reply')}\n {app.translator.trans(`flarum-mentions.forum.post.mentioned_by${repliers[0].user() === app.session.user ? '_self' : ''}_text`, {\n count: names.length,\n users: punctuateSeries(names),\n })}\n \n
      \n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport reply from './utils/reply';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || (app.session.user && !post.discussion().canReply())) return;\n\n items.add(\n 'reply',\n \n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport PostQuoteButton from './fragments/PostQuoteButton';\nimport selectedText from './utils/selectedText';\n\nexport default function addPostQuoteButton() {\n extend(CommentPost.prototype, 'oncreate', function () {\n const post = this.attrs.post;\n\n if (post.isHidden() || (app.session.user && !post.discussion().canReply())) return;\n\n const $postBody = this.$('.Post-body');\n\n // Wrap the quote button in a wrapper element so that we can render\n // button into it.\n const $container = $('
      ');\n\n const button = new PostQuoteButton(post);\n\n const handler = function (e) {\n setTimeout(() => {\n const content = selectedText($postBody);\n if (content) {\n button.content = content;\n m.render($container[0], button.render());\n\n const rects = window.getSelection().getRangeAt(0).getClientRects();\n const firstRect = rects[0];\n\n if (e.clientY < firstRect.bottom && e.clientX - firstRect.right < firstRect.left - e.clientX) {\n button.showStart(firstRect.left, firstRect.top);\n } else {\n const lastRect = rects[rects.length - 1];\n button.showEnd(lastRect.right, lastRect.bottom);\n }\n }\n }, 1);\n };\n\n this.$().after($container).on('mouseup', handler);\n\n if ('ontouchstart' in window) {\n document.addEventListener('selectionchange', handler, false);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport TextEditor from 'flarum/common/components/TextEditor';\nimport TextEditorButton from 'flarum/common/components/TextEditorButton';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\n\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport MentionFormats from './mentionables/formats/MentionFormats';\nimport MentionableModels from './mentionables/MentionableModels';\n\nexport default function addComposerAutocomplete() {\n app.mentionFormats = new MentionFormats();\n\n const $container = $('
      ');\n const dropdown = new AutocompleteDropdown();\n\n extend(TextEditor.prototype, 'oncreate', function () {\n const $editor = this.$('.TextEditor-editor').wrap('
      ');\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when(() => dropdown.active)\n .onUp(() => dropdown.navigate(-1))\n .onDown(() => dropdown.navigate(1))\n .onSelect(dropdown.complete.bind(dropdown))\n .onCancel(dropdown.hide.bind(dropdown))\n .bindTo($editor);\n\n $editor.after($container);\n });\n\n extend(TextEditor.prototype, 'buildEditorParams', function (params) {\n let relMentionStart;\n let absMentionStart;\n let matchTyped;\n\n let mentionables = new MentionableModels({\n onmouseenter: function () {\n dropdown.setIndex($(this).parent().index());\n },\n onclick: (replacement) => {\n this.attrs.composer.editor.replaceBeforeCursor(absMentionStart - 1, replacement + ' ');\n\n dropdown.hide();\n },\n });\n\n const suggestionsInputListener = () => {\n const selection = this.attrs.composer.editor.getSelectionRange();\n\n const cursor = selection[0];\n\n if (selection[1] - cursor > 0) return;\n\n // Search backwards from the cursor for a mention triggering symbol. If we find one,\n // we will want to show the correct autocomplete dropdown!\n // Check classes implementing the IMentionableModel interface to see triggering symbols.\n const lastChunk = this.attrs.composer.editor.getLastNChars(30);\n absMentionStart = 0;\n let activeFormat = null;\n for (let i = lastChunk.length - 1; i >= 0; i--) {\n const character = lastChunk.substr(i, 1);\n activeFormat = app.mentionFormats.get(character);\n\n if (activeFormat && (i === 0 || /\\s/.test(lastChunk.substr(i - 1, 1)))) {\n relMentionStart = i + 1;\n absMentionStart = cursor - lastChunk.length + i + 1;\n mentionables.init(activeFormat.makeMentionables());\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (absMentionStart) {\n const typed = lastChunk.substring(relMentionStart).toLowerCase();\n matchTyped = activeFormat.queryFromTyped(typed);\n\n if (!matchTyped) return;\n\n mentionables.typed = matchTyped;\n\n const buildSuggestions = () => {\n // If the user has started to type a mention,\n // then suggest models matching.\n const suggestions = mentionables.buildSuggestions();\n\n if (suggestions.length) {\n dropdown.items = suggestions;\n m.render($container[0], dropdown.render());\n\n dropdown.show();\n const coordinates = this.attrs.composer.editor.getCaretCoordinates(absMentionStart);\n const width = dropdown.$().outerWidth();\n const height = dropdown.$().outerHeight();\n const parent = dropdown.$().offsetParent();\n let left = coordinates.left;\n let top = coordinates.top + 15;\n\n // Keep the dropdown inside the editor.\n if (top + height > parent.height()) {\n top = coordinates.top - height - 15;\n }\n if (left + width > parent.width()) {\n left = parent.width() - width;\n }\n\n // Prevent the dropdown from going off screen on mobile\n top = Math.max(-(parent.offset().top - $(document).scrollTop()), top);\n left = Math.max(-parent.offset().left, left);\n\n dropdown.show(left, top);\n } else {\n dropdown.active = false;\n dropdown.hide();\n }\n };\n\n dropdown.active = true;\n\n buildSuggestions();\n\n dropdown.setIndex(0);\n dropdown.$().scrollTop(0);\n\n mentionables.search()?.then(buildSuggestions);\n }\n };\n\n params.inputListeners.push(suggestionsInputListener);\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n items.add(\n 'mention',\n this.attrs.composer.editor.insertAtCursor(' @')} icon=\"fas fa-at\">\n {app.translator.trans('flarum-mentions.forum.composer.mention_tooltip')}\n \n );\n });\n}\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","MentionedByModalState","PaginatedListState","constructor","params","page","limit","super","type","MentionedByModal","Modal","oninit","vnode","this","state","filter","mentionedPost","attrs","post","id","sort","refresh","className","title","app","content","m","'['","isInitialLoading","LoadingIndicator","getPages","map","items","reply","number","PostPreview","onclick","hasNext","Button","loadNext","loading","isLoadingNext","insertMention","composer","quote","Promise","resolve","mention","replacement","fields","body","originalContent","cursorPosition","editor","getSelectionRange","preceding","slice","precedingNewlines","length","match","insertAtCursor","Array","join","trim","replace","EditPostComposer","discussion","DiscussionControls","then","PostQuoteButton","Fragment","view","icon","show","left","top","$this","$","parentOffset","offsetParent","offset","css","hideHandler","hide","bind","document","on","showStart","window","scrollTop","outerHeight","showEnd","right","bottom","outerWidth","off","selectedText","selection","getSelection","isCollapsed","range","getRangeAt","parent","commonAncestorContainer","contains","clone","append","cloneContents","find","replaceWith","alt","concat","src","innerText","href","text","_typeof","iterator","_defineProperty","arg","input","hint","prim","toPrimitive","undefined","res","TypeError","String","toPropertyKey","configurable","writable","AutocompleteDropdown","arguments","item","active","navigate","delta","keyWasJustPressed","setIndex","index","clearTimeout","keyWasJustPressedTimeout","setTimeout","complete","eq","click","scrollToItem","$dropdown","$items","rangedIndex","$item","removeClass","addClass","dropdownScroll","dropdownTop","dropdownBottom","itemTop","itemBottom","parseInt","stop","animate","MentionFormat","makeMentionables","_this$instances","instances","mentionables","Mentionable","getMentionable","_this$makeMentionable","mentionable","extend","extendable","Error","push","MentionableModel","format","getDeletedUserText","extractText","getCleanDisplayName","user","useDisplayName","displayName","username","UserMention","initialResults","from","cleanText","suggestion","model","typed","usernameHelper","_username$text","children","highlight","avatar","matches","some","name","toLowerCase","substr","maxStoreMatchedResults","async","q","enabled","PostMention","ReplyComposer","composerAttrs","composerPost","posts","contentType","b","createdAt","getTime","_model$contentPlain","truncate","contentPlain","userMentionable","search","GroupMention","g","Group","group","namePlural","groupName","Badge","color","nameSingular","_app$session$user$can","_app$session","_app$session$user","canMentionGroups","AtMentionFormat","trigger","queryFromTyped","matchTyped","char","simple","safe","TagMention","tag","slug","tagName","extensions","HashMentionFormat","MentionFormats","symbol","_this$formats$find","formats","f","MentionsDropdownItem","Component","classList","assign","MentionableModels","dropdownItemAttrs","throttle","typedLower","searched","includes","results","has","set","init","Map","result","_this$typed","makeSuggestion","buildSuggestions","suggestions","values","max","splice","dropdownItem","PostMentionedNotification","Notification","notification","subject","replyNumber","fromUser","count","excerpt","UserMentionedNotification","GroupMentionedNotification","MentionsUserPage","PostsUserPage","loadResults","mentioned","loadLimit","Extend","add","Post","hasMany","attribute","User","filterUserMentions","hasAttribute","getAttribute","setAttribute","invalidate","postFilterUserMentions","filterPostMentions","postFilterPostMentions","filterGroupMentions","postFilterGroupMentions","_app$session2","_app$session2$user","filterTagMentions","postFilterTagMentions","postId","textFormatter","mentionFormats","addPreviews","contentHtml","oldPostContentHtml","isEditing","parentPost","$parentPost","e","route","preventDefault","each","data","timeout","$preview","getPostElement","showPreview","$post","visible","pageYOffset","height","positionPreview","previewHeight","width","showPost","render","store","getById","hidePreview","hasClass","one","cancelable","hover","stopPropagation","CommentPost","addPostMentionPreviews","replies","mentionedBy","is","mentionedByCount","users","repliers","indexOf","overLimit","names","Link","punctuateSeries","addMentionedByList","isHidden","canReply","$postBody","$container","button","handler","rects","getClientRects","firstRect","clientY","clientX","lastRect","after","addEventListener","dropdown","TextEditor","$editor","wrap","navigator","KeyboardNavigatable","when","onUp","onDown","onSelect","onCancel","bindTo","relMentionStart","absMentionStart","onmouseenter","replaceBeforeCursor","inputListeners","suggestionsInputListener","cursor","lastChunk","getLastNChars","activeFormat","i","character","test","_mentionables$search","substring","coordinates","getCaretCoordinates","Math","TextEditorButton","addComposerAutocomplete","NotificationGrid","label","UserPage","LinkButton","getPlainContent","textContrastClass","getComputedStyle","getPropertyValue","mentionsCompat"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"MACA,IAAIA,EAAsB,CCA1BA,EAAyBC,IACxB,IAAIC,EAASD,GAAUA,EAAOE,WAC7B,IAAOF,EAAiB,QACxB,IAAM,EAEP,OADAD,EAAoBI,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdF,EAAwB,CAACM,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXP,EAAoBS,EAAEF,EAAYC,KAASR,EAAoBS,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDR,EAAwB,CAACc,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFf,EAAyBM,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GAAO,G,0kBCL9D,MAAM,EAA+BC,OAAOC,KAAKC,OAAO,iBCAlD,EAA+BF,OAAOC,KAAKC,OAAO,a,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,qC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uBCAlD,EAA+BF,OAAOC,KAAKC,OAAO,oC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,yB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,gC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,gC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,0B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,2B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,2B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,oC,aCczC,MAAMC,UAAiGC,KACpHC,YAAYC,EAAWC,QAAY,IAAZA,IAAAA,EAAe,GAGpCD,EAAOC,KAAO,IAAMD,EAAOC,MAAQ,CAAC,EAAIC,MAF1B,IAIdC,MAAMH,EAAQC,EAJA,GAKhB,CAEIG,WACF,MAAO,OACT,ECZa,MAAMC,UAA8FC,KAIjHC,OAAOC,GACLL,MAAMI,OAAOC,GAEbC,KAAKC,MAAQ,IAAIb,EAAsB,CACrCc,OAAQ,CACNC,cAAeH,KAAKI,MAAMC,KAAKC,MAEjCC,KAAM,WAGRP,KAAKC,MAAMO,SACb,CAEAC,YACE,MAAO,kBACT,CAEAC,QACE,OAAOC,IAAAA,WAAAA,MAAqB,2CAC9B,CAEAC,UACE,OACEC,EAAAC,IAAA,KACED,EAAA,OAAKJ,UAAU,cACZT,KAAKC,MAAMc,mBACVF,EAACG,IAAgB,MAEjBH,EAAAC,IAAA,KACED,EAAA,MAAIJ,UAAU,sFACXT,KAAKC,MAAMgB,WAAWC,KAAK1B,GAC1BA,EAAK2B,MAAMD,KAAKE,GACdP,EAAA,MAAI,cAAaO,EAAMC,UACrBR,EAACS,IAAW,CAACjB,KAAMe,EAAOG,QAASA,IAAMZ,IAAAA,MAAAA,kBAQtDX,KAAKC,MAAMuB,WACVX,EAAA,OAAKJ,UAAU,gBACbI,EAAA,OAAKJ,UAAU,uBACbI,EAAA,OAAKJ,UAAU,cACbI,EAACY,IAAM,CAAChB,UAAU,uBAAuBc,QAASA,IAAMvB,KAAKC,MAAMyB,WAAYC,QAAS3B,KAAKC,MAAM2B,iBAChGjB,IAAAA,WAAAA,MAAqB,2DAQtC,ECvEF,MAAM,EAA+B1B,OAAOC,KAAKC,OAAO,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,qC,aCIjD,SAAS0C,EAAcxB,EAAMyB,EAAUC,GAC5C,OAAO,IAAIC,SAASC,IAClB,MAAMC,EAAUvB,IAAAA,eAAAA,YAA+B,QAAQwB,YAAY9B,GAAQ,IAKtEyB,EAASM,OAAOxB,YACnBkB,EAASO,KAAKjC,MAAMkC,gBAAkBJ,GAGxC,MAAMK,EAAiBT,EAASU,OAAOC,oBAAoB,GACrDC,EAAYZ,EAASM,OAAOxB,UAAU+B,MAAM,EAAGJ,GAC/CK,EAAwC,GAApBF,EAAUG,OAAc,EAAI,EAAIH,EAAUI,MAAM,cAAc,GAAGD,OAO3F,OALAf,EAASU,OAAOO,eACdC,MAAMJ,GAAmBK,KAAK,OAC3BlB,EAAQ,KAAOG,EAAUH,EAAMmB,OAAOC,QAAQ,MAAO,QAAU,OAASjB,IAC3E,GAEKD,EAAQH,EAAS,GAE5B,CAEe,SAASV,EAAMf,EAAM0B,GAClC,OAAIpB,IAAAA,SAAAA,YAAyByC,MAAqBzC,IAAAA,SAAAA,KAAAA,MAAAA,KAAAA,eAA8CN,EAAKgD,aAG5FxB,EAAcxB,EAAMM,IAAAA,SAAcoB,GAKlCuB,IAAAA,YAAAA,KAAoCjD,EAAKgD,cAAcE,MAAMzB,GAAaD,EAAcxB,EAAMyB,EAAUC,IAEnH,CCvCA,MAAM,EAA+B9C,OAAOC,KAAKC,OAAO,mB,aCMzC,MAAMqE,UAAwBC,KAC3CnE,YAAYe,GACVX,QAEAM,KAAKK,KAAOA,CACd,CAEAqD,OACE,OACE7C,EAAA,UACEJ,UAAU,yBACVc,QAASA,KACPH,EAAMpB,KAAKK,KAAML,KAAKY,QAAQ,GAG/B+C,IAAK,oBAAqB,CAAElD,UAAW,gBACvCE,IAAAA,WAAAA,MAAqB,2CAG5B,CAEAiD,KAAKC,EAAMC,GACT,MAAMC,EAAQ/D,KAAKgE,IAAIJ,OACjBK,EAAeF,EAAMG,eAAeC,SAE1CJ,EAAMK,IAAI,OAAQP,EAAOI,EAAaJ,MAAMO,IAAI,MAAON,EAAMG,EAAaH,KAE1E9D,KAAKqE,YAAcrE,KAAKsE,KAAKC,KAAKvE,MAClCgE,EAAEQ,UAAUC,GAAG,UAAWzE,KAAKqE,YACjC,CAEAK,UAAUb,EAAMC,GACd,MAAMC,EAAQ/D,KAAKgE,IAEnBhE,KAAK4D,KAAKC,EAAMG,EAAEW,QAAQC,YAAcd,EAAMC,EAAMc,cAAgB,EACtE,CAEAC,QAAQC,EAAOC,GACb,MAAMjB,EAAQ/D,KAAKgE,IAEnBhE,KAAK4D,KAAKmB,EAAQhB,EAAMkB,aAAcjB,EAAEW,QAAQC,YAAcI,EAAS,EACzE,CAEAV,OACEtE,KAAKgE,IAAIM,OACTN,EAAEQ,UAAUU,IAAI,UAAWlF,KAAKqE,YAClC,ECjDa,SAASc,EAAa9C,GACnC,MAAM+C,EAAYT,OAAOU,eAEzB,IAAKD,EAAUE,YAAa,CAC1B,MAAMC,EAAQH,EAAUI,WAAW,GAC7BC,EAASF,EAAMG,wBAErB,GAAIrD,EAAK,KAAOoD,GAAUzB,EAAE2B,SAAStD,EAAK,GAAIoD,GAAS,CACrD,MAAMG,EAAQ5B,EAAE,SAAS6B,OAAON,EAAMO,iBAiBtC,OAdAF,EAAMG,KAAK,aAAaC,aAAY,WAClC,OAAOhG,KAAKiG,GACd,IAGAL,EAAMG,KAAK,OAAOC,aAAY,WAC5B,MAAO,OAAPE,OAAclG,KAAKmG,IAAG,IACxB,IAGAP,EAAMG,KAAK,KAAKC,aAAY,WAC1B,MAAO,IAAPE,OAAWlG,KAAKoG,UAAS,MAAAF,OAAKlG,KAAKqG,KAAI,IACzC,IAEOT,EAAMU,MACf,CACF,CACA,MAAO,EACT,CChCA,MAAM,EAA+BrH,OAAOC,KAAKC,OAAO,gC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,oC,aCAzC,SAASoH,GAAQ9H,GAG9B,OAAO8H,GAAU,mBAAqBzH,QAAU,iBAAmBA,OAAO0H,SAAW,SAAU/H,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBK,QAAUL,EAAIa,cAAgBR,QAAUL,IAAQK,OAAOH,UAAY,gBAAkBF,CAC1H,EAAG8H,GAAQ9H,EACb,CCPe,SAASgI,GAAgBhI,EAAKN,EAAKa,GAYhD,OAXAb,ECAa,SAAwBuI,GACrC,IAAIvI,ECFS,SAAsBwI,EAAOC,GAC1C,GAAuB,WAAnBL,GAAQI,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIE,EAAOF,EAAM7H,OAAOgI,aACxB,QAAaC,IAATF,EAAoB,CACtB,IAAIG,EAAMH,EAAKhI,KAAK8H,EAAOC,GAC3B,GAAqB,WAAjBL,GAAQS,GAAmB,OAAOA,EACtC,MAAM,IAAIC,UAAU,+CACtB,CACA,OAA4BC,OAAiBP,EAC/C,CDPYG,CAAYJ,EAAK,UAC3B,MAAwB,WAAjBH,GAAQpI,GAAoBA,EAAM+I,OAAO/I,EAClD,CDHQgJ,CAAchJ,MACTM,EACTJ,OAAOC,eAAeG,EAAKN,EAAK,CAC9Ba,MAAOA,EACPT,YAAY,EACZ6I,cAAc,EACdC,UAAU,IAGZ5I,EAAIN,GAAOa,EAENP,CACT,CGZe,MAAM6I,WAA6B7D,KAASnE,cAAA,SAAAiI,WAAAd,GAAA,aACjD,IAAEA,GAAA,eACD,GAAKA,GAAA,aACN,GAACA,GAAA,0BACW,EAAK,CAEzB/C,OACE,OACE7C,EAAA,MAAIJ,UAAU,kCACXT,KAAKmB,MAAMD,KAAKsG,GACf3G,EAAA,UAAK2G,KAIb,CAEA5D,KAAKC,EAAMC,GACT9D,KAAKgE,IACFJ,OACAQ,IAAI,CACHP,KAAMA,EAAO,KACbC,IAAKA,EAAM,OAEf9D,KAAKyH,QAAS,CAChB,CAEAnD,OACEtE,KAAKgE,IAAIM,OACTtE,KAAKyH,QAAS,CAChB,CAEAC,SAASC,GACP3H,KAAK4H,mBAAoB,EACzB5H,KAAK6H,SAAS7H,KAAK8H,MAAQH,GAAO,GAClCI,aAAa/H,KAAKgI,0BAClBhI,KAAKgI,yBAA2BC,YAAW,IAAOjI,KAAK4H,mBAAoB,GAAQ,IACrF,CAEAM,WACElI,KAAKgE,EAAE,MAAMmE,GAAGnI,KAAK8H,OAAO/B,KAAK,UAAUqC,OAC7C,CAEAP,SAASC,EAAOO,GACd,GAAIrI,KAAK4H,oBAAsBS,EAAc,OAE7C,MAAMC,EAAYtI,KAAKgE,IACjBuE,EAASD,EAAUvC,KAAK,MAC9B,IAAIyC,EAAcV,EAEdU,EAAc,EAChBA,EAAcD,EAAO1F,OAAS,EACrB2F,GAAeD,EAAO1F,SAC/B2F,EAAc,GAGhBxI,KAAK8H,MAAQU,EAEb,MAAMC,EAAQF,EAAOG,YAAY,UAAUP,GAAGK,GAAaG,SAAS,UAEpE,GAAIN,EAAc,CAChB,MAAMO,EAAiBN,EAAU1D,YAC3BiE,EAAcP,EAAUnE,SAASL,IACjCgF,EAAiBD,EAAcP,EAAUzD,cACzCkE,EAAUN,EAAMtE,SAASL,IACzBkF,EAAaD,EAAUN,EAAM5D,cAEnC,IAAID,EACAmE,EAAUF,EACZjE,EAAYgE,EAAiBC,EAAcE,EAAUE,SAASX,EAAUlE,IAAI,eAAgB,IACnF4E,EAAaF,IACtBlE,EAAYgE,EAAiBE,EAAiBE,EAAaC,SAASX,EAAUlE,IAAI,kBAAmB,UAG9E,IAAdQ,GACT0D,EAAUY,MAAK,GAAMC,QAAQ,CAAEvE,aAAa,IAEhD,CACF,EC5Ea,MAAewE,GAAc9J,cAAAmH,GAAA,yBAAAA,GAAA,4BAAAA,GAAA,0BAGnC4C,mBAAuC,IAAAC,EAC5C,OAAqB,OAArBA,EAAOtJ,KAAKuJ,WAASD,EAAKtJ,KAAKuJ,UAAYvJ,KAAKwJ,aAAatI,KAAKuI,GAAgB,IAAIA,EAAYzJ,OACpG,CAEO0J,eAAe/J,GAAuC,IAAAgK,EAC3D,OAAiF,OAAjFA,EAAO3J,KAAKqJ,mBAAmBtD,MAAM6D,GAAgBA,EAAYjK,SAAWA,KAAKgK,EAAI,IACvF,CAEOE,OAAOD,GACZ,IAAK5J,KAAK8J,WAAY,MAAM,IAAIC,MAAM,iDAEtC/J,KAAKwJ,aAAaQ,KAAKJ,EACzB,EClBF,MAAM,GAA+B3K,OAAOC,KAAKC,OAAO,yB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,4B,eCIzC,MAAe8K,GAGrB3K,YAAY4K,GAAgBzD,GAAA,sBACjCzG,KAAKkK,OAASA,CAChB,ECTF,MAAM,GAA+BjL,OAAOC,KAAKC,OAAO,4B,eCQjD,MAEDgL,GAAqBA,IAAMC,KAAYzJ,IAAAA,WAAAA,MAAqB,mCAUnD,SAAS0J,GAAoBC,EAAMC,GAChD,YAD8D,IAAdA,IAAAA,GAAiB,GAC5DD,IAESC,EAAiBD,EAAKE,cAAgBF,EAAKG,aAAeN,MAE5DhH,QAAQ,qBAAsB,KAJxBgH,KAAqBhH,QAAQ,qBAAsB,IAKvE,CChBe,MAAMuH,WAAoBT,GACvCtK,OACE,MAAO,MACT,CAEAgL,iBACE,OAAO3H,MAAM4H,KAAKjK,IAAAA,MAAAA,IAAoB,SACxC,CAgBOwB,YAAYmI,GACjB,GD1BoC3J,IAAAA,MAAAA,UAAoB,8BC0B9B,CACxB,MAAMkK,EAAYR,GAAoBC,GAAM,GAC5C,OAAOtK,KAAKkK,OAAOA,OAAOW,EAC5B,CAEA,MAAMA,EAAYR,GAAoBC,GACtC,OAAOtK,KAAKkK,OAAOA,OAAOW,EAAW,GAAIP,EAAKhK,KAChD,CAEAwK,WAAWC,EAAaC,GACtB,MAAMP,EAAWQ,IAAeF,GAAQG,GAAiBC,KAAUD,EAAMF,KAEzE,OACEnK,EAAAC,IAAA,KACGsK,KAAOL,GACPN,EAGP,CAEAY,QAAQN,EAAaC,GACnB,QAAKA,GAES,CAACD,EAAMN,WAAYM,EAAMP,eAE1Bc,MAAMJ,GAASA,EAAKK,cAAcC,OAAO,EAAGR,EAAMnI,UAAYmI,GAC7E,CAEAS,yBACE,OAAO,IACT,CAEAC,aAAaV,GACX,aAAarK,IAAAA,MAAAA,KAAuB,QAAS,CAAET,OAAQ,CAAEyL,EAAGX,GAASxL,KAAM,CAAEC,MAAO,IACtF,CAEAmM,UACE,OAAO,CACT,ECxEF,MAAM,GAA+B3M,OAAOC,KAAKC,OAAO,kC,eCazC,MAAM0M,WAAoB5B,GACvCtK,OACE,MAAO,MACT,CAQAgL,iBACE,IAAKhK,IAAAA,SAAAA,YAAyBmL,QAAmBnL,IAAAA,SAAAA,YAAyByC,KACxE,MAAO,GAIT,MAAM2I,EAAgBpL,IAAAA,SAAAA,KAAAA,MAChBqL,EAAeD,EAAc1L,KAGnC,OAFoB2L,GAAgBA,EAAa3I,cAAiB0I,EAAc1I,YAI3E4I,QAEA/L,QAAQG,GAAeA,GAA+B,YAAvBA,EAAK6L,iBAAiCF,GAAgB3L,EAAKgB,SAAW2K,EAAa3K,YAElHd,MAAK,CAACvC,EAASmO,IAAYA,EAAEC,YAAYC,UAAYrO,EAAEoO,YAAYC,WAE1E,CAUOlK,YAAY9B,GACjB,MACMwK,EAAYR,GADLhK,EAAKiK,QAElB,OAAOtK,KAAKkK,OAAOA,OAAOW,EAAW,IAAKxK,EAAKC,KACjD,CAEAwK,WAAWC,EAAaC,GAAiC,IAAAsB,EACvD,MAAMhC,EAAOS,EAAMT,QAAU,KACvBG,EAAWQ,IAAeX,GAAOY,GAAiBC,KAAUD,EAAMF,KAExE,OACEnK,EAAAC,IAAA,KACGsK,KAAOd,GACPG,EACA,CACC9J,IAAAA,WAAAA,MAAqB,oDAAqD,CAAEU,OAAQ0J,EAAM1J,WAC1F,OACAkL,EAAAA,EAAAA,UAA6B,OAArBD,EAACvB,EAAMyB,gBAAcF,EAAI,GAAI,MAI7C,CAEAjB,QAAQN,EAAaC,GACnB,MAAMV,EAAOS,EAAMT,OACbmC,EAAkB9L,IAAAA,eAAAA,YAA+B,QAEvD,OAAQqK,GAAUV,GAAQmC,EAAgBpB,QAAQf,EAAMU,EAC1D,CAEAS,yBACE,OAAO,CACT,CAKAiB,OAAO1B,GACL,OAAOhJ,QAAQC,QAAQ,GACzB,CAEA2J,UACE,OAAO,CACT,EC/FF,MAAM,GAA+B3M,OAAOC,KAAKC,OAAO,uB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,2B,eCQzC,MAAMwN,WAAqB1C,GACxCtK,OACE,MAAO,OACT,CAEAgL,iBACE,OAAO3H,MAAM4H,KACXjK,IAAAA,MAAAA,IAAqB,UAAUT,QAAQ0M,GAC9BA,EAAEtM,OAASuM,KAAAA,UAAkBD,EAAEtM,OAASuM,KAAAA,YAGrD,CAWO1K,YAAY2K,GACjB,OAAO9M,KAAKkK,OAAOA,OAAO4C,EAAMC,aAAc,IAAKD,EAAMxM,KAC3D,CAEAwK,WAAWC,EAAcC,GACvB,IAAIgC,EAA8BjC,EAAMgC,aAMxC,OAJI/B,IACFgC,EAAY7B,KAAU6B,EAAWhC,IAIjCnK,EAAAC,IAAA,KACED,EAACoM,KAAK,CAACxM,UAAS,8BAAAyF,OAAgC6E,EAAMzK,KAAI,eAAe4M,MAAOnC,EAAMmC,QAASvN,KAAK,QAAQgE,KAAMoH,EAAMpH,SACxH9C,EAAA,QAAMJ,UAAU,YAAYuM,GAGlC,CAEA3B,QAAQN,EAAcC,GACpB,QAAKA,GAES,CAACD,EAAMgC,aAAaxB,cAAeR,EAAMoC,eAAe5B,eAEzDD,MAAMJ,GAASA,EAAKK,cAAcC,OAAO,EAAGR,EAAMnI,UAAYmI,GAC7E,CAEAS,yBACE,OAAO,IACT,CAKAiB,OAAO1B,GACL,OAAOhJ,QAAQC,QAAQ,GACzB,CAEA2J,UAAmB,IAAAwB,EAAAC,EAAAC,EACjB,OAA4C,OAA5CF,EAAkB,OAAlBC,EAAO1M,IAAAA,UAAiB,OAAN2M,EAAXD,EAAa/C,WAAF,EAAXgD,EAAmBC,qBAAkBH,CAC9C,EChEa,MAAMI,WAAwBpE,GAAc9J,cAAA,SAAAiI,WAAAd,GAAA,oBACW,CAACiE,GAAamB,GAAac,KAAalG,GAAA,mBAC5E,EAAI,CAE7BgH,UACL,MAAO,GACT,CAEOC,eAAe1C,GACpB,MAAM2C,EAAa3C,EAAMlI,MAAM,yBAE/B,OAAO6K,EAAaA,EAAW,GAAK,IACtC,CAEOzD,OAAOgB,EAAc0C,EAA0BtN,GACpD,YAD6C,IAAnBsN,IAAAA,EAAsB,SAAqB,IAAjBtN,IAAAA,EAAoB,MACjE,CACLuN,OAAQ,IAAF3H,OAAMgF,GACZ4C,KAAM,KAAF5H,OAAOgF,EAAI,MAAAhF,OAAK0H,GAAI1H,OAAG5F,IAC3BA,EAAK,OAAS,SAClB,ECjBa,MAAMyN,WAAmB9D,GACtCtK,OACE,MAAO,KACT,CAEAgL,iBACE,OAAO3H,MAAM4H,KAAKjK,IAAAA,MAAAA,IAAmB,QACvC,CAWOwB,YAAY6L,GACjB,OAAOhO,KAAKkK,OAAOA,OAAO8D,EAAIC,OAChC,CAEA5C,QAAQN,EAAYC,GAClB,QAAKA,GAES,CAACD,EAAMG,OAAOK,eAEfD,MAAMJ,GAASA,EAAKK,cAAcC,OAAO,EAAGR,EAAMnI,UAAYmI,GAC7E,CAEAS,yBACE,OAAO,IACT,CAEAC,aAAaV,GACX,aAAarK,IAAAA,MAAAA,KAAsB,OAAQ,CAAET,OAAQ,CAAEyL,EAAGX,GAASxL,KAAM,CAAEC,MAAO,IACpF,CAEAqL,WAAWC,EAAYC,GACrB,IAAIkD,EAA4BnD,EAAMG,OAMtC,OAJIF,IACFkD,EAAU/C,KAAU+C,EAASlD,IAI7BnK,EAAAC,IAAA,KACED,EAACoM,KAAK,CAACxM,UAAU,SAASkD,KAAMoH,EAAMpH,OAAQuJ,MAAOnC,EAAMmC,QAASvN,KAAK,QACzEkB,EAAA,QAAMJ,UAAU,YAAYyN,GAGlC,CAEAtC,UACE,MAAO,gBAAiB3M,OAAOkP,UACjC,EC3Da,MAAMC,WAA0BhF,GAAc9J,cAAA,SAAAiI,WAAAd,GAAA,oBACS,CAACsH,KAAWtH,GAAA,mBAChD,EAAK,CAE9BgH,UACL,MAAO,GACT,CAEOC,eAAe1C,GACpB,MAAM2C,EAAa3C,EAAMlI,MAAM,6BAE/B,OAAO6K,EAAaA,EAAW,GAAK,IACtC,CAEOzD,OAAO+D,GACZ,MAAO,IAAP/H,OAAW+H,EACb,ECfa,MAAMI,GAAe/O,cAAAmH,GAAA,eACG,CAAC,IAAI+G,GAAmB,IAAIY,IAAoB,CAE9E5P,IAAI8P,GAAsC,IAAAC,EAC/C,OAAuD,OAAvDA,EAAOvO,KAAKwO,QAAQzI,MAAM0I,GAAMA,EAAEhB,YAAca,KAAOC,EAAI,IAC7D,CAEO3E,YAAYjK,GACjB,IAAK,MAAMuK,KAAUlK,KAAKwO,QAAS,CACjC,MAAM5E,EAAcM,EAAOR,eAAe/J,GAE1C,GAAIiK,EAAa,OAAOA,CAC1B,CAEA,OAAO,IACT,CAEOC,OAAOK,GACZlK,KAAKwO,QAAQxE,KAAK,IAAIE,EACxB,ECxBF,MAAM,GAA+BjL,OAAOC,KAAKC,OAAO,oB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,0B,eCYzC,MAAMuP,WAA6EC,MAChGjL,KAAK3D,GACH,MAAM,YAAE6J,KAAgBxJ,GAAUJ,KAAKI,MAEjCK,EAAYmO,KAAU,uBAAwB,cAAe,oBAAF1I,OAAsB0D,EAAYjK,SAEnG,OACEkB,EAAA,SAAAxC,OAAAwQ,OAAA,CAAQpO,UAAWA,GAAeL,GAChCS,EAAA,QAAMJ,UAAU,uBAAuBV,EAAM+O,UAGnD,ECvBF,MAAM,GAA+B7P,OAAOC,KAAKC,OAAO,iCCMzC,MAAM4P,GAYnBzP,YAAY0P,GAAwCvI,GAAA,4BAVpDA,GAAA,eAKsD,CAAC,GAACA,GAAA,aAC1B,MAAIA,GAAA,gBACL,IAAEA,GAAA,yBACkB,CAAC,GAelDA,GAAA,eAIyBwI,EAAAA,GAAAA,UAAS,KAAKvD,UACrC,IAAK1L,KAAKgL,OAAShL,KAAKgL,MAAMnI,QAAU,EAAG,OAE3C,MAAMqM,EAAalP,KAAKgL,MAAMO,cAE9B,IAAIvL,KAAKmP,SAASC,SAASF,GAA3B,CAEA,IAAK,MAAMtF,KAAe5J,KAAKwJ,aAC7B,IAAK,MAAMuB,WAAenB,EAAY8C,OAAOwC,GACtClP,KAAKqP,QAAQzF,EAAYjK,QAAQ2P,IAAIvE,EAAMzK,OAC9CN,KAAKqP,QAAQzF,EAAYjK,QAAQ4P,IAAIxE,EAAMzK,KAAgByK,GAOjE,OAFA/K,KAAKmP,SAASnF,KAAKkF,GAEZlN,QAAQC,SAZ+B,CAYtB,KAjCxBjC,KAAKgP,kBAAoBA,CAC3B,CAEOQ,KAAKhG,GACVxJ,KAAKgL,MAAQ,KACbhL,KAAKwJ,aAAeA,EAEpB,IAAK,MAAMI,KAAe5J,KAAKwJ,aAC7BxJ,KAAKqP,QAAQzF,EAAYjK,QAAU,IAAI8P,IAAI7F,EAAYe,iBAAiBzJ,KAAKwO,GAAW,CAACA,EAAOpP,KAAgBoP,KAEpH,CA0BOrE,QAAQzB,EAA+BmB,GAAuB,IAAA4E,EACnE,OAAO/F,EAAYyB,QAAQN,GAAiB,OAAV4E,EAAA3P,KAAKgL,YAAK,EAAV2E,EAAYpE,gBAAiB,GACjE,CAEOqE,eAAehG,EAA+BmB,GACnD,MAAMnK,EAAUgJ,EAAYkB,WAAWC,EAAO/K,KAAKgL,OAC7C7I,EAAcyH,EAAYzH,YAAY4I,IAEtC,QAAExJ,KAAYnB,GAAUJ,KAAKgP,kBAEnC,OACEnO,EAAC6N,GAAoBrQ,OAAAwQ,OAAA,CAACjF,YAAaA,EAAarI,QAASA,IAAMA,EAAQY,IAAkB/B,GACtFQ,EAGP,CAEOiP,mBACL,MAAMC,EAAgC,GAEtC,IAAK,MAAMlG,KAAe5J,KAAKwJ,aAAe,CAC5C,IAAKI,EAAYgC,UAAW,SAE5B,IAAIP,EAAUrI,MAAM4H,KAAK5K,KAAKqP,QAAQzF,EAAYjK,QAAQoQ,UAAU7P,QAAQ6K,GAAU/K,KAAKqL,QAAQzB,EAAamB,KAEhH,MAAMiF,EAAMpG,EAAY6B,yBACpBuE,IAAK3E,EAAUA,EAAQ4E,OAAO,EAAGD,IAErC,IAAK,MAAMjF,KAASM,EAAS,CAC3B,MAAM6E,EAAelQ,KAAK4P,eAAehG,EAAamB,GACtD+E,EAAY9F,KAAKkG,EACnB,CACF,CAEA,OAAOJ,CACT,EC1FF,MAAM,GAA+B7Q,OAAOC,KAAKC,OAAO,iC,eCIzC,MAAMgR,WAAkCC,MACrDzM,OACE,MAAO,cACT,CAEA0C,OACE,MAAMgK,EAAerQ,KAAKI,MAAMiQ,aAC1BhQ,EAAOgQ,EAAaC,UACpB1P,EAAUyP,EAAazP,UAE7B,OAAOD,IAAAA,MAAAA,WAAqBN,EAAKgD,aAAczC,GAAWA,EAAQ2P,YACpE,CAEA3P,UACE,MACM0J,EADetK,KAAKI,MAAMiQ,aACNG,WAE1B,OAAO7P,IAAAA,WAAAA,MAAqB,0DAA2D,CAAE2J,OAAMmG,MAAO,GACxG,CAEAC,UACE,OAAOnE,EAAAA,EAAAA,UAASvM,KAAKI,MAAMiQ,aAAaC,UAAU9D,gBAAkB,GAAI,IAC1E,ECtBa,MAAMmE,WAAkCP,MACrDzM,OACE,MAAO,WACT,CAEA0C,OACE,MAAMhG,EAAOL,KAAKI,MAAMiQ,aAAaC,UAErC,OAAO3P,IAAAA,MAAAA,WAAqBN,EAAKgD,aAAchD,EAAKgB,SACtD,CAEAT,UACE,MAAM0J,EAAOtK,KAAKI,MAAMiQ,aAAaG,WAErC,OAAO7P,IAAAA,WAAAA,MAAqB,0DAA2D,CAAE2J,QAC3F,CAEAoG,UACE,OAAOnE,EAAAA,EAAAA,UAASvM,KAAKI,MAAMiQ,aAAaC,UAAU9D,eAAgB,IACpE,ECnBa,MAAMoE,WAAmCR,MACtDzM,OACE,MAAO,WACT,CAEA0C,OACE,MAAMhG,EAAOL,KAAKI,MAAMiQ,aAAaC,UAErC,OAAO3P,IAAAA,MAAAA,WAAqBN,EAAKgD,aAAchD,EAAKgB,SACtD,CAEAT,UACE,MAAM0J,EAAOtK,KAAKI,MAAMiQ,aAAaG,WAErC,OAAO7P,IAAAA,WAAAA,MAAqB,2DAA4D,CAAE2J,QAC5F,CAEAoG,UACE,OAAOnE,EAAAA,EAAAA,UAASvM,KAAKI,MAAMiQ,aAAaC,UAAU9D,eAAgB,IACpE,ECvBF,MAAM,GAA+BvN,OAAOC,KAAKC,OAAO,6B,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,gC,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,sB,eCAnBF,OAAOC,KAAKC,OAAO,gBAAxD,MCAM,GAA+BF,OAAOC,KAAKC,OAAO,oB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,sB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,kC,eCMzC,MAAM0R,WAAyBC,MAQ5CC,YAAY5M,GACV,OAAOxD,IAAAA,MAAAA,KAAe,QAAS,CAC7BT,OAAQ,CACNP,KAAM,UACNqR,UAAWhR,KAAKsK,KAAKhK,MAEvBd,KAAM,CAAE2E,SAAQ1E,MAAOO,KAAKiR,WAC5B1Q,KAAM,cAEV,EClBF,WACE,IAAI2Q,KAAAA,SACDC,IAAI,gBAAiB,wBAAyBN,IAEjD,IAAIK,KAAAA,OAAaE,MACdC,QAAc,eACdC,UAAkB,oBAErB,IAAIJ,KAAAA,OAAaK,MACdD,UAAmB,qBCVjB,SAASE,GAAmBxD,GACjC,IAAI1D,EAMJ,GAJI3J,IAAAA,MAAAA,UAAoB,+BAAiCqN,EAAIyD,aAAa,YACxEnH,EAAO3J,IAAAA,MAAAA,MAAgB,QAAS,WAAYqN,EAAI0D,aAAa,aACtD1D,EAAIyD,aAAa,QAAOnH,EAAO3J,IAAAA,MAAAA,QAAkB,QAASqN,EAAI0D,aAAa,QAEhFpH,EAKF,OAJA0D,EAAI2D,aAAa,KAAMrH,EAAKhK,MAC5B0N,EAAI2D,aAAa,OAAQrH,EAAK2D,QAC9BD,EAAI2D,aAAa,cAAevH,KAAYK,IAASH,MAE9C,EAGT0D,EAAI4D,YACN,CAEO,SAASC,GAAuB7D,GACrCA,EAAI2D,aAAa,WAAW,EAC9B,CAEO,SAASG,GAAmB9D,GACjC,MAAM3N,EAAOM,IAAAA,MAAAA,QAAkB,QAASqN,EAAI0D,aAAa,OAEzD,GAAIrR,EAKF,OAJA2N,EAAI2D,aAAa,eAAgBtR,EAAKgD,aAAa/C,MACnD0N,EAAI2D,aAAa,SAAUtR,EAAKgB,UAChC2M,EAAI2D,aAAa,cAAevH,KAAYK,IAASpK,EAAKiK,WAEnD,CAEX,CAEO,SAASyH,GAAuB/D,GACrCA,EAAI2D,aAAa,WAAW,EAC9B,CAEO,SAASK,GAAoBhE,GAAK,IAAAX,EAAAC,EACvC,GAAe,OAAfD,EAAI1M,IAAAA,UAAiB,OAAN2M,EAAXD,EAAa/C,OAAbgD,EAAmBC,mBAAoB,CACzC,MAAMT,EAAQnM,IAAAA,MAAAA,QAAkB,SAAUqN,EAAI0D,aAAa,OAE3D,GAAI5E,EAGF,OAFAkB,EAAI2D,aAAa,YAAavH,KAAY0C,EAAMC,gBAEzC,CAEX,CAEAiB,EAAI4D,YACN,CAEO,SAASK,GAAwBjE,GAAK,IAAAkE,EAAAC,EAC3C,GAAe,OAAfD,EAAIvR,IAAAA,UAAiB,OAANwR,EAAXD,EAAa5H,OAAb6H,EAAmB5E,mBAAoB,CACzC,MAAMT,EAAQnM,IAAAA,MAAAA,QAAkB,SAAUqN,EAAI0D,aAAa,OAE3D1D,EAAI2D,aAAa,QAAS7E,EAAMI,SAChCc,EAAI2D,aAAa,OAAQ7E,EAAMnJ,QAC/BqK,EAAI2D,aAAa,WAAW,EAC9B,CACF,CAEO,SAASS,GAAkBpE,GAChC,GAAI,gBAAiB/O,OAAOkP,WAAY,CACtC,MAAMpD,EAAQpK,IAAAA,MAAAA,MAAgB,OAAQ,OAAQqN,EAAI0D,aAAa,SAE/D,GAAI3G,EAIF,OAHAiD,EAAI2D,aAAa,KAAM5G,EAAMzK,MAC7B0N,EAAI2D,aAAa,UAAW5G,EAAMG,SAE3B,CAEX,CAEA8C,EAAI4D,YACN,CAEO,SAASS,GAAsBrE,GACpC,GAAI,gBAAiB/O,OAAOkP,WAAY,CACtC,MAAMpD,EAAQpK,IAAAA,MAAAA,MAAgB,OAAQ,OAAQqN,EAAI0D,aAAa,SAE/D1D,EAAI2D,aAAa,OAAQ5G,EAAMpH,QAC/BqK,EAAI2D,aAAa,QAAS5G,EAAMmC,SAChCc,EAAI2D,aAAa,WAAW,EAC9B,CACF,CC1EA,UACE,uCAAwCd,GACxC,gDAAiDV,GACjD,gDAAiDQ,GACjD,iDAAkDC,GAClD,0CAA2CtJ,GAC3C,qCAAsC9D,EACtC,qCAAsC6G,GACtC,gCCba,SAAwBC,EAAMgI,EAAQxF,GACnD,QAAa/F,IAATuD,QAAiCvD,IAAXuL,EACxB,OAAO3R,IAAAA,aAAAA,IAAqB,QAAQwB,YAAYmI,GAC3C,QAAavD,IAATuD,QAAiCvD,IAAXuL,EAC/B,OAAO3R,IAAAA,aAAAA,IAAqB,QAAQwB,YAAYxB,IAAAA,MAAAA,QAAkB,QAAS2R,IACtE,QAAcvL,IAAV+F,EACT,OAAOnM,IAAAA,aAAAA,IAAqB,SAASwB,YAAY2K,GAGnD,KAAM,2BACR,EDIE,uBAAwB1L,EACxB,8BAA+B+D,EAC/B,+BAAgCoN,EAChC,yCAA0CtI,GAC1C,8CAA+Cb,GAC/C,kCExBa,MAA0D9J,cAAAmH,GAAA,eACtB,IAAEA,GAAA,oBACsB,CAAC,EAAC,CAM3EyD,OAAOA,GAGL,OAFAlK,KAAKwO,QAAQxE,KAAKE,GAEXlK,IACT,CAWA4J,YAAY0E,EAAgB1E,GAO1B,OANK5J,KAAKwJ,aAAa8E,KACrBtO,KAAKwJ,aAAa8E,GAAU,IAG9BtO,KAAKwJ,aAAa8E,GAAQtE,KAAKJ,GAExB5J,IACT,CAEA6J,OAAOlJ,GACL,IAAK,MAAMuJ,KAAUlK,KAAKwO,QACxB7N,EAAI6R,eAAe3I,OAAOK,GAG5B,IAAK,MAAMoE,KAAUtO,KAAKwJ,aAAc,CACtC,MAAMU,EAASvJ,EAAI6R,eAAehU,IAAI8P,GAEtC,GAAKpE,EAEL,IAAK,MAAMN,KAAe5J,KAAKwJ,aAAa8E,GAC1CpE,EAAOL,OAAOD,EAElB,CACF,ICpDI,GAA+B3K,OAAOC,KCsB5CyB,IAAAA,aAAAA,IAAqB,mBAAmB,YCjBzB,WACb,SAAS8R,IACP,MAAMC,EAAc1S,KAAKI,MAAMC,KAAKqS,cAEpC,GAAIA,IAAgB1S,KAAK2S,oBAAsB3S,KAAK4S,YAAa,OAEjE5S,KAAK2S,mBAAqBD,EAE1B,MAAMG,EAAa7S,KAAKI,MAAMC,KACxByS,EAAc9S,KAAKgE,IAEzBhE,KAAKgE,IAAIS,GACP,QACA,2HACA,SAAUsO,GACRlS,EAAEmS,MAAMzD,IAAIvP,KAAK0R,aAAa,SAC9BqB,EAAEE,gBACJ,IAGFjT,KAAKgE,EAAE,2CAA2CkP,MAAK,WACrD,MAAMnP,EAAQC,EAAEhE,MACVM,EAAKyD,EAAMoP,KAAK,MACtB,IAAIC,EAIJ,MAAMC,EAAWrP,EAAE,wDACnB8O,EAAYjN,OAAOwN,GAEnB,MAAMC,EAAiBA,IACdtP,EAAE,6BAADkC,OAA8B5F,EAAE,OAGpCiT,EAAcA,KAIlB,MAAMC,EAAQF,IACd,IAAIG,GAAU,EACd,GAAID,EAAM3Q,OAAQ,CAChB,MAAMiB,EAAM0P,EAAMrP,SAASL,IACrBc,EAAYD,OAAO+O,YACrB5P,EAAMc,GAAad,EAAM0P,EAAMG,SAAW/O,EAAYZ,EAAEW,QAAQgP,WAClEH,EAAM7K,SAAS,WACf8K,GAAU,EAEd,CAIA,IAAKA,EAAS,CAGZ,MAAMG,EAAkBA,KACtB,MAAMC,EAAgBR,EAASxO,aAAY,GAC3C,IAAIV,EAAS,EAITJ,EAAMI,SAASL,IAAM+P,EAAgB7P,EAAEW,QAAQC,YAAcZ,EAAE,WAAWa,cAC5EV,GAAUJ,EAAMc,aAAY,GAE5BV,GAAU0P,EAGZR,EACGzP,OACAQ,IAAI,MAAOL,EAAMI,SAASL,IAAMgP,EAAY3O,SAASL,IAAMK,GAC3DC,IAAI,OAAQL,EAAMG,eAAeC,SAASN,KAAOiP,EAAY3O,SAASN,MACtEO,IAAI,YAAaL,EAAMG,eAAe4P,QAAQ,EAG7CC,EAAY1T,IAChB,MAAMgD,EAAahD,EAAKgD,aAExBxC,EAAEmT,OAAOX,EAAS,GAAI,CACpBhQ,IAAewP,EAAWxP,cACxBxC,EAAA,UACEA,EAAA,QAAMJ,UAAU,kCAAkC4C,EAAW3C,UAGjEG,EAAA,UACEA,EAACS,IAAW,CAACjB,KAAMA,OAGvBuT,GAAiB,EAGbvT,EAAOM,IAAIsT,MAAMC,QAAQ,QAAS5T,GACpCD,GAAQA,EAAKgD,aACf0Q,EAAS1T,IAETQ,EAAEmT,OAAOX,EAAS,GAAIxS,EAACG,IAAgB,OACvCL,IAAIsT,MAAMlO,KAAK,QAASzF,GAAIiD,KAAKwQ,GACjCH,KAGF3L,YAAW,IAAMoL,EAASnO,IAAI,iBAAiByD,SAAS,OAC1D,GAGIwL,EAAcA,KAClBb,IAAiB5K,YAAY,WACzB2K,EAASe,SAAS,OACpBf,EAAS3K,YAAY,MAAM2L,IAAI,iBAAiB,IAAMhB,EAAS/O,QACjE,EAMFP,EAAMU,GAAG,YAAasO,IAChBA,EAAEuB,YACJvB,EAAEE,gBACJ,IAGFlP,EACGoN,IAAIkC,GACJkB,OACC,KACExM,aAAaqL,GACbA,EAAUnL,WAAWsL,EAAa,IAAI,IAExC,KACExL,aAAaqL,GACbE,IAAiB5K,YAAY,WAC7B0K,EAAUnL,WAAWkM,EAAa,IAAI,IAGzC1P,GAAG,YAAasO,IACfQ,IACAR,EAAEyB,iBAAiB,IAGvBxQ,EAAEQ,UAAUC,GAAG,WAAY0P,EAC7B,GACF,EAEAtK,EAAAA,EAAAA,QAAO4K,IAAAA,UAAuB,WAAYhC,IAC1C5I,EAAAA,EAAAA,QAAO4K,IAAAA,UAAuB,WAAYhC,EAC5C,CD1HEiC,GEda,WACb,SAASP,IACPnU,KAAKgE,EAAE,6BACJ0E,YAAY,MACZ2L,IAAI,iBAAiB,WACpBrQ,EAAEhE,MAAMsE,MACV,GACJ,EAEAuF,EAAAA,EAAAA,QAAO4K,IAAAA,UAAuB,YAAY,WACxC,IAAIrB,EACJ,MAAM/S,EAAOL,KAAKI,MAAMC,KAClBsU,EAAUtU,EAAKuU,cAErB,GAAID,GAAWA,EAAQ9R,OAAQ,CAC7B,MAAMwQ,EAAWrP,EAAE,6DACnBhE,KAAKgE,IAAI6B,OAAOwN,GAEhB,MAAMP,EAAc9S,KAAKgE,IACnBD,EAAQ/D,KAAKgE,EAAE,qBAEfuP,EAAcA,MACbF,EAASe,SAAS,OAASf,EAASwB,GAAG,cAK5ChU,EAAEmT,OACAX,EAAS,GACTxS,EAAAC,IAAA,KACG6T,EAAQzT,KAAKE,GACZP,EAAA,MAAI,cAAaO,EAAMC,UACrBR,EAACS,IAAW,CAACjB,KAAMe,EAAOG,QAAS4S,EAAY5P,KAAKvE,WAGvD2U,EAAQ9R,OAASxC,EAAKyU,oBACrBjU,EAAA,MAAIJ,UAAU,iCACZI,EAACY,IAAM,CACLhB,UAAU,qBACVc,QAASA,KACP4S,EAAYtV,KAAKmB,MACjBW,IAAAA,MAAAA,KAAef,EAAkB,CAAES,QAAO,GAG5CQ,EAAA,QAAMJ,UAAU,uBACdI,EAAA,QAAMJ,UAAU,4BAA4BkD,IAAK,qBACjD9C,EAAA,YACGF,IAAAA,WAAAA,MAAqB,oDAAqD,CAAE8P,MAAOpQ,EAAKyU,mBAAqBH,EAAQ9R,eASpIwQ,EACGzP,OACAQ,IAAI,MAAOL,EAAMI,SAASL,IAAMgP,EAAY3O,SAASL,IAAMC,EAAMc,aAAY,IAC7ET,IAAI,OAAQL,EAAMG,eAAeC,SAASN,KAAOiP,EAAY3O,SAASN,MACtEO,IAAI,YAAa0O,EAAYgB,SAEhC7L,YAAW,IAAMoL,EAASnO,IAAI,iBAAiByD,SAAS,QAAM,EAGhE5E,EAAMoN,IAAIkC,GAAUkB,OAClB,KACExM,aAAaqL,GACbA,EAAUnL,WAAWsL,EAAa,IAAI,IAExC,KACExL,aAAaqL,GACbA,EAAUnL,WAAWkM,EAAa,IAAI,IAO1CnU,KAAKgE,IACF+B,KAAK,+BACLwO,OACC,WACElB,EAAStN,KAAK,iBAAmB/B,EAAEhE,MAAMmT,KAAK,UAAY,MAAMxK,SAAS,SAC3E,IACA,WACE0K,EAAStN,KAAK,iBAAiB2C,YAAY,SAC7C,GAEN,CACF,KAEAmB,EAAAA,EAAAA,QAAO4K,IAAAA,UAAuB,eAAe,SAAUtT,GACrD,MACMwT,EADO3U,KAAKI,MAAMC,KACHuU,cAErB,GAAID,GAAWA,EAAQ9R,OAAQ,CAC7B,MAAMkS,EAAQ,GACRC,EAAWL,EACdpU,MAAMa,GAAWA,EAAMkJ,SAAW3J,IAAAA,QAAAA,MAAoB,EAAI,IAC1DT,QAAQkB,IACP,MAAMkJ,EAAOlJ,EAAMkJ,OACnB,IAA6B,IAAzByK,EAAME,QAAQ3K,GAEhB,OADAyK,EAAM/K,KAAKM,IACJ,CACT,IAGE7K,EAAQ,EACRyV,EAAYF,EAASnS,OAASpD,EAI9B0V,EAAQH,EAASrS,MAAM,EAAGuS,EAAYzV,EAAQ,EAAIA,GAAOyB,KAAKE,IAClE,MAAMkJ,EAAOlJ,EAAMkJ,OAEnB,OACEzJ,EAACuU,IAAI,CAAC/O,KAAM1F,IAAAA,MAAAA,KAAeS,GAAQG,QAAS4S,EAAY5P,KAAKvE,MAAO,cAAaoB,EAAMC,UACpFV,IAAAA,QAAAA,OAAqB2J,EAAO3J,IAAAA,WAAAA,MAAqB,uCAAyC8J,IAASH,GAC/F,IAOX,GAAI4K,EAAW,CACb,MAAMzE,EAAQuE,EAASnS,OAASsS,EAAMtS,OAEtCsS,EAAMnL,KAAKrJ,IAAAA,WAAAA,MAAqB,yCAA0C,CAAE8P,UAC9E,CAEAtP,EAAMgQ,IACJ,UACAtQ,EAAA,OAAKJ,UAAU,oBACbI,EAAA,QAAMJ,UAAU,4BACbkD,IAAK,gBACLhD,IAAAA,WAAAA,MAAqB,0CAADuF,OAA2C8O,EAAS,GAAG1K,SAAW3J,IAAAA,QAAAA,KAAmB,QAAU,GAAE,SAAS,CAC7H8P,MAAO0E,EAAMtS,OACbkS,MAAOM,IAAgBF,OAKjC,CACF,GACF,CFhIEG,IGrBAzL,EAAAA,EAAAA,QAAO4K,IAAAA,UAAuB,eAAe,SAAUtT,GACrD,MAAMd,EAAOL,KAAKI,MAAMC,KAEpBA,EAAKkV,YAAe5U,IAAAA,QAAAA,OAAqBN,EAAKgD,aAAamS,YAE/DrU,EAAMgQ,IACJ,QACAtQ,EAACY,IAAM,CAAChB,UAAU,sBAAsBc,QAASA,IAAMH,EAAMf,IAC1DM,IAAAA,WAAAA,MAAqB,0CAG5B,KCXAkJ,EAAAA,EAAAA,QAAO4K,IAAAA,UAAuB,YAAY,WACxC,MAAMpU,EAAOL,KAAKI,MAAMC,KAExB,GAAIA,EAAKkV,YAAe5U,IAAAA,QAAAA,OAAqBN,EAAKgD,aAAamS,WAAa,OAE5E,MAAMC,EAAYzV,KAAKgE,EAAE,cAInB0R,EAAa1R,EAAE,iDAEf2R,EAAS,IAAInS,EAAgBnD,GAE7BuV,EAAU,SAAU7C,GACxB9K,YAAW,KACT,MAAMrH,EAAUuE,EAAasQ,GAC7B,GAAI7U,EAAS,CACX+U,EAAO/U,QAAUA,EACjBC,EAAEmT,OAAO0B,EAAW,GAAIC,EAAO3B,UAE/B,MAAM6B,EAAQlR,OAAOU,eAAeG,WAAW,GAAGsQ,iBAC5CC,EAAYF,EAAM,GAExB,GAAI9C,EAAEiD,QAAUD,EAAU/Q,QAAU+N,EAAEkD,QAAUF,EAAUhR,MAAQgR,EAAUlS,KAAOkP,EAAEkD,QACnFN,EAAOjR,UAAUqR,EAAUlS,KAAMkS,EAAUjS,SACtC,CACL,MAAMoS,EAAWL,EAAMA,EAAMhT,OAAS,GACtC8S,EAAO7Q,QAAQoR,EAASnR,MAAOmR,EAASlR,OAC1C,CACF,IACC,EACL,EAEAhF,KAAKgE,IAAImS,MAAMT,GAAYjR,GAAG,UAAWmR,GAErC,iBAAkBjR,QACpBH,SAAS4R,iBAAiB,kBAAmBR,GAAS,EAE1D,ICpCa,WACbjV,IAAAA,eAAqB,IAAI0N,GAEzB,MAAMqH,EAAa1R,EAAE,8DACfqS,EAAW,IAAI/O,IAErBuC,EAAAA,EAAAA,QAAOyM,IAAAA,UAAsB,YAAY,WACvC,MAAMC,EAAUvW,KAAKgE,EAAE,sBAAsBwS,KAAK,oDAElDxW,KAAKyW,UAAY,IAAIC,KACrB1W,KAAKyW,UACFE,MAAK,IAAMN,EAAS5O,SACpBmP,MAAK,IAAMP,EAAS3O,UAAU,KAC9BmP,QAAO,IAAMR,EAAS3O,SAAS,KAC/BoP,SAAST,EAASnO,SAAS3D,KAAK8R,IAChCU,SAASV,EAAS/R,KAAKC,KAAK8R,IAC5BW,OAAOT,GAEVA,EAAQJ,MAAMT,EAChB,KAEA7L,EAAAA,EAAAA,QAAOyM,IAAAA,UAAsB,qBAAqB,SAAU/W,GAC1D,IAAI0X,EACAC,EACAvJ,EAEAnE,EAAe,IAAIuF,GAAkB,CACvCoI,aAAc,WACZd,EAASxO,SAAS7D,EAAEhE,MAAMyF,SAASqC,QACrC,EACAvG,QAAUY,IACRnC,KAAKI,MAAM0B,SAASU,OAAO4U,oBAAoBF,EAAkB,EAAG/U,EAAc,KAElFkU,EAAS/R,MAAM,IAuFnB/E,EAAO8X,eAAerN,MAnFWsN,KAC/B,MAAMlS,EAAYpF,KAAKI,MAAM0B,SAASU,OAAOC,oBAEvC8U,EAASnS,EAAU,GAEzB,GAAIA,EAAU,GAAKmS,EAAS,EAAG,OAK/B,MAAMC,EAAYxX,KAAKI,MAAM0B,SAASU,OAAOiV,cAAc,IAC3DP,EAAkB,EAClB,IAAIQ,EAAe,KACnB,IAAK,IAAIC,EAAIH,EAAU3U,OAAS,EAAG8U,GAAK,EAAGA,IAAK,CAC9C,MAAMC,EAAYJ,EAAUhM,OAAOmM,EAAG,GAGtC,GAFAD,EAAe/W,IAAAA,eAAAA,IAAuBiX,GAElCF,IAAuB,IAANC,GAAW,KAAKE,KAAKL,EAAUhM,OAAOmM,EAAI,EAAG,KAAM,CACtEV,EAAkBU,EAAI,EACtBT,EAAkBK,EAASC,EAAU3U,OAAS8U,EAAI,EAClDnO,EAAagG,KAAKkI,EAAarO,oBAC/B,KACF,CACF,CAKA,GAHAgN,EAAS/R,OACT+R,EAAS5O,QAAS,EAEdyP,EAAiB,KAAAY,EACnB,MAAM9M,EAAQwM,EAAUO,UAAUd,GAAiB1L,cAGnD,GAFAoC,EAAa+J,EAAahK,eAAe1C,IAEpC2C,EAAY,OAEjBnE,EAAawB,MAAQ2C,EAErB,MAAMkC,EAAmBA,KAGvB,MAAMC,EAActG,EAAaqG,mBAEjC,GAAIC,EAAYjN,OAAQ,CACtBwT,EAASlV,MAAQ2O,EACjBjP,EAAEmT,OAAO0B,EAAW,GAAIW,EAASrC,UAEjCqC,EAASzS,OACT,MAAMoU,EAAchY,KAAKI,MAAM0B,SAASU,OAAOyV,oBAAoBf,GAC7DpD,EAAQuC,EAASrS,IAAIiB,aACrB0O,EAAS0C,EAASrS,IAAIa,cACtBY,EAAS4Q,EAASrS,IAAIE,eAC5B,IAAIL,EAAOmU,EAAYnU,KACnBC,EAAMkU,EAAYlU,IAAM,GAGxBA,EAAM6P,EAASlO,EAAOkO,WACxB7P,EAAMkU,EAAYlU,IAAM6P,EAAS,IAE/B9P,EAAOiQ,EAAQrO,EAAOqO,UACxBjQ,EAAO4B,EAAOqO,QAAUA,GAI1BhQ,EAAMoU,KAAKlI,MAAMvK,EAAOtB,SAASL,IAAME,EAAEQ,UAAUI,aAAcd,GACjED,EAAOqU,KAAKlI,KAAKvK,EAAOtB,SAASN,KAAMA,GAEvCwS,EAASzS,KAAKC,EAAMC,EACtB,MACEuS,EAAS5O,QAAS,EAClB4O,EAAS/R,MACX,EAGF+R,EAAS5O,QAAS,EAElBoI,IAEAwG,EAASxO,SAAS,GAClBwO,EAASrS,IAAIY,UAAU,GAEF,OAArBkT,EAAAtO,EAAakD,WAAboL,EAAuBvU,KAAKsM,EAC9B,IAIJ,KAEAhG,EAAAA,EAAAA,QAAOyM,IAAAA,UAAsB,gBAAgB,SAAUnV,GACrDA,EAAMgQ,IACJ,UACAtQ,EAACsX,IAAgB,CAAC5W,QAASA,IAAMvB,KAAKI,MAAM0B,SAASU,OAAOO,eAAe,MAAOY,KAAK,aACpFhD,IAAAA,WAAAA,MAAqB,mDAG5B,GACF,CLrGEyX,GAEAzX,IAAAA,uBAAAA,cAA2CwP,GAC3CxP,IAAAA,uBAAAA,cAA2CgQ,GAC3ChQ,IAAAA,uBAAAA,eAA4CiQ,IAG5C/G,EAAAA,EAAAA,QAAOwO,IAAAA,UAA4B,qBAAqB,SAAUlX,GAChEA,EAAMgQ,IAAI,gBAAiB,CACzBjG,KAAM,gBACNvH,KAAM,eACN2U,MAAO3X,IAAAA,WAAAA,MAAqB,gEAG9BQ,EAAMgQ,IAAI,gBAAiB,CACzBjG,KAAM,gBACNvH,KAAM,YACN2U,MAAO3X,IAAAA,WAAAA,MAAqB,gEAG9BQ,EAAMgQ,IAAI,iBAAkB,CAC1BjG,KAAM,iBACNvH,KAAM,YACN2U,MAAO3X,IAAAA,WAAAA,MAAqB,gEAEhC,KAGAkJ,EAAAA,EAAAA,QAAO0O,KAAAA,UAAoB,YAAY,SAAUpX,GAC/C,MAAMmJ,EAAOtK,KAAKsK,KAClBnJ,EAAMgQ,IACJ,WACAtQ,EAAC2X,KAAU,CAACnS,KAAM1F,IAAAA,MAAU,gBAAiB,CAAE8J,SAAUH,EAAK2D,SAAW/C,KAAK,WAAWvH,KAAK,aAC3FhD,IAAAA,WAAAA,MAAqB,6CAExB,GAEJ,IAGA8X,EAAAA,gBAAAA,gBAAAA,KAAqC,kBAGrC5O,EAAAA,EAAAA,QAAOuH,IAAAA,UAAgB,YAAY,WACjCpR,KAAKgE,EAAE,gDAAgDkP,MAAK,WAC1DlT,KAAK4O,UAAUuC,IAAIuH,IAAkBC,iBAAiB3Y,MAAM4Y,iBAAiB,YAC/E,GACF,GACF,IAQAva,OAAOwQ,OAAO1P,GAAAA,OAAQ0Z,G","sources":["webpack://@flarum/mentions/webpack/bootstrap","webpack://@flarum/mentions/webpack/runtime/compat get default export","webpack://@flarum/mentions/webpack/runtime/define property getters","webpack://@flarum/mentions/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/mentions/webpack/runtime/make namespace object","webpack://@flarum/mentions/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/textContrastClass']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/PostPreview']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/states/PaginatedListState']\"","webpack://@flarum/mentions/./src/forum/state/MentionedByModalState.ts","webpack://@flarum/mentions/./src/forum/components/MentionedByModal.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/EditPostComposer']\"","webpack://@flarum/mentions/./src/forum/utils/reply.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Fragment']\"","webpack://@flarum/mentions/./src/forum/fragments/PostQuoteButton.js","webpack://@flarum/mentions/./src/forum/utils/selectedText.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/TextEditor']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/TextEditorButton']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/mentions/../../../js-packages/webpack-config/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/mentions/./src/forum/fragments/AutocompleteDropdown.js","webpack://@flarum/mentions/./src/forum/mentionables/formats/MentionFormat.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/mentions/./src/forum/mentionables/MentionableModel.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/mentions/./src/forum/utils/getCleanDisplayName.js","webpack://@flarum/mentions/./src/forum/mentionables/UserMention.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/ReplyComposer']\"","webpack://@flarum/mentions/./src/forum/mentionables/PostMention.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Group']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/mentions/./src/forum/mentionables/GroupMention.tsx","webpack://@flarum/mentions/./src/forum/mentionables/formats/AtMentionFormat.ts","webpack://@flarum/mentions/./src/forum/mentionables/TagMention.tsx","webpack://@flarum/mentions/./src/forum/mentionables/formats/HashMentionFormat.ts","webpack://@flarum/mentions/./src/forum/mentionables/formats/MentionFormats.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/mentions/./src/forum/components/MentionsDropdownItem.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/throttleDebounce']\"","webpack://@flarum/mentions/./src/forum/mentionables/MentionableModels.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/mentions/./src/forum/components/PostMentionedNotification.js","webpack://@flarum/mentions/./src/forum/components/UserMentionedNotification.js","webpack://@flarum/mentions/./src/forum/components/GroupMentionedNotification.js","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/User']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/mentions/./src/forum/components/MentionsUserPage.js","webpack://@flarum/mentions/./src/forum/extend.ts","webpack://@flarum/mentions/./src/forum/utils/textFormatter.js","webpack://@flarum/mentions/./src/forum/compat.js","webpack://@flarum/mentions/./src/forum/utils/getMentionText.js","webpack://@flarum/mentions/./src/forum/extenders/Mentionables.ts","webpack://@flarum/mentions/external assign \"flarum.core\"","webpack://@flarum/mentions/./src/forum/index.js","webpack://@flarum/mentions/./src/forum/addPostMentionPreviews.js","webpack://@flarum/mentions/./src/forum/addMentionedByList.js","webpack://@flarum/mentions/./src/forum/addPostReplyAction.js","webpack://@flarum/mentions/./src/forum/addPostQuoteButton.js","webpack://@flarum/mentions/./src/forum/addComposerAutocomplete.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/textContrastClass'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostPreview'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/states/PaginatedListState'];","import PaginatedListState, { PaginatedListParams } from 'flarum/common/states/PaginatedListState';\nimport Post from 'flarum/common/models/Post';\n\nexport interface MentionedByModalListParams extends PaginatedListParams {\n filter: {\n mentionedPost: string;\n };\n sort?: string;\n page?: {\n offset?: number;\n limit: number;\n };\n}\n\nexport default class MentionedByModalState

      extends PaginatedListState {\n constructor(params: P, page: number = 1) {\n const limit = 10;\n\n params.page = { ...(params.page || {}), limit };\n\n super(params, page, limit);\n }\n\n get type(): string {\n return 'posts';\n }\n}\n","import app from 'flarum/forum/app';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\nimport type Post from 'flarum/common/models/Post';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport MentionedByModalState from '../state/MentionedByModalState';\n\nexport interface IMentionedByModalAttrs extends IInternalModalAttrs {\n post: Post;\n}\n\nexport default class MentionedByModal extends Modal<\n CustomAttrs,\n MentionedByModalState\n> {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.state = new MentionedByModalState({\n filter: {\n mentionedPost: this.attrs.post.id()!,\n },\n sort: 'number',\n });\n\n this.state.refresh();\n }\n\n className(): string {\n return 'MentionedByModal';\n }\n\n title(): Mithril.Children {\n return app.translator.trans('flarum-mentions.forum.mentioned_by.title');\n }\n\n content(): Mithril.Children {\n return (\n <>\n

      \n {this.state.isInitialLoading() ? (\n \n ) : (\n <>\n
        \n {this.state.getPages().map((page) =>\n page.items.map((reply) => (\n
      • \n app.modal.close()} />\n
      • \n ))\n )}\n
      \n \n )}\n
      \n {this.state.hasNext() && (\n
      \n
      \n
      \n \n
      \n
      \n
      \n )}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EditPostComposer'];","import app from 'flarum/forum/app';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\n\nexport function insertMention(post, composer, quote) {\n return new Promise((resolve) => {\n const mention = app.mentionFormats.mentionable('post').replacement(post) + ' ';\n\n // If the composer is empty, then assume we're starting a new reply.\n // In which case we don't want the user to have to confirm if they\n // close the composer straight away.\n if (!composer.fields.content()) {\n composer.body.attrs.originalContent = mention;\n }\n\n const cursorPosition = composer.editor.getSelectionRange()[0];\n const preceding = composer.fields.content().slice(0, cursorPosition);\n const precedingNewlines = preceding.length == 0 ? 0 : 3 - preceding.match(/(\\n{0,2})$/)[0].length;\n\n composer.editor.insertAtCursor(\n Array(precedingNewlines).join('\\n') + // Insert up to two newlines, depending on preceding whitespace\n (quote ? '> ' + mention + quote.trim().replace(/\\n/g, '\\n> ') + '\\n\\n' : mention),\n false\n );\n return resolve(composer);\n });\n}\n\nexport default function reply(post, quote) {\n if (app.composer.bodyMatches(EditPostComposer) && app.composer.body.attrs.post.discussion() === post.discussion()) {\n // If we're already editing a post in the discussion of post we're quoting,\n // insert the mention directly.\n return insertMention(post, app.composer, quote);\n } else {\n // The default \"Reply\" action behavior will only open a new composer if\n // necessary, but it will always be a ReplyComposer, hence the exceptional\n // case above.\n return DiscussionControls.replyAction.call(post.discussion()).then((composer) => insertMention(post, composer, quote));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Fragment'];","import app from 'flarum/forum/app';\nimport Fragment from 'flarum/common/Fragment';\nimport icon from 'flarum/common/helpers/icon';\n\nimport reply from '../utils/reply';\n\nexport default class PostQuoteButton extends Fragment {\n constructor(post) {\n super();\n\n this.post = post;\n }\n\n view() {\n return (\n {\n reply(this.post, this.content);\n }}\n >\n {icon('fas fa-quote-left', { className: 'Button-icon' })}\n {app.translator.trans('flarum-mentions.forum.post.quote_button')}\n \n );\n }\n\n show(left, top) {\n const $this = this.$().show();\n const parentOffset = $this.offsetParent().offset();\n\n $this.css('left', left - parentOffset.left).css('top', top - parentOffset.top);\n\n this.hideHandler = this.hide.bind(this);\n $(document).on('mouseup', this.hideHandler);\n }\n\n showStart(left, top) {\n const $this = this.$();\n\n this.show(left, $(window).scrollTop() + top - $this.outerHeight() - 5);\n }\n\n showEnd(right, bottom) {\n const $this = this.$();\n\n this.show(right - $this.outerWidth(), $(window).scrollTop() + bottom + 5);\n }\n\n hide() {\n this.$().hide();\n $(document).off('mouseup', this.hideHandler);\n }\n}\n","/**\n * Finds the selected text in the provided composer body.\n */\nexport default function selectedText(body) {\n const selection = window.getSelection();\n\n if (!selection.isCollapsed) {\n const range = selection.getRangeAt(0);\n const parent = range.commonAncestorContainer;\n\n if (body[0] === parent || $.contains(body[0], parent)) {\n const clone = $('
      ').append(range.cloneContents());\n\n // Replace emoji images with their shortcode (found in alt attribute)\n clone.find('img.emoji').replaceWith(function () {\n return this.alt;\n });\n\n // Replace all other images with a Markdown image\n clone.find('img').replaceWith(function () {\n return `![](${this.src})`;\n });\n\n // Replace all links with a Markdown link\n clone.find('a').replaceWith(function () {\n return `[${this.innerText}](${this.href})`;\n });\n\n return clone.text();\n }\n }\n return '';\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditorButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import Fragment from 'flarum/common/Fragment';\n\nexport default class AutocompleteDropdown extends Fragment {\n items = [];\n active = false;\n index = 0;\n keyWasJustPressed = false;\n\n view() {\n return (\n
        \n {this.items.map((item) => (\n
      • {item}
      • \n ))}\n
      \n );\n }\n\n show(left, top) {\n this.$()\n .show()\n .css({\n left: left + 'px',\n top: top + 'px',\n });\n this.active = true;\n }\n\n hide() {\n this.$().hide();\n this.active = false;\n }\n\n navigate(delta) {\n this.keyWasJustPressed = true;\n this.setIndex(this.index + delta, true);\n clearTimeout(this.keyWasJustPressedTimeout);\n this.keyWasJustPressedTimeout = setTimeout(() => (this.keyWasJustPressed = false), 500);\n }\n\n complete() {\n this.$('li').eq(this.index).find('button').click();\n }\n\n setIndex(index, scrollToItem) {\n if (this.keyWasJustPressed && !scrollToItem) return;\n\n const $dropdown = this.$();\n const $items = $dropdown.find('li');\n let rangedIndex = index;\n\n if (rangedIndex < 0) {\n rangedIndex = $items.length - 1;\n } else if (rangedIndex >= $items.length) {\n rangedIndex = 0;\n }\n\n this.index = rangedIndex;\n\n const $item = $items.removeClass('active').eq(rangedIndex).addClass('active');\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop();\n const dropdownTop = $dropdown.offset().top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight();\n const itemTop = $item.offset().top;\n const itemBottom = itemTop + $item.outerHeight();\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\n","import type MentionableModel from '../MentionableModel';\nimport type Model from 'flarum/common/Model';\n\nexport default abstract class MentionFormat {\n protected instances?: MentionableModel[];\n\n public makeMentionables(): MentionableModel[] {\n return this.instances ?? (this.instances = this.mentionables.map((Mentionable) => new Mentionable(this)));\n }\n\n public getMentionable(type: string): MentionableModel | null {\n return this.makeMentionables().find((mentionable) => mentionable.type() === type) ?? null;\n }\n\n public extend(mentionable: new (...args: any[]) => MentionableModel): void {\n if (!this.extendable) throw new Error('This mention format does not allow extending.');\n\n this.mentionables.push(mentionable);\n }\n\n abstract mentionables: (new (...args: any[]) => MentionableModel)[];\n\n protected abstract extendable: boolean;\n\n abstract trigger(): string;\n\n /**\n * Picks the term to search in the API from the typed text.\n * @example:\n * * Full text = `Hello @\"John D`\n * * Typed text = `\"John D`\n * * Query = `John D`\n */\n abstract queryFromTyped(typed: string): string | null;\n\n abstract format(...args: any): string;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","import type Mithril from 'mithril';\nimport type Model from 'flarum/common/Model';\nimport type MentionFormat from './formats/MentionFormat';\n\nexport default abstract class MentionableModel {\n public format: Format;\n\n public constructor(format: Format) {\n this.format = format;\n }\n\n abstract type(): string;\n abstract initialResults(): M[];\n abstract search(typed: string): Promise;\n abstract replacement(model: M): string;\n abstract suggestion(model: M, typed: string): Mithril.Children;\n abstract matches(model: M, typed: string): boolean;\n abstract maxStoreMatchedResults(): number | null;\n abstract enabled(): boolean;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","import app from 'flarum/forum/app';\nimport extractText from 'flarum/common/utils/extractText';\n\n/**\n * Whether to use the old mentions format.\n *\n * `'@username'` or `'@\"Display name\"'`\n */\nexport const shouldUseOldFormat = () => app.forum.attribute('allowUsernameMentionFormat') || false;\n\nconst getDeletedUserText = () => extractText(app.translator.trans('core.lib.username.deleted_text'));\n\n/**\n * Fetches a user's username or display name.\n *\n * Chooses based on the format option set in the admin settings page.\n *\n * @param user An instance of the User model to fetch the username for\n * @param useDisplayName If `true`, uses `user.displayName()`, otherwise, uses `user.username()`\n */\nexport default function getCleanDisplayName(user, useDisplayName = true) {\n if (!user) return getDeletedUserText().replace(/\"#[a-z]{0,3}[0-9]+/, '_');\n\n const text = (useDisplayName ? user.displayName() : user.username()) || getDeletedUserText();\n\n return text.replace(/\"#[a-z]{0,3}[0-9]+/, '_');\n}\n","import app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport type User from 'flarum/common/models/User';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport avatar from 'flarum/common/helpers/avatar';\nimport highlight from 'flarum/common/helpers/highlight';\nimport MentionableModel from './MentionableModel';\nimport getCleanDisplayName, { shouldUseOldFormat } from '../utils/getCleanDisplayName';\nimport AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class UserMention extends MentionableModel {\n type(): string {\n return 'user';\n }\n\n initialResults(): User[] {\n return Array.from(app.store.all('users'));\n }\n\n /**\n * Automatically determines which mention syntax to be used based on the option in the\n * admin dashboard. Also performs display name clean-up automatically.\n *\n * @\"Display name\"#UserID or `@username`\n *\n * @example New display name syntax\n * // '@\"user\"#1'\n * forUser(User) // User is ID 1, display name is 'User'\n *\n * @example Using old syntax\n * // '@username'\n * forUser(user) // User's username is 'username'\n */\n public replacement(user: User): string {\n if (shouldUseOldFormat()) {\n const cleanText = getCleanDisplayName(user, false);\n return this.format.format(cleanText);\n }\n\n const cleanText = getCleanDisplayName(user);\n return this.format.format(cleanText, '', user.id());\n }\n\n suggestion(model: User, typed: string): Mithril.Children {\n const username = usernameHelper(model, (name: string) => highlight(name, typed));\n\n return (\n <>\n {avatar(model)}\n {username}\n \n );\n }\n\n matches(model: User, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.username(), model.displayName()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n async search(typed: string): Promise {\n return await app.store.find('users', { filter: { q: typed }, page: { limit: 5 } });\n }\n\n enabled(): boolean {\n return true;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ReplyComposer'];","import app from 'flarum/forum/app';\nimport MentionableModel from './MentionableModel';\nimport type Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport avatar from 'flarum/common/helpers/avatar';\nimport highlight from 'flarum/common/helpers/highlight';\nimport { truncate } from 'flarum/common/utils/string';\nimport ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport getCleanDisplayName from '../utils/getCleanDisplayName';\nimport type AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class PostMention extends MentionableModel {\n type(): string {\n return 'post';\n }\n\n /**\n * If the user is replying to a discussion, or if they are editing a\n * post, then we can suggest other posts in the discussion to mention.\n * We will add the 5 most recent comments in the discussion which\n * match any username characters that have been typed.\n */\n initialResults(): Post[] {\n if (!app.composer.bodyMatches(ReplyComposer) && !app.composer.bodyMatches(EditPostComposer)) {\n return [];\n }\n\n // @ts-ignore\n const composerAttrs = app.composer.body.attrs;\n const composerPost = composerAttrs.post;\n const discussion = (composerPost && composerPost.discussion()) || composerAttrs.discussion;\n\n return (\n discussion\n .posts()\n // Filter to only comment posts, and replies before this message\n .filter((post: Post) => post && post.contentType() === 'comment' && (!composerPost || post.number() < composerPost.number()))\n // Sort by new to old\n .sort((a: Post, b: Post) => b.createdAt().getTime() - a.createdAt().getTime())\n );\n }\n\n /**\n * Generates the syntax for mentioning of a post. Also cleans up the display name.\n *\n * @example Post mention\n * // '@\"User\"#p13'\n * // @\"Display name\"#pPostID\n * forPostMention(user, 13) // User display name is 'User', post ID is 13\n */\n public replacement(post: Post): string {\n const user = post.user();\n const cleanText = getCleanDisplayName(user);\n return this.format.format(cleanText, 'p', post.id());\n }\n\n suggestion(model: Post, typed: string): Mithril.Children {\n const user = model.user() || null;\n const username = usernameHelper(user, (name: string) => highlight(name, typed));\n\n return (\n <>\n {avatar(user)}\n {username}\n {[\n app.translator.trans('flarum-mentions.forum.composer.reply_to_post_text', { number: model.number() }),\n ' — ',\n truncate(model.contentPlain() ?? '', 200),\n ]}\n \n );\n }\n\n matches(model: Post, typed: string): boolean {\n const user = model.user();\n const userMentionable = app.mentionFormats.mentionable('user')!;\n\n return !typed || (user && userMentionable.matches(user, typed));\n }\n\n maxStoreMatchedResults(): number {\n return 5;\n }\n\n /**\n * Post mention suggestions are only offered from current discussion posts.\n */\n search(typed: string): Promise {\n return Promise.resolve([]);\n }\n\n enabled(): boolean {\n return true;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import app from 'flarum/forum/app';\nimport Group from 'flarum/common/models/Group';\nimport MentionableModel from './MentionableModel';\nimport type Mithril from 'mithril';\nimport Badge from 'flarum/common/components/Badge';\nimport highlight from 'flarum/common/helpers/highlight';\nimport type AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class GroupMention extends MentionableModel {\n type(): string {\n return 'group';\n }\n\n initialResults(): Group[] {\n return Array.from(\n app.store.all('groups').filter((g: Group) => {\n return g.id() !== Group.GUEST_ID && g.id() !== Group.MEMBER_ID;\n })\n );\n }\n\n /**\n * Generates the mention syntax for a group mention.\n *\n * @\"Name Plural\"#gGroupID\n *\n * @example Group mention\n * // '@\"Mods\"#g4'\n * forGroup(group) // Group display name is 'Mods', group ID is 4\n */\n public replacement(group: Group): string {\n return this.format.format(group.namePlural(), 'g', group.id());\n }\n\n suggestion(model: Group, typed: string): Mithril.Children {\n let groupName: Mithril.Children = model.namePlural();\n\n if (typed) {\n groupName = highlight(groupName, typed);\n }\n\n return (\n <>\n \n {groupName}\n \n );\n }\n\n matches(model: Group, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.namePlural().toLowerCase(), model.nameSingular().toLowerCase()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n /**\n * All groups are already loaded, so we don't need to search for them.\n */\n search(typed: string): Promise {\n return Promise.resolve([]);\n }\n\n enabled(): boolean {\n return app.session?.user?.canMentionGroups() ?? false;\n }\n}\n","import MentionFormat from './MentionFormat';\nimport type MentionableModel from '../MentionableModel';\nimport UserMention from '../UserMention';\nimport PostMention from '../PostMention';\nimport GroupMention from '../GroupMention';\n\nexport default class AtMentionFormat extends MentionFormat {\n public mentionables: (new (...args: any[]) => MentionableModel)[] = [UserMention, PostMention, GroupMention];\n protected extendable: boolean = true;\n\n public trigger(): string {\n return '@';\n }\n\n public queryFromTyped(typed: string): string | null {\n const matchTyped = typed.match(/^[\"“]?((?:(?!\"#).)+)$/);\n\n return matchTyped ? matchTyped[1] : null;\n }\n\n public format(name: string, char: string | null = '', id: string | null = null): string {\n return {\n simple: `@${name}`,\n safe: `@\"${name}\"#${char}${id}`,\n }[id ? 'safe' : 'simple'];\n }\n}\n","import app from 'flarum/forum/app';\nimport Badge from 'flarum/common/components/Badge';\nimport highlight from 'flarum/common/helpers/highlight';\nimport type Tag from 'flarum/tags/common/models/Tag';\nimport type Mithril from 'mithril';\nimport MentionableModel from './MentionableModel';\nimport type HashMentionFormat from './formats/HashMentionFormat';\n\nexport default class TagMention extends MentionableModel {\n type(): string {\n return 'tag';\n }\n\n initialResults(): Tag[] {\n return Array.from(app.store.all('tags'));\n }\n\n /**\n * Generates the mention syntax for a tag mention.\n *\n * ~tagSlug\n *\n * @example Tag mention\n * // ~general\n * forTag(tag) // Tag display name is 'Tag', tag ID is 5\n */\n public replacement(tag: Tag): string {\n return this.format.format(tag.slug());\n }\n\n matches(model: Tag, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.name().toLowerCase()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n async search(typed: string): Promise {\n return await app.store.find('tags', { filter: { q: typed }, page: { limit: 5 } });\n }\n\n suggestion(model: Tag, typed: string): Mithril.Children {\n let tagName: Mithril.Children = model.name();\n\n if (typed) {\n tagName = highlight(tagName, typed);\n }\n\n return (\n <>\n \n {tagName}\n \n );\n }\n\n enabled(): boolean {\n return 'flarum-tags' in flarum.extensions;\n }\n}\n","import MentionFormat from './MentionFormat';\nimport MentionableModel from '../MentionableModel';\nimport TagMention from '../TagMention';\n\nexport default class HashMentionFormat extends MentionFormat {\n public mentionables: (new (...args: any[]) => MentionableModel)[] = [TagMention];\n protected extendable: boolean = false;\n\n public trigger(): string {\n return '#';\n }\n\n public queryFromTyped(typed: string): string | null {\n const matchTyped = typed.match(/^[-_\\p{L}\\p{N}\\p{M}]+$/giu);\n\n return matchTyped ? matchTyped[0] : null;\n }\n\n public format(slug: string): string {\n return `#${slug}`;\n }\n}\n","import AtMentionFormat from './AtMentionFormat';\nimport HashMentionFormat from './HashMentionFormat';\nimport type MentionFormat from './MentionFormat';\nimport MentionableModel from '../MentionableModel';\n\nexport default class MentionFormats {\n protected formats: MentionFormat[] = [new AtMentionFormat(), new HashMentionFormat()];\n\n public get(symbol: string): MentionFormat | null {\n return this.formats.find((f) => f.trigger() === symbol) ?? null;\n }\n\n public mentionable(type: string): MentionableModel | null {\n for (const format of this.formats) {\n const mentionable = format.getMentionable(type);\n\n if (mentionable) return mentionable;\n }\n\n return null;\n }\n\n public extend(format: new () => MentionFormat) {\n this.formats.push(new format());\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import Component from 'flarum/common/Component';\nimport type { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport type MentionableModel from '../mentionables/MentionableModel';\nimport type Mithril from 'mithril';\n\nexport interface IMentionsDropdownItemAttrs extends ComponentAttrs {\n mentionable: MentionableModel;\n onclick: () => void;\n onmouseenter: () => void;\n}\n\nexport default class MentionsDropdownItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { mentionable, ...attrs } = this.attrs;\n\n const className = classList('MentionsDropdownItem', 'PostPreview', `MentionsDropdown-${mentionable.type()}`);\n\n return (\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/throttleDebounce'];","import type MentionableModel from './MentionableModel';\nimport type Model from 'flarum/common/Model';\nimport type Mithril from 'mithril';\nimport MentionsDropdownItem from '../components/MentionsDropdownItem';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\n\nexport default class MentionableModels {\n protected mentionables?: MentionableModel[];\n /**\n * We store models returned from an API here to preserve order in which they are returned\n * This prevents the list jumping around while models are returned.\n * We also use a hashmap for model IDs to provide O(1) lookup for the users already in the list.\n */\n private results: Record> = {};\n public typed: string | null = null;\n private searched: string[] = [];\n private dropdownItemAttrs: Record = {};\n\n constructor(dropdownItemAttrs: Record) {\n this.dropdownItemAttrs = dropdownItemAttrs;\n }\n\n public init(mentionables: MentionableModel[]): void {\n this.typed = null;\n this.mentionables = mentionables;\n\n for (const mentionable of this.mentionables) {\n this.results[mentionable.type()] = new Map(mentionable.initialResults().map((result) => [result.id() as string, result]));\n }\n }\n\n /**\n * Don't send API calls searching for models until at least 2 characters have been typed.\n * This focuses the mention results on models already loaded.\n */\n public readonly search = throttle(250, async (): Promise => {\n if (!this.typed || this.typed.length <= 1) return;\n\n const typedLower = this.typed.toLowerCase();\n\n if (this.searched.includes(typedLower)) return;\n\n for (const mentionable of this.mentionables!) {\n for (const model of await mentionable.search(typedLower)) {\n if (!this.results[mentionable.type()].has(model.id() as string)) {\n this.results[mentionable.type()].set(model.id() as string, model);\n }\n }\n }\n\n this.searched.push(typedLower);\n\n return Promise.resolve();\n });\n\n public matches(mentionable: MentionableModel, model: Model): boolean {\n return mentionable.matches(model, this.typed?.toLowerCase() || '');\n }\n\n public makeSuggestion(mentionable: MentionableModel, model: Model): Mithril.Children {\n const content = mentionable.suggestion(model, this.typed!);\n const replacement = mentionable.replacement(model);\n\n const { onclick, ...attrs } = this.dropdownItemAttrs;\n\n return (\n onclick(replacement)} {...attrs}>\n {content}\n \n );\n }\n\n public buildSuggestions(): Mithril.Children {\n const suggestions: Mithril.Children = [];\n\n for (const mentionable of this.mentionables!) {\n if (!mentionable.enabled()) continue;\n\n let matches = Array.from(this.results[mentionable.type()].values()).filter((model) => this.matches(mentionable, model));\n\n const max = mentionable.maxStoreMatchedResults();\n if (max) matches = matches.splice(0, max);\n\n for (const model of matches) {\n const dropdownItem = this.makeSuggestion(mentionable, model);\n suggestions.push(dropdownItem);\n }\n }\n\n return suggestions;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostMentionedNotification extends Notification {\n icon() {\n return 'fas fa-reply';\n }\n\n href() {\n const notification = this.attrs.notification;\n const post = notification.subject();\n const content = notification.content();\n\n return app.route.discussion(post.discussion(), content && content.replyNumber);\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.post_mentioned_text', { user, count: 1 });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain() || '', 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class UserMentionedNotification extends Notification {\n icon() {\n return 'fas fa-at';\n }\n\n href() {\n const post = this.attrs.notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.user_mentioned_text', { user });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class GroupMentionedNotification extends Notification {\n icon() {\n return 'fas fa-at';\n }\n\n href() {\n const post = this.attrs.notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.group_mentioned_text', { user });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `MentionsUserPage` component shows post which user Mentioned at\n */\nexport default class MentionsUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param {Integer} [offset] The position to start getting results from.\n * @return {Promise}\n * @protected\n */\n loadResults(offset) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n mentioned: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport MentionsUserPage from './components/MentionsUserPage';\n\nexport default [\n new Extend.Routes() //\n .add('user.mentions', '/u/:username/mentions', MentionsUserPage),\n\n new Extend.Model(Post) //\n .hasMany('mentionedBy')\n .attribute('mentionedByCount'),\n\n new Extend.Model(User) //\n .attribute('canMentionGroups'),\n];\n","import app from 'flarum/forum/app';\nimport username from 'flarum/common/helpers/username';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport function filterUserMentions(tag) {\n let user;\n\n if (app.forum.attribute('allowUsernameMentionFormat') && tag.hasAttribute('username'))\n user = app.store.getBy('users', 'username', tag.getAttribute('username'));\n else if (tag.hasAttribute('id')) user = app.store.getById('users', tag.getAttribute('id'));\n\n if (user) {\n tag.setAttribute('id', user.id());\n tag.setAttribute('slug', user.slug());\n tag.setAttribute('displayname', extractText(username(user)));\n\n return true;\n }\n\n tag.invalidate();\n}\n\nexport function postFilterUserMentions(tag) {\n tag.setAttribute('deleted', false);\n}\n\nexport function filterPostMentions(tag) {\n const post = app.store.getById('posts', tag.getAttribute('id'));\n\n if (post) {\n tag.setAttribute('discussionid', post.discussion().id());\n tag.setAttribute('number', post.number());\n tag.setAttribute('displayname', extractText(username(post.user())));\n\n return true;\n }\n}\n\nexport function postFilterPostMentions(tag) {\n tag.setAttribute('deleted', false);\n}\n\nexport function filterGroupMentions(tag) {\n if (app.session?.user?.canMentionGroups()) {\n const group = app.store.getById('groups', tag.getAttribute('id'));\n\n if (group) {\n tag.setAttribute('groupname', extractText(group.namePlural()));\n\n return true;\n }\n }\n\n tag.invalidate();\n}\n\nexport function postFilterGroupMentions(tag) {\n if (app.session?.user?.canMentionGroups()) {\n const group = app.store.getById('groups', tag.getAttribute('id'));\n\n tag.setAttribute('color', group.color());\n tag.setAttribute('icon', group.icon());\n tag.setAttribute('deleted', false);\n }\n}\n\nexport function filterTagMentions(tag) {\n if ('flarum-tags' in flarum.extensions) {\n const model = app.store.getBy('tags', 'slug', tag.getAttribute('slug'));\n\n if (model) {\n tag.setAttribute('id', model.id());\n tag.setAttribute('tagname', model.name());\n\n return true;\n }\n }\n\n tag.invalidate();\n}\n\nexport function postFilterTagMentions(tag) {\n if ('flarum-tags' in flarum.extensions) {\n const model = app.store.getBy('tags', 'slug', tag.getAttribute('slug'));\n\n tag.setAttribute('icon', model.icon());\n tag.setAttribute('color', model.color());\n tag.setAttribute('deleted', false);\n }\n}\n","import GroupMentionedNotification from './components/GroupMentionedNotification';\nimport MentionsUserPage from './components/MentionsUserPage';\nimport PostMentionedNotification from './components/PostMentionedNotification';\nimport UserMentionedNotification from './components/UserMentionedNotification';\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport PostQuoteButton from './fragments/PostQuoteButton';\nimport getCleanDisplayName from './utils/getCleanDisplayName';\nimport getMentionText from './utils/getMentionText';\nimport * as reply from './utils/reply';\nimport selectedText from './utils/selectedText';\nimport * as textFormatter from './utils/textFormatter';\nimport MentionableModel from './mentionables/MentionableModel';\nimport MentionFormat from './mentionables/formats/MentionFormat';\nimport Mentionables from './extenders/Mentionables';\n\nexport default {\n 'mentions/components/MentionsUserPage': MentionsUserPage,\n 'mentions/components/PostMentionedNotification': PostMentionedNotification,\n 'mentions/components/UserMentionedNotification': UserMentionedNotification,\n 'mentions/components/GroupMentionedNotification': GroupMentionedNotification,\n 'mentions/fragments/AutocompleteDropdown': AutocompleteDropdown,\n 'mentions/fragments/PostQuoteButton': PostQuoteButton,\n 'mentions/utils/getCleanDisplayName': getCleanDisplayName,\n 'mentions/utils/getMentionText': getMentionText,\n 'mentions/utils/reply': reply,\n 'mentions/utils/selectedText': selectedText,\n 'mentions/utils/textFormatter': textFormatter,\n 'mentions/mentionables/MentionableModel': MentionableModel,\n 'mentions/mentionables/formats/MentionFormat': MentionFormat,\n 'mentions/extenders/Mentionables': Mentionables,\n};\n","import app from 'flarum/forum/app';\n\n/**\n * Fetches the mention text for a specified user (and optionally a post ID for replies or group).\n *\n * Automatically determines which mention syntax to be used based on the option in the\n * admin dashboard. Also performs display name clean-up automatically.\n *\n * @deprecated Use `app.mentionables.get('user').replacement(user)` instead. Will be removed in 2.0.\n */\nexport default function getMentionText(user, postId, group) {\n if (user !== undefined && postId === undefined) {\n return app.mentionables.get('user').replacement(user);\n } else if (user !== undefined && postId !== undefined) {\n return app.mentionables.get('post').replacement(app.store.getById('posts', postId));\n } else if (group !== undefined) {\n return app.mentionables.get('group').replacement(group);\n }\n\n throw 'No parameters were passed';\n}\n","import type ForumApplication from 'flarum/forum/ForumApplication';\nimport type IExtender from 'flarum/common/extenders/IExtender';\nimport type MentionableModel from '../mentionables/MentionableModel';\nimport type MentionFormat from '../mentionables/formats/MentionFormat';\n\nexport default class Mentionables implements IExtender {\n protected formats: (new () => MentionFormat)[] = [];\n protected mentionables: Record MentionableModel)[]> = {};\n\n /**\n * Register a new mention format.\n * Must extend MentionFormat and have a unique unused trigger symbol.\n */\n format(format: new () => MentionFormat): this {\n this.formats.push(format);\n\n return this;\n }\n\n /**\n * Register a new mentionable model to a mention format.\n * Only works if the format has already been registered,\n * and the format allows using multiple mentionables.\n *\n * @param symbol The trigger symbol of the format to extend (ex: @).\n * @param mentionable The mentionable instance to register.\n * Must extend MentionableModel.\n */\n mentionable(symbol: string, mentionable: new () => MentionableModel): this {\n if (!this.mentionables[symbol]) {\n this.mentionables[symbol] = [];\n }\n\n this.mentionables[symbol].push(mentionable);\n\n return this;\n }\n\n extend(app: ForumApplication): void {\n for (const format of this.formats) {\n app.mentionFormats.extend(format);\n }\n\n for (const symbol in this.mentionables) {\n const format = app.mentionFormats.get(symbol);\n\n if (!format) continue;\n\n for (const mentionable of this.mentionables[symbol]) {\n format.extend(mentionable);\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\nimport { getPlainContent } from 'flarum/common/utils/string';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport Post from 'flarum/forum/components/Post';\n\nimport addPostMentionPreviews from './addPostMentionPreviews';\nimport addMentionedByList from './addMentionedByList';\nimport addPostReplyAction from './addPostReplyAction';\nimport addPostQuoteButton from './addPostQuoteButton';\nimport addComposerAutocomplete from './addComposerAutocomplete';\nimport PostMentionedNotification from './components/PostMentionedNotification';\nimport UserMentionedNotification from './components/UserMentionedNotification';\nimport GroupMentionedNotification from './components/GroupMentionedNotification';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-mentions', function () {\n // For every mention of a post inside a post's content, set up a hover handler\n // that shows a preview of the mentioned post.\n addPostMentionPreviews();\n\n // In the footer of each post, show information about who has replied (i.e.\n // who the post has been mentioned by).\n addMentionedByList();\n\n // Add a 'reply' control to the footer of each post. When clicked, it will\n // open up the composer and add a post mention to its contents.\n addPostReplyAction();\n\n // Show a Quote button when Post text is selected\n addPostQuoteButton();\n\n // After typing '@' in the composer, show a dropdown suggesting a bunch of\n // posts or users that the user could mention.\n addComposerAutocomplete();\n\n app.notificationComponents.postMentioned = PostMentionedNotification;\n app.notificationComponents.userMentioned = UserMentionedNotification;\n app.notificationComponents.groupMentioned = GroupMentionedNotification;\n\n // Add notification preferences.\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postMentioned', {\n name: 'postMentioned',\n icon: 'fas fa-reply',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_post_mentioned_label'),\n });\n\n items.add('userMentioned', {\n name: 'userMentioned',\n icon: 'fas fa-at',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_user_mentioned_label'),\n });\n\n items.add('groupMentioned', {\n name: 'groupMentioned',\n icon: 'fas fa-at',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_group_mentioned_label'),\n });\n });\n\n // Add mentions tab in user profile\n extend(UserPage.prototype, 'navItems', function (items) {\n const user = this.user;\n items.add(\n 'mentions',\n \n {app.translator.trans('flarum-mentions.forum.user.mentions_link')}\n ,\n 80\n );\n });\n\n // Remove post mentions when rendering post previews.\n getPlainContent.removeSelectors.push('a.PostMention');\n\n // Apply color contrast fix on group mentions.\n extend(Post.prototype, 'oncreate', function () {\n this.$('.GroupMention--colored, .TagMention--colored').each(function () {\n this.classList.add(textContrastClass(getComputedStyle(this).getPropertyValue('--color')));\n });\n });\n});\n\nexport * from './utils/textFormatter';\n\n// Expose compat API\nimport mentionsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, mentionsCompat);\n","import { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default function addPostMentionPreviews() {\n function addPreviews() {\n const contentHtml = this.attrs.post.contentHtml();\n\n if (contentHtml === this.oldPostContentHtml || this.isEditing()) return;\n\n this.oldPostContentHtml = contentHtml;\n\n const parentPost = this.attrs.post;\n const $parentPost = this.$();\n\n this.$().on(\n 'click',\n '.UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted), .TagMention:not(.TagMention--deleted)',\n function (e) {\n m.route.set(this.getAttribute('href'));\n e.preventDefault();\n }\n );\n\n this.$('.PostMention:not(.PostMention--deleted)').each(function () {\n const $this = $(this);\n const id = $this.data('id');\n let timeout;\n\n // Wrap the mention link in a wrapper element so that we can insert a\n // preview popup as its sibling and relatively position it.\n const $preview = $('
        ');\n $parentPost.append($preview);\n\n const getPostElement = () => {\n return $(`.PostStream-item[data-id=\"${id}\"]`);\n };\n\n const showPreview = () => {\n // When the user hovers their mouse over the mention, look for the\n // post that it's referring to in the stream, and determine if it's\n // in the viewport. If it is, we will \"pulsate\" it.\n const $post = getPostElement();\n let visible = false;\n if ($post.length) {\n const top = $post.offset().top;\n const scrollTop = window.pageYOffset;\n if (top > scrollTop && top + $post.height() < scrollTop + $(window).height()) {\n $post.addClass('pulsate');\n visible = true;\n }\n }\n\n // Otherwise, we will show a popup preview of the post. If the post\n // hasn't yet been loaded, we will need to do that.\n if (!visible) {\n // Position the preview so that it appears above the mention.\n // (The offsetParent should be .Post-body.)\n const positionPreview = () => {\n const previewHeight = $preview.outerHeight(true);\n let offset = 0;\n\n // If the preview goes off the top of the viewport, reposition it to\n // be below the mention.\n if ($this.offset().top - previewHeight < $(window).scrollTop() + $('#header').outerHeight()) {\n offset += $this.outerHeight(true);\n } else {\n offset -= previewHeight;\n }\n\n $preview\n .show()\n .css('top', $this.offset().top - $parentPost.offset().top + offset)\n .css('left', $this.offsetParent().offset().left - $parentPost.offset().left)\n .css('max-width', $this.offsetParent().width());\n };\n\n const showPost = (post) => {\n const discussion = post.discussion();\n\n m.render($preview[0], [\n discussion !== parentPost.discussion() && (\n
      • \n {discussion.title()}\n
      • \n ),\n
      • \n \n
      • ,\n ]);\n positionPreview();\n };\n\n const post = app.store.getById('posts', id);\n if (post && post.discussion()) {\n showPost(post);\n } else {\n m.render($preview[0], );\n app.store.find('posts', id).then(showPost);\n positionPreview();\n }\n\n setTimeout(() => $preview.off('transitionend').addClass('in'));\n }\n };\n\n const hidePreview = () => {\n getPostElement().removeClass('pulsate');\n if ($preview.hasClass('in')) {\n $preview.removeClass('in').one('transitionend', () => $preview.hide());\n }\n };\n\n // On a touch (mobile) device we cannot hover the link to reveal the preview.\n // Instead we cancel the navigation so that a click reveals the preview.\n // Users can then click on the preview to go to the post if desired.\n $this.on('touchend', (e) => {\n if (e.cancelable) {\n e.preventDefault();\n }\n });\n\n $this\n .add($preview)\n .hover(\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(showPreview, 250);\n },\n () => {\n clearTimeout(timeout);\n getPostElement().removeClass('pulsate');\n timeout = setTimeout(hidePreview, 250);\n }\n )\n .on('touchend', (e) => {\n showPreview();\n e.stopPropagation();\n });\n\n $(document).on('touchend', hidePreview);\n });\n }\n\n extend(CommentPost.prototype, 'oncreate', addPreviews);\n extend(CommentPost.prototype, 'onupdate', addPreviews);\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\nimport MentionedByModal from './components/MentionedByModal';\n\nexport default function addMentionedByList() {\n function hidePreview() {\n this.$('.Post-mentionedBy-preview')\n .removeClass('in')\n .one('transitionend', function () {\n $(this).hide();\n });\n }\n\n extend(CommentPost.prototype, 'oncreate', function () {\n let timeout;\n const post = this.attrs.post;\n const replies = post.mentionedBy();\n\n if (replies && replies.length) {\n const $preview = $('
          ');\n this.$().append($preview);\n\n const $parentPost = this.$();\n const $this = this.$('.Post-mentionedBy');\n\n const showPreview = () => {\n if (!$preview.hasClass('in') && $preview.is(':visible')) return;\n\n // When the user hovers their mouse over the list of people who have\n // replied to the post, render a list of reply previews into a\n // popup.\n m.render(\n $preview[0],\n <>\n {replies.map((reply) => (\n
        • \n \n
        • \n ))}\n {replies.length < post.mentionedByCount() && (\n
        • \n {\n hidePreview.call(this);\n app.modal.show(MentionedByModal, { post });\n }}\n >\n \n {icon('fas fa-reply-all')}\n \n {app.translator.trans('flarum-mentions.forum.post.mentioned_by_more_text', { count: post.mentionedByCount() - replies.length })}\n \n \n \n
        • \n )}\n \n );\n\n $preview\n .show()\n .css('top', $this.offset().top - $parentPost.offset().top + $this.outerHeight(true))\n .css('left', $this.offsetParent().offset().left - $parentPost.offset().left)\n .css('max-width', $parentPost.width());\n\n setTimeout(() => $preview.off('transitionend').addClass('in'));\n };\n\n $this.add($preview).hover(\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(showPreview, 250);\n },\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(hidePreview, 250);\n }\n );\n\n // Whenever the user hovers their mouse over a particular name in the\n // list of repliers, highlight the corresponding post in the preview\n // popup.\n this.$()\n .find('.Post-mentionedBy-summary a')\n .hover(\n function () {\n $preview.find('[data-number=\"' + $(this).data('number') + '\"]').addClass('active');\n },\n function () {\n $preview.find('[data-number]').removeClass('active');\n }\n );\n }\n });\n\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const replies = post.mentionedBy();\n\n if (replies && replies.length) {\n const users = [];\n const repliers = replies\n .sort((reply) => (reply.user() === app.session.user ? -1 : 0))\n .filter((reply) => {\n const user = reply.user();\n if (users.indexOf(user) === -1) {\n users.push(user);\n return true;\n }\n });\n\n const limit = 4;\n const overLimit = repliers.length > limit;\n\n // Create a list of unique users who have replied. So even if a user has\n // replied twice, they will only be in this array once.\n const names = repliers.slice(0, overLimit ? limit - 1 : limit).map((reply) => {\n const user = reply.user();\n\n return (\n \n {app.session.user === user ? app.translator.trans('flarum-mentions.forum.post.you_text') : username(user)}\n \n );\n });\n\n // If there are more users that we've run out of room to display, add a \"x\n // others\" name to the end of the list. Clicking on it will display a modal\n // with a full list of names.\n if (overLimit) {\n const count = repliers.length - names.length;\n\n names.push(app.translator.trans('flarum-mentions.forum.post.others_text', { count }));\n }\n\n items.add(\n 'replies',\n
          \n \n {icon('fas fa-reply')}\n {app.translator.trans(`flarum-mentions.forum.post.mentioned_by${repliers[0].user() === app.session.user ? '_self' : ''}_text`, {\n count: names.length,\n users: punctuateSeries(names),\n })}\n \n
          \n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport reply from './utils/reply';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || (app.session.user && !post.discussion().canReply())) return;\n\n items.add(\n 'reply',\n \n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport PostQuoteButton from './fragments/PostQuoteButton';\nimport selectedText from './utils/selectedText';\n\nexport default function addPostQuoteButton() {\n extend(CommentPost.prototype, 'oncreate', function () {\n const post = this.attrs.post;\n\n if (post.isHidden() || (app.session.user && !post.discussion().canReply())) return;\n\n const $postBody = this.$('.Post-body');\n\n // Wrap the quote button in a wrapper element so that we can render\n // button into it.\n const $container = $('
          ');\n\n const button = new PostQuoteButton(post);\n\n const handler = function (e) {\n setTimeout(() => {\n const content = selectedText($postBody);\n if (content) {\n button.content = content;\n m.render($container[0], button.render());\n\n const rects = window.getSelection().getRangeAt(0).getClientRects();\n const firstRect = rects[0];\n\n if (e.clientY < firstRect.bottom && e.clientX - firstRect.right < firstRect.left - e.clientX) {\n button.showStart(firstRect.left, firstRect.top);\n } else {\n const lastRect = rects[rects.length - 1];\n button.showEnd(lastRect.right, lastRect.bottom);\n }\n }\n }, 1);\n };\n\n this.$().after($container).on('mouseup', handler);\n\n if ('ontouchstart' in window) {\n document.addEventListener('selectionchange', handler, false);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport TextEditor from 'flarum/common/components/TextEditor';\nimport TextEditorButton from 'flarum/common/components/TextEditorButton';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\n\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport MentionFormats from './mentionables/formats/MentionFormats';\nimport MentionableModels from './mentionables/MentionableModels';\n\nexport default function addComposerAutocomplete() {\n app.mentionFormats = new MentionFormats();\n\n const $container = $('
          ');\n const dropdown = new AutocompleteDropdown();\n\n extend(TextEditor.prototype, 'oncreate', function () {\n const $editor = this.$('.TextEditor-editor').wrap('
          ');\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when(() => dropdown.active)\n .onUp(() => dropdown.navigate(-1))\n .onDown(() => dropdown.navigate(1))\n .onSelect(dropdown.complete.bind(dropdown))\n .onCancel(dropdown.hide.bind(dropdown))\n .bindTo($editor);\n\n $editor.after($container);\n });\n\n extend(TextEditor.prototype, 'buildEditorParams', function (params) {\n let relMentionStart;\n let absMentionStart;\n let matchTyped;\n\n let mentionables = new MentionableModels({\n onmouseenter: function () {\n dropdown.setIndex($(this).parent().index());\n },\n onclick: (replacement) => {\n this.attrs.composer.editor.replaceBeforeCursor(absMentionStart - 1, replacement + ' ');\n\n dropdown.hide();\n },\n });\n\n const suggestionsInputListener = () => {\n const selection = this.attrs.composer.editor.getSelectionRange();\n\n const cursor = selection[0];\n\n if (selection[1] - cursor > 0) return;\n\n // Search backwards from the cursor for a mention triggering symbol. If we find one,\n // we will want to show the correct autocomplete dropdown!\n // Check classes implementing the IMentionableModel interface to see triggering symbols.\n const lastChunk = this.attrs.composer.editor.getLastNChars(30);\n absMentionStart = 0;\n let activeFormat = null;\n for (let i = lastChunk.length - 1; i >= 0; i--) {\n const character = lastChunk.substr(i, 1);\n activeFormat = app.mentionFormats.get(character);\n\n if (activeFormat && (i === 0 || /\\s/.test(lastChunk.substr(i - 1, 1)))) {\n relMentionStart = i + 1;\n absMentionStart = cursor - lastChunk.length + i + 1;\n mentionables.init(activeFormat.makeMentionables());\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (absMentionStart) {\n const typed = lastChunk.substring(relMentionStart).toLowerCase();\n matchTyped = activeFormat.queryFromTyped(typed);\n\n if (!matchTyped) return;\n\n mentionables.typed = matchTyped;\n\n const buildSuggestions = () => {\n // If the user has started to type a mention,\n // then suggest models matching.\n const suggestions = mentionables.buildSuggestions();\n\n if (suggestions.length) {\n dropdown.items = suggestions;\n m.render($container[0], dropdown.render());\n\n dropdown.show();\n const coordinates = this.attrs.composer.editor.getCaretCoordinates(absMentionStart);\n const width = dropdown.$().outerWidth();\n const height = dropdown.$().outerHeight();\n const parent = dropdown.$().offsetParent();\n let left = coordinates.left;\n let top = coordinates.top + 15;\n\n // Keep the dropdown inside the editor.\n if (top + height > parent.height()) {\n top = coordinates.top - height - 15;\n }\n if (left + width > parent.width()) {\n left = parent.width() - width;\n }\n\n // Prevent the dropdown from going off screen on mobile\n top = Math.max(-(parent.offset().top - $(document).scrollTop()), top);\n left = Math.max(-parent.offset().left, left);\n\n dropdown.show(left, top);\n } else {\n dropdown.active = false;\n dropdown.hide();\n }\n };\n\n dropdown.active = true;\n\n buildSuggestions();\n\n dropdown.setIndex(0);\n dropdown.$().scrollTop(0);\n\n mentionables.search()?.then(buildSuggestions);\n }\n };\n\n params.inputListeners.push(suggestionsInputListener);\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n items.add(\n 'mention',\n this.attrs.composer.editor.insertAtCursor(' @')} icon=\"fas fa-at\">\n {app.translator.trans('flarum-mentions.forum.composer.mention_tooltip')}\n \n );\n });\n}\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","MentionedByModalState","PaginatedListState","constructor","params","page","limit","super","type","MentionedByModal","Modal","oninit","vnode","this","state","filter","mentionedPost","attrs","post","id","sort","refresh","className","title","app","content","m","'['","isInitialLoading","LoadingIndicator","getPages","map","items","reply","number","PostPreview","onclick","hasNext","Button","loadNext","loading","isLoadingNext","insertMention","composer","quote","Promise","resolve","mention","replacement","fields","body","originalContent","cursorPosition","editor","getSelectionRange","preceding","slice","precedingNewlines","length","match","insertAtCursor","Array","join","trim","replace","EditPostComposer","discussion","DiscussionControls","then","PostQuoteButton","Fragment","view","icon","show","left","top","$this","$","parentOffset","offsetParent","offset","css","hideHandler","hide","bind","document","on","showStart","window","scrollTop","outerHeight","showEnd","right","bottom","outerWidth","off","selectedText","selection","getSelection","isCollapsed","range","getRangeAt","parent","commonAncestorContainer","contains","clone","append","cloneContents","find","replaceWith","alt","concat","src","innerText","href","text","_typeof","iterator","_defineProperty","arg","input","hint","prim","toPrimitive","undefined","res","TypeError","String","toPropertyKey","configurable","writable","AutocompleteDropdown","arguments","item","active","navigate","delta","keyWasJustPressed","setIndex","index","clearTimeout","keyWasJustPressedTimeout","setTimeout","complete","eq","click","scrollToItem","$dropdown","$items","rangedIndex","$item","removeClass","addClass","dropdownScroll","dropdownTop","dropdownBottom","itemTop","itemBottom","parseInt","stop","animate","MentionFormat","makeMentionables","_this$instances","instances","mentionables","Mentionable","getMentionable","_this$makeMentionable","mentionable","extend","extendable","Error","push","MentionableModel","format","getDeletedUserText","extractText","getCleanDisplayName","user","useDisplayName","displayName","username","UserMention","initialResults","from","cleanText","suggestion","model","typed","usernameHelper","name","highlight","avatar","matches","some","toLowerCase","substr","maxStoreMatchedResults","async","q","enabled","PostMention","ReplyComposer","composerAttrs","composerPost","posts","contentType","b","createdAt","getTime","_model$contentPlain","truncate","contentPlain","userMentionable","search","GroupMention","g","Group","group","namePlural","groupName","Badge","color","nameSingular","_app$session$user$can","_app$session","_app$session$user","canMentionGroups","AtMentionFormat","trigger","queryFromTyped","matchTyped","char","simple","safe","TagMention","tag","slug","tagName","extensions","HashMentionFormat","MentionFormats","symbol","_this$formats$find","formats","f","MentionsDropdownItem","Component","classList","assign","children","MentionableModels","dropdownItemAttrs","throttle","typedLower","searched","includes","results","has","set","init","Map","result","_this$typed","makeSuggestion","buildSuggestions","suggestions","values","max","splice","dropdownItem","PostMentionedNotification","Notification","notification","subject","replyNumber","fromUser","count","excerpt","UserMentionedNotification","GroupMentionedNotification","MentionsUserPage","PostsUserPage","loadResults","mentioned","loadLimit","Extend","add","Post","hasMany","attribute","User","filterUserMentions","hasAttribute","getAttribute","setAttribute","invalidate","postFilterUserMentions","filterPostMentions","postFilterPostMentions","filterGroupMentions","postFilterGroupMentions","_app$session2","_app$session2$user","filterTagMentions","postFilterTagMentions","postId","textFormatter","mentionFormats","addPreviews","contentHtml","oldPostContentHtml","isEditing","parentPost","$parentPost","e","route","preventDefault","each","data","timeout","$preview","getPostElement","showPreview","$post","visible","pageYOffset","height","positionPreview","previewHeight","width","showPost","render","store","getById","hidePreview","hasClass","one","cancelable","hover","stopPropagation","CommentPost","addPostMentionPreviews","replies","mentionedBy","is","mentionedByCount","users","repliers","indexOf","overLimit","names","Link","punctuateSeries","addMentionedByList","isHidden","canReply","$postBody","$container","button","handler","rects","getClientRects","firstRect","clientY","clientX","lastRect","after","addEventListener","dropdown","TextEditor","$editor","wrap","navigator","KeyboardNavigatable","when","onUp","onDown","onSelect","onCancel","bindTo","relMentionStart","absMentionStart","onmouseenter","replaceBeforeCursor","inputListeners","suggestionsInputListener","cursor","lastChunk","getLastNChars","activeFormat","i","character","test","_mentionables$search","substring","coordinates","getCaretCoordinates","Math","TextEditorButton","addComposerAutocomplete","NotificationGrid","label","UserPage","LinkButton","getPlainContent","textContrastClass","getComputedStyle","getPropertyValue","mentionsCompat"],"sourceRoot":""} \ No newline at end of file diff --git a/framework/core/js/dist-typings/common/helpers/username.d.ts b/framework/core/js/dist-typings/common/helpers/username.d.ts index 6a4f403e1..1b98ee54e 100644 --- a/framework/core/js/dist-typings/common/helpers/username.d.ts +++ b/framework/core/js/dist-typings/common/helpers/username.d.ts @@ -4,4 +4,4 @@ import User from '../models/User'; * The `username` helper displays a user's username in a * tag. If the user doesn't exist, the username will be displayed as [deleted]. */ -export default function username(user: User | null | undefined | false): Mithril.Vnode; +export default function username(user: User | null | undefined | false, transformer?: (name: string) => Mithril.Children): Mithril.Vnode; diff --git a/framework/core/js/dist/admin.js b/framework/core/js/dist/admin.js index 3e25807dd..e00f47a2b 100644 --- a/framework/core/js/dist/admin.js +++ b/framework/core/js/dist/admin.js @@ -1,3 +1,3 @@ /*! For license information please see admin.js.LICENSE.txt */ -(()=>{var t={1859:()=>{Array.prototype.flat||(Array.prototype.flat=function t(e){return(null!=e?e:1)>0?Array.prototype.reduce.call(this,((n,r)=>n.concat(Array.isArray(r)?t.call(r,e-1):r)),[]):[...this]})},9043:()=>{!function(t){"use strict";var e=function(n,r){this.options=t.extend({},e.DEFAULTS,r);var i=this.options.target===e.DEFAULTS.target?t(this.options.target):t(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(n),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function n(n){return this.each((function(){var r=t(this),i=r.data("bs.affix"),s="object"==typeof n&&n;i||r.data("bs.affix",i=new e(this,s)),"string"==typeof n&&i[n]()}))}e.VERSION="3.4.1",e.RESET="affix affix-top affix-bottom",e.DEFAULTS={offset:0,target:window},e.prototype.getState=function(t,e,n,r){var i=this.$target.scrollTop(),s=this.$element.offset(),o=this.$target.height();if(null!=n&&"top"==this.affixed)return i=t-r&&"bottom"},e.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(e.RESET).addClass("affix");var t=this.$target.scrollTop(),n=this.$element.offset();return this.pinnedOffset=n.top-t},e.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},e.prototype.checkPosition=function(){if(this.$element.is(":visible")){var n=this.$element.height(),r=this.options.offset,i=r.top,s=r.bottom,o=Math.max(t(document).height(),t(document.body).height());"object"!=typeof r&&(s=i=r),"function"==typeof i&&(i=r.top(this.$element)),"function"==typeof s&&(s=r.bottom(this.$element));var a=this.getState(o,n,i,s);if(this.affixed!=a){null!=this.unpin&&this.$element.css("top","");var l="affix"+(a?"-"+a:""),c=t.Event(l+".bs.affix");if(this.$element.trigger(c),c.isDefaultPrevented())return;this.affixed=a,this.unpin="bottom"==a?this.getPinnedOffset():null,this.$element.removeClass(e.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==a&&this.$element.offset({top:o-n-s})}};var r=t.fn.affix;t.fn.affix=n,t.fn.affix.Constructor=e,t.fn.affix.noConflict=function(){return t.fn.affix=r,this},t(window).on("load",(function(){t('[data-spy="affix"]').each((function(){var e=t(this),r=e.data();r.offset=r.offset||{},null!=r.offsetBottom&&(r.offset.bottom=r.offsetBottom),null!=r.offsetTop&&(r.offset.top=r.offsetTop),n.call(e,r)}))}))}(jQuery)},6199:()=>{!function(t){"use strict";var e='[data-toggle="dropdown"]',n=function(e){t(e).on("click.bs.dropdown",this.toggle)};function r(e){var n=e.attr("data-target");n||(n=(n=e.attr("href"))&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var r="#"!==n?t(document).find(n):null;return r&&r.length?r:e.parent()}function i(n){n&&3===n.which||(t(".dropdown-backdrop").remove(),t(e).each((function(){var e=t(this),i=r(e),s={relatedTarget:this};i.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(i[0],n.target)||(i.trigger(n=t.Event("hide.bs.dropdown",s)),n.isDefaultPrevented()||(e.attr("aria-expanded","false"),i.removeClass("open").trigger(t.Event("hidden.bs.dropdown",s)))))})))}n.VERSION="3.4.1",n.prototype.toggle=function(e){var n=t(this);if(!n.is(".disabled, :disabled")){var s=r(n),o=s.hasClass("open");if(i(),!o){"ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",i);var a={relatedTarget:this};if(s.trigger(e=t.Event("show.bs.dropdown",a)),e.isDefaultPrevented())return;n.trigger("focus").attr("aria-expanded","true"),s.toggleClass("open").trigger(t.Event("shown.bs.dropdown",a))}return!1}},n.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var i=t(this);if(n.preventDefault(),n.stopPropagation(),!i.is(".disabled, :disabled")){var s=r(i),o=s.hasClass("open");if(!o&&27!=n.which||o&&27==n.which)return 27==n.which&&s.find(e).trigger("focus"),i.trigger("click");var a=s.find(".dropdown-menu li:not(.disabled):visible a");if(a.length){var l=a.index(n.target);38==n.which&&l>0&&l--,40==n.which&&l{!function(t){"use strict";var e=["sanitize","whiteList","sanitizeFn"],n=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],r=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,i=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function s(e,s){var o=e.nodeName.toLowerCase();if(-1!==t.inArray(o,s))return-1===t.inArray(o,n)||Boolean(e.nodeValue.match(r)||e.nodeValue.match(i));for(var a=t(s).filter((function(t,e){return e instanceof RegExp})),l=0,c=a.length;l
      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]}},a.prototype.init=function(e,n,r){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(r),this.$viewport=this.options.viewport&&t(document).find(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var i=this.options.trigger.split(" "),s=i.length;s--;){var o=i[s];if("click"==o)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=o){var a="hover"==o?"mouseenter":"focusin",l="hover"==o?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},a.prototype.getDefaults=function(){return a.DEFAULTS},a.prototype.getOptions=function(n){var r=this.$element.data();for(var i in r)r.hasOwnProperty(i)&&-1!==t.inArray(i,e)&&delete r[i];return(n=t.extend({},this.getDefaults(),r,n)).delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.sanitize&&(n.template=o(n.template,n.whiteList,n.sanitizeFn)),n},a.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,(function(t,r){n[t]!=r&&(e[t]=r)})),e},a.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState)n.hoverState="in";else{if(clearTimeout(n.timeout),n.hoverState="in",!n.options.delay||!n.options.delay.show)return n.show();n.timeout=setTimeout((function(){"in"==n.hoverState&&n.show()}),n.options.delay.show)}},a.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},a.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue()){if(clearTimeout(n.timeout),n.hoverState="out",!n.options.delay||!n.options.delay.hide)return n.hide();n.timeout=setTimeout((function(){"out"==n.hoverState&&n.hide()}),n.options.delay.hide)}},a.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var n=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!n)return;var r=this,i=this.tip(),s=this.getUID(this.type);this.setContent(),i.attr("id",s),this.$element.attr("aria-describedby",s),this.options.animation&&i.addClass("fade");var o="function"==typeof this.options.placement?this.options.placement.call(this,i[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,c=l.test(o);c&&(o=o.replace(l,"")||"top"),i.detach().css({top:0,left:0,display:"block"}).addClass(o).data("bs."+this.type,this),this.options.container?i.appendTo(t(document).find(this.options.container)):i.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var u=this.getPosition(),d=i[0].offsetWidth,h=i[0].offsetHeight;if(c){var p=o,f=this.getPosition(this.$viewport);o="bottom"==o&&u.bottom+h>f.bottom?"top":"top"==o&&u.top-hf.width?"left":"left"==o&&u.left-do.top+o.height&&(i.top=o.top+o.height-l)}else{var c=e.left-s,u=e.left+s+n;co.right&&(i.left=o.left+o.width-u)}return i},a.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},a.prototype.getUID=function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},a.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},a.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},a.prototype.enable=function(){this.enabled=!0},a.prototype.disable=function(){this.enabled=!1},a.prototype.toggleEnabled=function(){this.enabled=!this.enabled},a.prototype.toggle=function(e){var n=this;e&&((n=t(e.currentTarget).data("bs."+this.type))||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},a.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide((function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null}))},a.prototype.sanitizeHtml=function(t){return o(t,this.options.whiteList,this.options.sanitizeFn)};var l=t.fn.tooltip;t.fn.tooltip=function(e){return this.each((function(){var n=t(this),r=n.data("bs.tooltip"),i="object"==typeof e&&e;!r&&/destroy|hide/.test(e)||(r||n.data("bs.tooltip",r=new a(this,i)),"string"==typeof e&&r[e]())}))},t.fn.tooltip.Constructor=a,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=l,this}}(jQuery)},6935:()=>{!function(t){"use strict";t.fn.emulateTransitionEnd=function(e){var n=!1,r=this;return t(this).one("bsTransitionEnd",(function(){n=!0})),setTimeout((function(){n||t(r).trigger(t.support.transition.end)}),e),this},t((function(){t.support.transition=function(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})}))}(jQuery)},2898:t=>{var e=function(t){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas),this.width=this.canvas.width=t.width,this.height=this.canvas.height=t.height,this.context.drawImage(t,0,0,this.width,this.height)};e.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},e.prototype.update=function(t){this.context.putImageData(t,0,0)},e.prototype.getPixelCount=function(){return this.width*this.height},e.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)},e.prototype.removeCanvas=function(){this.canvas.parentNode.removeChild(this.canvas)};var n=function(){};if(n.prototype.getColor=function(t,e){return this.getPalette(t,5,e)[0]},n.prototype.getPalette=function(t,n,r){void 0===n&&(n=10),(void 0===r||1>r)&&(r=10);for(var s,o,a,l,c=new e(t),u=c.getImageData().data,d=c.getPixelCount(),h=[],p=0;d>p;p+=r)o=u[0+(s=4*p)],a=u[s+1],l=u[s+2],u[s+3]>=125&&(o>250&&a>250&&l>250||h.push([o,a,l]));var f=i.quantize(h,n),m=f?f.palette():null;return c.removeCanvas(),m},!r)var r={map:function(t,e){var n={};return e?t.map((function(t,r){return n.index=r,e.call(n,t)})):t.slice()},naturalOrder:function(t,e){return e>t?-1:t>e?1:0},sum:function(t,e){var n={};return t.reduce(e?function(t,r,i){return n.index=i,t+e.call(n,r)}:function(t,e){return t+e},0)},max:function(t,e){return Math.max.apply(null,e?r.map(t,e):t)}};var i=function(){function t(t,e,n){return(t<<2*l)+(e<>c,i=e[1]>>c,s=e[2]>>c,n=t(r,i,s),o[n]=(o[n]||0)+1})),o}function o(t,e){var r,i,s,o=1e6,a=0,l=1e6,u=0,d=1e6,h=0;return t.forEach((function(t){r=t[0]>>c,i=t[1]>>c,s=t[2]>>c,o>r?o=r:r>a&&(a=r),l>i?l=i:i>u&&(u=i),d>s?d=s:s>h&&(h=s)})),new n(o,a,l,u,d,h,e)}function a(e,n){if(n.count()){var i=n.r2-n.r1+1,s=n.g2-n.g1+1,o=n.b2-n.b1+1,a=r.max([i,s,o]);if(1==n.count())return[n.copy()];var l,c,u,d,h=0,p=[],f=[];if(a==i)for(l=n.r1;l<=n.r2;l++){for(d=0,c=n.g1;c<=n.g2;c++)for(u=n.b1;u<=n.b2;u++)d+=e[t(l,c,u)]||0;h+=d,p[l]=h}else if(a==s)for(l=n.g1;l<=n.g2;l++){for(d=0,c=n.r1;c<=n.r2;c++)for(u=n.b1;u<=n.b2;u++)d+=e[t(c,l,u)]||0;h+=d,p[l]=h}else for(l=n.b1;l<=n.b2;l++){for(d=0,c=n.r1;c<=n.r2;c++)for(u=n.g1;u<=n.g2;u++)d+=e[t(c,u,l)]||0;h+=d,p[l]=h}return p.forEach((function(t,e){f[e]=h-t})),function(t){var e,r,i,s,o,a=t+"1",c=t+"2",u=0;for(l=n[a];l<=n[c];l++)if(p[l]>h/2){for(i=n.copy(),s=n.copy(),e=l-n[a],o=(r=n[c]-l)>=e?Math.min(n[c]-1,~~(l+r/2)):Math.max(n[a],~~(l-1-e/2));!p[o];)o++;for(u=f[o];!u&&p[o-1];)u=f[--o];return i[c]=o,s[a]=i[c]+1,[i,s]}}(a==i?"r":a==s?"g":"b")}}var l=5,c=8-l;return n.prototype={volume:function(t){var e=this;return(!e._volume||t)&&(e._volume=(e.r2-e.r1+1)*(e.g2-e.g1+1)*(e.b2-e.b1+1)),e._volume},count:function(e){var n=this,r=n.histo;if(!n._count_set||e){var i,s,o,a=0;for(i=n.r1;i<=n.r2;i++)for(s=n.g1;s<=n.g2;s++)for(o=n.b1;o<=n.b2;o++)index=t(i,s,o),a+=r[index]||0;n._count=a,n._count_set=!0}return n._count},copy:function(){var t=this;return new n(t.r1,t.r2,t.g1,t.g2,t.b1,t.b2,t.histo)},avg:function(e){var n=this,r=n.histo;if(!n._avg||e){var i,s,o,a,c=0,u=1<<8-l,d=0,h=0,p=0;for(s=n.r1;s<=n.r2;s++)for(o=n.g1;o<=n.g2;o++)for(a=n.b1;a<=n.b2;a++)c+=i=r[t(s,o,a)]||0,d+=i*(s+.5)*u,h+=i*(o+.5)*u,p+=i*(a+.5)*u;n._avg=c?[~~(d/c),~~(h/c),~~(p/c)]:[~~(u*(n.r1+n.r2+1)/2),~~(u*(n.g1+n.g2+1)/2),~~(u*(n.b1+n.b2+1)/2)]}return n._avg},contains:function(t){var e=this,n=t[0]>>c;return gval=t[1]>>c,bval=t[2]>>c,n>=e.r1&&n<=e.r2&&gval>=e.g1&&gval<=e.g2&&bval>=e.b1&&bval<=e.b2}},i.prototype={push:function(t){this.vboxes.push({vbox:t,color:t.avg()})},palette:function(){return this.vboxes.map((function(t){return t.color}))},size:function(){return this.vboxes.size()},map:function(t){for(var e=this.vboxes,n=0;n(n=Math.sqrt(Math.pow(t[0]-i.peek(s).color[0],2)+Math.pow(t[1]-i.peek(s).color[1],2)+Math.pow(t[2]-i.peek(s).color[2],2)))||void 0===e)&&(e=n,r=i.peek(s).color);return r},forcebw:function(){var t=this.vboxes;t.sort((function(t,e){return r.naturalOrder(r.sum(t.color),r.sum(e.color))}));var e=t[0].color;e[0]<5&&e[1]<5&&e[2]<5&&(t[0].color=[0,0,0]);var n=t.length-1,i=t[n].color;i[0]>251&&i[1]>251&&i[2]>251&&(t[n].color=[255,255,255])}},{quantize:function(t,n){function l(t,e){for(var n,r=1,i=0;1e3>i;)if((n=t.pop()).count()){var s=a(c,n),o=s[0],l=s[1];if(!o)return;if(t.push(o),l&&(t.push(l),r++),r>=e)return;if(i++>1e3)return}else t.push(n),i++}if(!t.length||2>n||n>256)return!1;var c=s(t);c.forEach((function(){}));var u=o(t,c),d=new e((function(t,e){return r.naturalOrder(t.count(),e.count())}));d.push(u),l(d,.75*n);for(var h=new e((function(t,e){return r.naturalOrder(t.count()*t.volume(),e.count()*e.volume())}));d.size();)h.push(d.pop());l(h,n-h.size());for(var p=new i;h.size();)p.push(h.pop());return p}}}();t.exports=n},4757:function(t){t.exports=function(){"use strict";var t=6e4,e=36e5,n="millisecond",r="second",i="minute",s="hour",o="day",a="week",l="month",c="quarter",u="year",d="date",h="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},g=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:g,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function t(e,n){if(e.date()1)return t(o[0])}else{var a=e.name;y[a]=e,i=a}return!r&&i&&(b=i),i||!r&&b},N=function(t,e){if(w(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},E=v;E.l=x,E.i=w,E.w=function(t,e){return N(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function m(t){this.$L=x(t.locale,null,!0),this.parse(t)}var g=m.prototype;return g.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(E.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(p);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},g.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},g.$utils=function(){return E},g.isValid=function(){return!(this.$d.toString()===h)},g.isSame=function(t,e){var n=N(t);return this.startOf(e)<=n&&n<=this.endOf(e)},g.isAfter=function(t,e){return N(t)0,g<=m.r||!m.r){g<=1&&f>0&&(m=h[f-1]);var v=d[m.l];a&&(g=a(""+g)),c="string"==typeof v?v.replace("%d",g):v(g,r,m.l,u);break}}if(r)return c;var b=u?d.future:d.past;return"function"==typeof b?b(c):b.replace("%s",c)},r.to=function(t,e){return s(t,e,this,!0)},r.from=function(t,e){return s(t,e,this)};var o=function(t){return t.$u?n.utc():n()};r.toNow=function(t){return this.to(o(this),t)},r.fromNow=function(t){return this.from(o(this),t)}}}()},356:(t,e,n)=>{"use strict";t.exports=function(){if("object"==typeof globalThis)return globalThis;var t;try{t=this||new Function("return this")()}catch(t){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return t}()},9411:function(){!function(t){function e(e){if("string"==typeof e.data&&(e.data={keys:e.data}),e.data&&e.data.keys&&"string"==typeof e.data.keys){var n=e.handler,r=e.data.keys.toLowerCase().split(" ");e.handler=function(e){if(this===e.target||!(t.hotkeys.options.filterInputAcceptingElements&&t.hotkeys.textInputTypes.test(e.target.nodeName)||t.hotkeys.options.filterContentEditable&&t(e.target).attr("contenteditable")||t.hotkeys.options.filterTextInputs&&t.inArray(e.target.type,t.hotkeys.textAcceptingInputTypes)>-1)){var i="keypress"!==e.type&&t.hotkeys.specialKeys[e.which],s=String.fromCharCode(e.which).toLowerCase(),o="",a={};t.each(["alt","ctrl","shift"],(function(t,n){e[n+"Key"]&&i!==n&&(o+=n+"+")})),e.metaKey&&!e.ctrlKey&&"meta"!==i&&(o+="meta+"),e.metaKey&&"meta"!==i&&o.indexOf("alt+ctrl+shift+")>-1&&(o=o.replace("alt+ctrl+shift+","hyper+")),i?a[o+i]=!0:(a[o+s]=!0,a[o+t.hotkeys.shiftNums[s]]=!0,"shift+"===o&&(a[t.hotkeys.shiftNums[s]]=!0));for(var l=0,c=r.length;l","/":"?","\\":"|"},textAcceptingInputTypes:["text","password","number","email","url","range","date","month","week","time","datetime","datetime-local","search","color","tel"],textInputTypes:/textarea|input|select/i,options:{filterInputAcceptingElements:!0,filterTextInputs:!0,filterContentEditable:!0}},t.each(["keydown","keyup","keypress"],(function(){t.event.special[this]={add:e}}))}(jQuery||this.jQuery||window.jQuery)},9152:function(t,e){var n;!function(e,n){"use strict";"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,(function(r,i){"use strict";var s=[],o=Object.getPrototypeOf,a=s.slice,l=s.flat?function(t){return s.flat.call(t)}:function(t){return s.concat.apply([],t)},c=s.push,u=s.indexOf,d={},h=d.toString,p=d.hasOwnProperty,f=p.toString,m=f.call(Object),g={},v=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},b=function(t){return null!=t&&t===t.window},y=r.document,w={type:!0,src:!0,nonce:!0,noModule:!0};function x(t,e,n){var r,i,s=(n=n||y).createElement("script");if(s.text=t,e)for(r in w)(i=e[r]||e.getAttribute&&e.getAttribute(r))&&s.setAttribute(r,i);n.head.appendChild(s).parentNode.removeChild(s)}function N(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?d[h.call(t)]||"object":typeof t}var E="3.6.1",_=function(t,e){return new _.fn.init(t,e)};function T(t){var e=!!t&&"length"in t&&t.length,n=N(t);return!v(t)&&!b(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}_.fn=_.prototype={jquery:E,constructor:_,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=_.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return _.each(this,t)},map:function(t){return this.pushStack(_.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(_.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(_.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|[\\x20\\t\\r\\n\\f])[\\x20\\t\\r\\n\\f]*"),W=new RegExp(B+"|>"),G=new RegExp(H),V=new RegExp("^"+$+"$"),Y={ID:new RegExp("^#("+$+")"),CLASS:new RegExp("^\\.("+$+")"),TAG:new RegExp("^("+$+"|[*])"),ATTR:new RegExp("^"+R),PSEUDO:new RegExp("^"+H),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),bool:new RegExp("^(?:"+M+")$","i"),needsContext:new RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)","i")},K=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\([^\\r\\n\\f])","g"),nt=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},rt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,it=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},st=function(){h()},ot=wt((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{I.apply(D=j.call(x.childNodes),x.childNodes),D[x.childNodes.length].nodeType}catch(t){I={apply:D.length?function(t,e){O.apply(t,j.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function at(t,e,r,i){var s,a,c,u,d,f,v,b=e&&e.ownerDocument,x=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==x&&9!==x&&11!==x)return r;if(!i&&(h(e),e=e||p,m)){if(11!==x&&(d=Z.exec(t)))if(s=d[1]){if(9===x){if(!(c=e.getElementById(s)))return r;if(c.id===s)return r.push(c),r}else if(b&&(c=b.getElementById(s))&&y(e,c)&&c.id===s)return r.push(c),r}else{if(d[2])return I.apply(r,e.getElementsByTagName(t)),r;if((s=d[3])&&n.getElementsByClassName&&e.getElementsByClassName)return I.apply(r,e.getElementsByClassName(s)),r}if(n.qsa&&!S[t+" "]&&(!g||!g.test(t))&&(1!==x||"object"!==e.nodeName.toLowerCase())){if(v=t,b=e,1===x&&(W.test(t)||z.test(t))){for((b=tt.test(t)&&vt(e.parentNode)||e)===e&&n.scope||((u=e.getAttribute("id"))?u=u.replace(rt,it):e.setAttribute("id",u=w)),a=(f=o(t)).length;a--;)f[a]=(u?"#"+u:":scope")+" "+yt(f[a]);v=f.join(",")}try{return I.apply(r,b.querySelectorAll(v)),r}catch(e){S(t,!0)}finally{u===w&&e.removeAttribute("id")}}}return l(t.replace(q,"$1"),e,r,i)}function lt(){var t=[];return function e(n,i){return t.push(n+" ")>r.cacheLength&&delete e[t.shift()],e[n+" "]=i}}function ct(t){return t[w]=!0,t}function ut(t){var e=p.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function dt(t,e){for(var n=t.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=e}function ht(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function pt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function ft(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function mt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ot(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function gt(t){return ct((function(e){return e=+e,ct((function(n,r){for(var i,s=t([],n.length,e),o=s.length;o--;)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))}))}))}function vt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in n=at.support={},s=at.isXML=function(t){var e=t&&t.namespaceURI,n=t&&(t.ownerDocument||t).documentElement;return!K.test(e||n&&n.nodeName||"HTML")},h=at.setDocument=function(t){var e,i,o=t?t.ownerDocument||t:x;return o!=p&&9===o.nodeType&&o.documentElement?(f=(p=o).documentElement,m=!s(p),x!=p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",st,!1):i.attachEvent&&i.attachEvent("onunload",st)),n.scope=ut((function(t){return f.appendChild(t).appendChild(p.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length})),n.attributes=ut((function(t){return t.className="i",!t.getAttribute("className")})),n.getElementsByTagName=ut((function(t){return t.appendChild(p.createComment("")),!t.getElementsByTagName("*").length})),n.getElementsByClassName=Q.test(p.getElementsByClassName),n.getById=ut((function(t){return f.appendChild(t).id=w,!p.getElementsByName||!p.getElementsByName(w).length})),n.getById?(r.filter.ID=function(t){var e=t.replace(et,nt);return function(t){return t.getAttribute("id")===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&m){var n=e.getElementById(t);return n?[n]:[]}}):(r.filter.ID=function(t){var e=t.replace(et,nt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&m){var n,r,i,s=e.getElementById(t);if(s){if((n=s.getAttributeNode("id"))&&n.value===t)return[s];for(i=e.getElementsByName(t),r=0;s=i[r++];)if((n=s.getAttributeNode("id"))&&n.value===t)return[s]}return[]}}),r.find.TAG=n.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):n.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,s=e.getElementsByTagName(t);if("*"===t){for(;n=s[i++];)1===n.nodeType&&r.push(n);return r}return s},r.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&m)return e.getElementsByClassName(t)},v=[],g=[],(n.qsa=Q.test(p.querySelectorAll))&&(ut((function(t){var e;f.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),t.querySelectorAll("[selected]").length||g.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|"+M+")"),t.querySelectorAll("[id~="+w+"-]").length||g.push("~="),(e=p.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||g.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),t.querySelectorAll(":checked").length||g.push(":checked"),t.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]"),t.querySelectorAll("\\\f"),g.push("[\\r\\n\\f]")})),ut((function(t){t.innerHTML="";var e=p.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&g.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),f.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=Q.test(b=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut((function(t){n.disconnectedMatch=b.call(t,"*"),b.call(t,"[s!='']:x"),v.push("!=",H)})),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),e=Q.test(f.compareDocumentPosition),y=e||Q.test(f.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},k=e?function(t,e){if(t===e)return d=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!n.sortDetached&&e.compareDocumentPosition(t)===r?t==p||t.ownerDocument==x&&y(x,t)?-1:e==p||e.ownerDocument==x&&y(x,e)?1:u?L(u,t)-L(u,e):0:4&r?-1:1)}:function(t,e){if(t===e)return d=!0,0;var n,r=0,i=t.parentNode,s=e.parentNode,o=[t],a=[e];if(!i||!s)return t==p?-1:e==p?1:i?-1:s?1:u?L(u,t)-L(u,e):0;if(i===s)return ht(t,e);for(n=t;n=n.parentNode;)o.unshift(n);for(n=e;n=n.parentNode;)a.unshift(n);for(;o[r]===a[r];)r++;return r?ht(o[r],a[r]):o[r]==x?-1:a[r]==x?1:0},p):p},at.matches=function(t,e){return at(t,null,null,e)},at.matchesSelector=function(t,e){if(h(t),n.matchesSelector&&m&&!S[e+" "]&&(!v||!v.test(e))&&(!g||!g.test(e)))try{var r=b.call(t,e);if(r||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){S(e,!0)}return at(e,p,null,[t]).length>0},at.contains=function(t,e){return(t.ownerDocument||t)!=p&&h(t),y(t,e)},at.attr=function(t,e){(t.ownerDocument||t)!=p&&h(t);var i=r.attrHandle[e.toLowerCase()],s=i&&A.call(r.attrHandle,e.toLowerCase())?i(t,e,!m):void 0;return void 0!==s?s:n.attributes||!m?t.getAttribute(e):(s=t.getAttributeNode(e))&&s.specified?s.value:null},at.escape=function(t){return(t+"").replace(rt,it)},at.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},at.uniqueSort=function(t){var e,r=[],i=0,s=0;if(d=!n.detectDuplicates,u=!n.sortStable&&t.slice(0),t.sort(k),d){for(;e=t[s++];)e===t[s]&&(i=r.push(s));for(;i--;)t.splice(r[i],1)}return u=null,t},i=at.getText=function(t){var e,n="",r=0,s=t.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=i(t)}else if(3===s||4===s)return t.nodeValue}else for(;e=t[r++];)n+=i(e);return n},r=at.selectors={cacheLength:50,createPseudo:ct,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,nt),t[3]=(t[3]||t[4]||t[5]||"").replace(et,nt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||at.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&at.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return Y.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&G.test(n)&&(e=o(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,nt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=_[t+" "];return e||(e=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+t+"("+B+"|$)"))&&_(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(r){var i=at.attr(r,t);return null==i?"!="===e:!e||(i+="","="===e?i===n:"!="===e?i!==n:"^="===e?n&&0===i.indexOf(n):"*="===e?n&&i.indexOf(n)>-1:"$="===e?n&&i.slice(-n.length)===n:"~="===e?(" "+i.replace(F," ")+" ").indexOf(n)>-1:"|="===e&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,r,i){var s="nth"!==t.slice(0,3),o="last"!==t.slice(-4),a="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,l){var c,u,d,h,p,f,m=s!==o?"nextSibling":"previousSibling",g=e.parentNode,v=a&&e.nodeName.toLowerCase(),b=!l&&!a,y=!1;if(g){if(s){for(;m;){for(h=e;h=h[m];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;f=m="only"===t&&!f&&"nextSibling"}return!0}if(f=[o?g.firstChild:g.lastChild],o&&b){for(y=(p=(c=(u=(d=(h=g)[w]||(h[w]={}))[h.uniqueID]||(d[h.uniqueID]={}))[t]||[])[0]===N&&c[1])&&c[2],h=p&&g.childNodes[p];h=++p&&h&&h[m]||(y=p=0)||f.pop();)if(1===h.nodeType&&++y&&h===e){u[t]=[N,p,y];break}}else if(b&&(y=p=(c=(u=(d=(h=e)[w]||(h[w]={}))[h.uniqueID]||(d[h.uniqueID]={}))[t]||[])[0]===N&&c[1]),!1===y)for(;(h=++p&&h&&h[m]||(y=p=0)||f.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++y||(b&&((u=(d=h[w]||(h[w]={}))[h.uniqueID]||(d[h.uniqueID]={}))[t]=[N,y]),h!==e)););return(y-=i)===r||y%r==0&&y/r>=0}}},PSEUDO:function(t,e){var n,i=r.pseudos[t]||r.setFilters[t.toLowerCase()]||at.error("unsupported pseudo: "+t);return i[w]?i(e):i.length>1?(n=[t,t,"",e],r.setFilters.hasOwnProperty(t.toLowerCase())?ct((function(t,n){for(var r,s=i(t,e),o=s.length;o--;)t[r=L(t,s[o])]=!(n[r]=s[o])})):function(t){return i(t,0,n)}):i}},pseudos:{not:ct((function(t){var e=[],n=[],r=a(t.replace(q,"$1"));return r[w]?ct((function(t,e,n,i){for(var s,o=r(t,null,i,[]),a=t.length;a--;)(s=o[a])&&(t[a]=!(e[a]=s))})):function(t,i,s){return e[0]=t,r(e,null,s,n),e[0]=null,!n.pop()}})),has:ct((function(t){return function(e){return at(t,e).length>0}})),contains:ct((function(t){return t=t.replace(et,nt),function(e){return(e.textContent||i(e)).indexOf(t)>-1}})),lang:ct((function(t){return V.test(t||"")||at.error("unsupported lang: "+t),t=t.replace(et,nt).toLowerCase(),function(e){var n;do{if(n=m?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===f},focus:function(t){return t===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:mt(!1),disabled:mt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!r.pseudos.empty(t)},header:function(t){return J.test(t.nodeName)},input:function(t){return X.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:gt((function(){return[0]})),last:gt((function(t,e){return[e-1]})),eq:gt((function(t,e,n){return[n<0?n+e:n]})),even:gt((function(t,e){for(var n=0;ne?e:n;--r>=0;)t.push(r);return t})),gt:gt((function(t,e,n){for(var r=n<0?n+e:n;++r1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function Nt(t,e,n,r,i){for(var s,o=[],a=0,l=t.length,c=null!=e;a-1&&(s[c]=!(o[c]=d))}}else v=Nt(v===o?v.splice(f,v.length):v),i?i(null,o,v,l):I.apply(o,v)}))}function _t(t){for(var e,n,i,s=t.length,o=r.relative[t[0].type],a=o||r.relative[" "],l=o?1:0,u=wt((function(t){return t===e}),a,!0),d=wt((function(t){return L(e,t)>-1}),a,!0),h=[function(t,n,r){var i=!o&&(r||n!==c)||((e=n).nodeType?u(t,n,r):d(t,n,r));return e=null,i}];l1&&xt(h),l>1&&yt(t.slice(0,l-1).concat({value:" "===t[l-2].type?"*":""})).replace(q,"$1"),n,l0,i=t.length>0,s=function(s,o,a,l,u){var d,f,g,v=0,b="0",y=s&&[],w=[],x=c,E=s||i&&r.find.TAG("*",u),_=N+=null==x?1:Math.random()||.1,T=E.length;for(u&&(c=o==p||o||u);b!==T&&null!=(d=E[b]);b++){if(i&&d){for(f=0,o||d.ownerDocument==p||(h(d),a=!m);g=t[f++];)if(g(d,o||p,a)){l.push(d);break}u&&(N=_)}n&&((d=!g&&d)&&v--,s&&y.push(d))}if(v+=b,n&&b!==v){for(f=0;g=e[f++];)g(y,w,o,a);if(s){if(v>0)for(;b--;)y[b]||w[b]||(w[b]=P.call(l));w=Nt(w)}I.apply(l,w),u&&!s&&w.length>0&&v+e.length>1&&at.uniqueSort(l)}return u&&(N=_,c=x),y};return n?ct(s):s}(s,i)),a.selector=t}return a},l=at.select=function(t,e,n,i){var s,l,c,u,d,h="function"==typeof t&&t,p=!i&&o(t=h.selector||t);if(n=n||[],1===p.length){if((l=p[0]=p[0].slice(0)).length>2&&"ID"===(c=l[0]).type&&9===e.nodeType&&m&&r.relative[l[1].type]){if(!(e=(r.find.ID(c.matches[0].replace(et,nt),e)||[])[0]))return n;h&&(e=e.parentNode),t=t.slice(l.shift().value.length)}for(s=Y.needsContext.test(t)?0:l.length;s--&&(c=l[s],!r.relative[u=c.type]);)if((d=r.find[u])&&(i=d(c.matches[0].replace(et,nt),tt.test(l[0].type)&&vt(e.parentNode)||e))){if(l.splice(s,1),!(t=i.length&&yt(l)))return I.apply(n,i),n;break}}return(h||a(t,p))(i,e,!m,n,!e||tt.test(t)&&vt(e.parentNode)||e),n},n.sortStable=w.split("").sort(k).join("")===w,n.detectDuplicates=!!d,h(),n.sortDetached=ut((function(t){return 1&t.compareDocumentPosition(p.createElement("fieldset"))})),ut((function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")}))||dt("type|href|height|width",(function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)})),n.attributes&&ut((function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")}))||dt("value",(function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue})),ut((function(t){return null==t.getAttribute("disabled")}))||dt(M,(function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null})),at}(r);_.find=C,_.expr=C.selectors,_.expr[":"]=_.expr.pseudos,_.uniqueSort=_.unique=C.uniqueSort,_.text=C.getText,_.isXMLDoc=C.isXML,_.contains=C.contains,_.escapeSelector=C.escape;var S=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&_(t).is(n))break;r.push(t)}return r},k=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},A=_.expr.match.needsContext;function D(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var P=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function O(t,e,n){return v(e)?_.grep(t,(function(t,r){return!!e.call(t,r,t)!==n})):e.nodeType?_.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?_.grep(t,(function(t){return u.call(e,t)>-1!==n})):_.filter(e,t,n)}_.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?_.find.matchesSelector(r,t)?[r]:[]:_.find.matches(t,_.grep(e,(function(t){return 1===t.nodeType})))},_.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(_(t).filter((function(){for(e=0;e1?_.uniqueSort(n):n},filter:function(t){return this.pushStack(O(this,t||[],!1))},not:function(t){return this.pushStack(O(this,t||[],!0))},is:function(t){return!!O(this,"string"==typeof t&&A.test(t)?_(t):t||[],!1).length}});var I,j=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(_.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||I,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:j.exec(t))||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof _?e[0]:e,_.merge(this,_.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:y,!0)),P.test(r[1])&&_.isPlainObject(e))for(r in e)v(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return(i=y.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):v(t)?void 0!==n.ready?n.ready(t):t(_):_.makeArray(t,this)}).prototype=_.fn,I=_(y);var L=/^(?:parents|prev(?:Until|All))/,M={children:!0,contents:!0,next:!0,prev:!0};function B(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}_.fn.extend({has:function(t){var e=_(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&_.find.matchesSelector(n,t))){s.push(n);break}return this.pushStack(s.length>1?_.uniqueSort(s):s)},index:function(t){return t?"string"==typeof t?u.call(_(t),this[0]):u.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(_.uniqueSort(_.merge(this.get(),_(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),_.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return S(t,"parentNode")},parentsUntil:function(t,e,n){return S(t,"parentNode",n)},next:function(t){return B(t,"nextSibling")},prev:function(t){return B(t,"previousSibling")},nextAll:function(t){return S(t,"nextSibling")},prevAll:function(t){return S(t,"previousSibling")},nextUntil:function(t,e,n){return S(t,"nextSibling",n)},prevUntil:function(t,e,n){return S(t,"previousSibling",n)},siblings:function(t){return k((t.parentNode||{}).firstChild,t)},children:function(t){return k(t.firstChild)},contents:function(t){return null!=t.contentDocument&&o(t.contentDocument)?t.contentDocument:(D(t,"template")&&(t=t.content||t),_.merge([],t.childNodes))}},(function(t,e){_.fn[t]=function(n,r){var i=_.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=_.filter(r,i)),this.length>1&&(M[t]||_.uniqueSort(i),L.test(t)&&i.reverse()),this.pushStack(i)}}));var $=/[^\x20\t\r\n\f]+/g;function R(t){return t}function H(t){throw t}function F(t,e,n,r){var i;try{t&&v(i=t.promise)?i.call(t).done(e).fail(n):t&&v(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}_.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return _.each(t.match($)||[],(function(t,n){e[n]=!0})),e}(t):_.extend({},t);var e,n,r,i,s=[],o=[],a=-1,l=function(){for(i=i||t.once,r=e=!0;o.length;a=-1)for(n=o.shift();++a-1;)s.splice(n,1),n<=a&&a--})),this},has:function(t){return t?_.inArray(t,s)>-1:s.length>0},empty:function(){return s&&(s=[]),this},disable:function(){return i=o=[],s=n="",this},disabled:function(){return!s},lock:function(){return i=o=[],n||e||(s=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=[t,(n=n||[]).slice?n.slice():n],o.push(n),e||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},_.extend({Deferred:function(t){var e=[["notify","progress",_.Callbacks("memory"),_.Callbacks("memory"),2],["resolve","done",_.Callbacks("once memory"),_.Callbacks("once memory"),0,"resolved"],["reject","fail",_.Callbacks("once memory"),_.Callbacks("once memory"),1,"rejected"]],n="pending",i={state:function(){return n},always:function(){return s.done(arguments).fail(arguments),this},catch:function(t){return i.then(null,t)},pipe:function(){var t=arguments;return _.Deferred((function(n){_.each(e,(function(e,r){var i=v(t[r[4]])&&t[r[4]];s[r[1]]((function(){var t=i&&i.apply(this,arguments);t&&v(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,i){var s=0;function o(t,e,n,i){return function(){var a=this,l=arguments,c=function(){var r,c;if(!(t=s&&(n!==H&&(a=void 0,l=[r]),e.rejectWith(a,l))}};t?u():(_.Deferred.getStackHook&&(u.stackTrace=_.Deferred.getStackHook()),r.setTimeout(u))}}return _.Deferred((function(r){e[0][3].add(o(0,r,v(i)?i:R,r.notifyWith)),e[1][3].add(o(0,r,v(t)?t:R)),e[2][3].add(o(0,r,v(n)?n:H))})).promise()},promise:function(t){return null!=t?_.extend(t,i):i}},s={};return _.each(e,(function(t,r){var o=r[2],a=r[5];i[r[1]]=o.add,a&&o.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),o.add(r[3].fire),s[r[0]]=function(){return s[r[0]+"With"](this===s?void 0:this,arguments),this},s[r[0]+"With"]=o.fireWith})),i.promise(s),t&&t.call(s,s),s},when:function(t){var e=arguments.length,n=e,r=Array(n),i=a.call(arguments),s=_.Deferred(),o=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?a.call(arguments):n,--e||s.resolveWith(r,i)}};if(e<=1&&(F(t,s.done(o(n)).resolve,s.reject,!e),"pending"===s.state()||v(i[n]&&i[n].then)))return s.then();for(;n--;)F(i[n],o(n),s.reject);return s.promise()}});var q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;_.Deferred.exceptionHook=function(t,e){r.console&&r.console.warn&&t&&q.test(t.name)&&r.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},_.readyException=function(t){r.setTimeout((function(){throw t}))};var U=_.Deferred();function z(){y.removeEventListener("DOMContentLoaded",z),r.removeEventListener("load",z),_.ready()}_.fn.ready=function(t){return U.then(t).catch((function(t){_.readyException(t)})),this},_.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--_.readyWait:_.isReady)||(_.isReady=!0,!0!==t&&--_.readyWait>0||U.resolveWith(y,[_]))}}),_.ready.then=U.then,"complete"===y.readyState||"loading"!==y.readyState&&!y.documentElement.doScroll?r.setTimeout(_.ready):(y.addEventListener("DOMContentLoaded",z),r.addEventListener("load",z));var W=function(t,e,n,r,i,s,o){var a=0,l=t.length,c=null==n;if("object"===N(n))for(a in i=!0,n)W(t,e,a,n[a],!0,s,o);else if(void 0!==r&&(i=!0,v(r)||(o=!0),c&&(o?(e.call(t,r),e=null):(c=e,e=function(t,e,n){return c.call(_(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){Z.remove(this,t)}))}}),_.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=Q.get(t,e),n&&(!r||Array.isArray(n)?r=Q.access(t,e,_.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){e=e||"fx";var n=_.queue(t,e),r=n.length,i=n.shift(),s=_._queueHooks(t,e);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete s.stop,i.call(t,(function(){_.dequeue(t,e)}),s)),!r&&s&&s.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Q.get(t,n)||Q.access(t,n,{empty:_.Callbacks("once memory").add((function(){Q.remove(t,[e+"queue",n])}))})}}),_.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,bt=/^$|^module$|\/(?:java|ecma)script/i;ft=y.createDocumentFragment().appendChild(y.createElement("div")),(mt=y.createElement("input")).setAttribute("type","radio"),mt.setAttribute("checked","checked"),mt.setAttribute("name","t"),ft.appendChild(mt),g.checkClone=ft.cloneNode(!0).cloneNode(!0).lastChild.checked,ft.innerHTML="",g.noCloneChecked=!!ft.cloneNode(!0).lastChild.defaultValue,ft.innerHTML="",g.option=!!ft.lastChild;var yt={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function wt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&D(t,e)?_.merge([t],n):n}function xt(t,e){for(var n=0,r=t.length;n",""]);var Nt=/<|&#?\w+;/;function Et(t,e,n,r,i){for(var s,o,a,l,c,u,d=e.createDocumentFragment(),h=[],p=0,f=t.length;p-1)i&&i.push(s);else if(c=at(s),o=wt(d.appendChild(s),"script"),c&&xt(o),n)for(u=0;s=o[u++];)bt.test(s.type||"")&&n.push(s);return d}var _t=/^([^.]*)(?:\.(.+)|)/;function Tt(){return!0}function Ct(){return!1}function St(t,e){return t===function(){try{return y.activeElement}catch(t){}}()==("focus"===e)}function kt(t,e,n,r,i,s){var o,a;if("object"==typeof e){for(a in"string"!=typeof n&&(r=r||n,n=void 0),e)kt(t,a,n,r,e[a],s);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ct;else if(!i)return t;return 1===s&&(o=i,i=function(t){return _().off(t),o.apply(this,arguments)},i.guid=o.guid||(o.guid=_.guid++)),t.each((function(){_.event.add(this,e,i,r,n)}))}function At(t,e,n){n?(Q.set(t,e,!1),_.event.add(t,e,{namespace:!1,handler:function(t){var r,i,s=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(s.length)(_.event.special[e]||{}).delegateType&&t.stopPropagation();else if(s=a.call(arguments),Q.set(this,e,s),r=n(this,e),this[e](),s!==(i=Q.get(this,e))||r?Q.set(this,e,!1):i={},s!==i)return t.stopImmediatePropagation(),t.preventDefault(),i&&i.value}else s.length&&(Q.set(this,e,{value:_.event.trigger(_.extend(s[0],_.Event.prototype),s.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&_.event.add(t,e,Tt)}_.event={global:{},add:function(t,e,n,r,i){var s,o,a,l,c,u,d,h,p,f,m,g=Q.get(t);if(X(t))for(n.handler&&(n=(s=n).handler,i=s.selector),i&&_.find.matchesSelector(ot,i),n.guid||(n.guid=_.guid++),(l=g.events)||(l=g.events=Object.create(null)),(o=g.handle)||(o=g.handle=function(e){return void 0!==_&&_.event.triggered!==e.type?_.event.dispatch.apply(t,arguments):void 0}),c=(e=(e||"").match($)||[""]).length;c--;)p=m=(a=_t.exec(e[c])||[])[1],f=(a[2]||"").split(".").sort(),p&&(d=_.event.special[p]||{},p=(i?d.delegateType:d.bindType)||p,d=_.event.special[p]||{},u=_.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&_.expr.match.needsContext.test(i),namespace:f.join(".")},s),(h=l[p])||((h=l[p]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,r,f,o)||t.addEventListener&&t.addEventListener(p,o)),d.add&&(d.add.call(t,u),u.handler.guid||(u.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,u):h.push(u),_.event.global[p]=!0)},remove:function(t,e,n,r,i){var s,o,a,l,c,u,d,h,p,f,m,g=Q.hasData(t)&&Q.get(t);if(g&&(l=g.events)){for(c=(e=(e||"").match($)||[""]).length;c--;)if(p=m=(a=_t.exec(e[c])||[])[1],f=(a[2]||"").split(".").sort(),p){for(d=_.event.special[p]||{},h=l[p=(r?d.delegateType:d.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=s=h.length;s--;)u=h[s],!i&&m!==u.origType||n&&n.guid!==u.guid||a&&!a.test(u.namespace)||r&&r!==u.selector&&("**"!==r||!u.selector)||(h.splice(s,1),u.selector&&h.delegateCount--,d.remove&&d.remove.call(t,u));o&&!h.length&&(d.teardown&&!1!==d.teardown.call(t,f,g.handle)||_.removeEvent(t,p,g.handle),delete l[p])}else for(p in l)_.event.remove(t,p+e[c],n,r,!0);_.isEmptyObject(l)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,s,o,a=new Array(arguments.length),l=_.event.fix(t),c=(Q.get(this,"events")||Object.create(null))[l.type]||[],u=_.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==t.type||!0!==c.disabled)){for(s=[],o={},n=0;n-1:_.find(i,this,null,[c]).length),o[i]&&s.push(r);s.length&&a.push({elem:c,handlers:s})}return c=this,l\s*$/g;function It(t,e){return D(t,"table")&&D(11!==e.nodeType?e:e.firstChild,"tr")&&_(t).children("tbody")[0]||t}function jt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Lt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Mt(t,e){var n,r,i,s,o,a;if(1===e.nodeType){if(Q.hasData(t)&&(a=Q.get(t).events))for(i in Q.remove(e,"handle events"),a)for(n=0,r=a[i].length;n1&&"string"==typeof f&&!g.checkClone&&Pt.test(f))return t.each((function(i){var s=t.eq(i);m&&(e[0]=f.call(this,i,s.html())),$t(s,e,n,r)}));if(h&&(s=(i=Et(e,t[0].ownerDocument,!1,t,r)).firstChild,1===i.childNodes.length&&(i=s),s||r)){for(a=(o=_.map(wt(i,"script"),jt)).length;d0&&xt(o,!l&&wt(t,"script")),a},cleanData:function(t){for(var e,n,r,i=_.event.special,s=0;void 0!==(n=t[s]);s++)if(X(n)){if(e=n[Q.expando]){if(e.events)for(r in e.events)i[r]?_.event.remove(n,r):_.removeEvent(n,r,e.handle);n[Q.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),_.fn.extend({detach:function(t){return Rt(this,t,!0)},remove:function(t){return Rt(this,t)},text:function(t){return W(this,(function(t){return void 0===t?_.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return $t(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||It(this,t).appendChild(t)}))},prepend:function(){return $t(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=It(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return $t(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return $t(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(_.cleanData(wt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return _.clone(this,t,e)}))},html:function(t){return W(this,(function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Dt.test(t)&&!yt[(vt.exec(t)||["",""])[1].toLowerCase()]){t=_.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-s-l-a-.5))||0),l}function re(t,e,n){var r=qt(t),i=(!g.boxSizingReliable()||n)&&"border-box"===_.css(t,"boxSizing",!1,r),s=i,o=Gt(t,e,r),a="offset"+e[0].toUpperCase()+e.slice(1);if(Ht.test(o)){if(!n)return o;o="auto"}return(!g.boxSizingReliable()&&i||!g.reliableTrDimensions()&&D(t,"tr")||"auto"===o||!parseFloat(o)&&"inline"===_.css(t,"display",!1,r))&&t.getClientRects().length&&(i="border-box"===_.css(t,"boxSizing",!1,r),(s=a in t)&&(o=t[a])),(o=parseFloat(o)||0)+ne(t,e,n||(i?"border":"content"),s,r,o)+"px"}function ie(t,e,n,r,i){return new ie.prototype.init(t,e,n,r,i)}_.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Gt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,s,o,a=K(e),l=Ft.test(e),c=t.style;if(l||(e=Jt(a)),o=_.cssHooks[e]||_.cssHooks[a],void 0===n)return o&&"get"in o&&void 0!==(i=o.get(t,!1,r))?i:c[e];"string"==(s=typeof n)&&(i=it.exec(n))&&i[1]&&(n=ut(t,e,i),s="number"),null!=n&&n==n&&("number"!==s||l||(n+=i&&i[3]||(_.cssNumber[a]?"":"px")),g.clearCloneStyle||""!==n||0!==e.indexOf("background")||(c[e]="inherit"),o&&"set"in o&&void 0===(n=o.set(t,n,r))||(l?c.setProperty(e,n):c[e]=n))}},css:function(t,e,n,r){var i,s,o,a=K(e);return Ft.test(e)||(e=Jt(a)),(o=_.cssHooks[e]||_.cssHooks[a])&&"get"in o&&(i=o.get(t,!0,n)),void 0===i&&(i=Gt(t,e,r)),"normal"===i&&e in te&&(i=te[e]),""===n||n?(s=parseFloat(i),!0===n||isFinite(s)?s||0:i):i}}),_.each(["height","width"],(function(t,e){_.cssHooks[e]={get:function(t,n,r){if(n)return!Qt.test(_.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?re(t,e,r):Ut(t,Zt,(function(){return re(t,e,r)}))},set:function(t,n,r){var i,s=qt(t),o=!g.scrollboxSize()&&"absolute"===s.position,a=(o||r)&&"border-box"===_.css(t,"boxSizing",!1,s),l=r?ne(t,e,r,a,s):0;return a&&o&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(s[e])-ne(t,e,"border",!1,s)-.5)),l&&(i=it.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=_.css(t,e)),ee(0,n,l)}}})),_.cssHooks.marginLeft=Vt(g.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Gt(t,"marginLeft"))||t.getBoundingClientRect().left-Ut(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),_.each({margin:"",padding:"",border:"Width"},(function(t,e){_.cssHooks[t+e]={expand:function(n){for(var r=0,i={},s="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+st[r]+e]=s[r]||s[r-2]||s[0];return i}},"margin"!==t&&(_.cssHooks[t+e].set=ee)})),_.fn.extend({css:function(t,e){return W(this,(function(t,e,n){var r,i,s={},o=0;if(Array.isArray(e)){for(r=qt(t),i=e.length;o1)}}),_.Tween=ie,ie.prototype={constructor:ie,init:function(t,e,n,r,i,s){this.elem=t,this.prop=n,this.easing=i||_.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=s||(_.cssNumber[n]?"":"px")},cur:function(){var t=ie.propHooks[this.prop];return t&&t.get?t.get(this):ie.propHooks._default.get(this)},run:function(t){var e,n=ie.propHooks[this.prop];return this.options.duration?this.pos=e=_.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):ie.propHooks._default.set(this),this}},ie.prototype.init.prototype=ie.prototype,ie.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=_.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){_.fx.step[t.prop]?_.fx.step[t.prop](t):1!==t.elem.nodeType||!_.cssHooks[t.prop]&&null==t.elem.style[Jt(t.prop)]?t.elem[t.prop]=t.now:_.style(t.elem,t.prop,t.now+t.unit)}}},ie.propHooks.scrollTop=ie.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},_.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},_.fx=ie.prototype.init,_.fx.step={};var se,oe,ae=/^(?:toggle|show|hide)$/,le=/queueHooks$/;function ce(){oe&&(!1===y.hidden&&r.requestAnimationFrame?r.requestAnimationFrame(ce):r.setTimeout(ce,_.fx.interval),_.fx.tick())}function ue(){return r.setTimeout((function(){se=void 0})),se=Date.now()}function de(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)i["margin"+(n=st[r])]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function he(t,e,n){for(var r,i=(pe.tweeners[e]||[]).concat(pe.tweeners["*"]),s=0,o=i.length;s1)},removeAttr:function(t){return this.each((function(){_.removeAttr(this,t)}))}}),_.extend({attr:function(t,e,n){var r,i,s=t.nodeType;if(3!==s&&8!==s&&2!==s)return void 0===t.getAttribute?_.prop(t,e,n):(1===s&&_.isXMLDoc(t)||(i=_.attrHooks[e.toLowerCase()]||(_.expr.match.bool.test(e)?fe:void 0)),void 0!==n?null===n?void _.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:null==(r=_.find.attr(t,e))?void 0:r)},attrHooks:{type:{set:function(t,e){if(!g.radioValue&&"radio"===e&&D(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match($);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),fe={set:function(t,e,n){return!1===e?_.removeAttr(t,n):t.setAttribute(n,n),n}},_.each(_.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=me[e]||_.find.attr;me[e]=function(t,e,r){var i,s,o=e.toLowerCase();return r||(s=me[o],me[o]=i,i=null!=n(t,e,r)?o:null,me[o]=s),i}}));var ge=/^(?:input|select|textarea|button)$/i,ve=/^(?:a|area)$/i;function be(t){return(t.match($)||[]).join(" ")}function ye(t){return t.getAttribute&&t.getAttribute("class")||""}function we(t){return Array.isArray(t)?t:"string"==typeof t&&t.match($)||[]}_.fn.extend({prop:function(t,e){return W(this,_.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[_.propFix[t]||t]}))}}),_.extend({prop:function(t,e,n){var r,i,s=t.nodeType;if(3!==s&&8!==s&&2!==s)return 1===s&&_.isXMLDoc(t)||(e=_.propFix[e]||e,i=_.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=_.find.attr(t,"tabindex");return e?parseInt(e,10):ge.test(t.nodeName)||ve.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(_.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),_.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){_.propFix[this.toLowerCase()]=this})),_.fn.extend({addClass:function(t){var e,n,r,i,s,o;return v(t)?this.each((function(e){_(this).addClass(t.call(this,e,ye(this)))})):(e=we(t)).length?this.each((function(){if(r=ye(this),n=1===this.nodeType&&" "+be(r)+" "){for(s=0;s-1;)n=n.replace(" "+i+" "," ");o=be(n),r!==o&&this.setAttribute("class",o)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,r,i,s,o=typeof t,a="string"===o||Array.isArray(t);return v(t)?this.each((function(n){_(this).toggleClass(t.call(this,n,ye(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=we(t),this.each((function(){if(a)for(s=_(this),i=0;i-1)return!0;return!1}});var xe=/\r/g;_.fn.extend({val:function(t){var e,n,r,i=this[0];return arguments.length?(r=v(t),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?t.call(this,n,_(this).val()):t)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=_.map(i,(function(t){return null==t?"":t+""}))),(e=_.valHooks[this.type]||_.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))}))):i?(e=_.valHooks[i.type]||_.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(xe,""):null==n?"":n:void 0}}),_.extend({valHooks:{option:{get:function(t){var e=_.find.attr(t,"value");return null!=e?e:be(_.text(t))}},select:{get:function(t){var e,n,r,i=t.options,s=t.selectedIndex,o="select-one"===t.type,a=o?null:[],l=o?s+1:i.length;for(r=s<0?l:o?s:0;r-1)&&(n=!0);return n||(t.selectedIndex=-1),s}}}}),_.each(["radio","checkbox"],(function(){_.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=_.inArray(_(t).val(),e)>-1}},g.checkOn||(_.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),g.focusin="onfocusin"in r;var Ne=/^(?:focusinfocus|focusoutblur)$/,Ee=function(t){t.stopPropagation()};_.extend(_.event,{trigger:function(t,e,n,i){var s,o,a,l,c,u,d,h,f=[n||y],m=p.call(t,"type")?t.type:t,g=p.call(t,"namespace")?t.namespace.split("."):[];if(o=h=a=n=n||y,3!==n.nodeType&&8!==n.nodeType&&!Ne.test(m+_.event.triggered)&&(m.indexOf(".")>-1&&(g=m.split("."),m=g.shift(),g.sort()),c=m.indexOf(":")<0&&"on"+m,(t=t[_.expando]?t:new _.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=g.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:_.makeArray(e,[t]),d=_.event.special[m]||{},i||!d.trigger||!1!==d.trigger.apply(n,e))){if(!i&&!d.noBubble&&!b(n)){for(l=d.delegateType||m,Ne.test(l+m)||(o=o.parentNode);o;o=o.parentNode)f.push(o),a=o;a===(n.ownerDocument||y)&&f.push(a.defaultView||a.parentWindow||r)}for(s=0;(o=f[s++])&&!t.isPropagationStopped();)h=o,t.type=s>1?l:d.bindType||m,(u=(Q.get(o,"events")||Object.create(null))[t.type]&&Q.get(o,"handle"))&&u.apply(o,e),(u=c&&o[c])&&u.apply&&X(o)&&(t.result=u.apply(o,e),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(f.pop(),e)||!X(n)||c&&v(n[m])&&!b(n)&&((a=n[c])&&(n[c]=null),_.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Ee),n[m](),t.isPropagationStopped()&&h.removeEventListener(m,Ee),_.event.triggered=void 0,a&&(n[c]=a)),t.result}},simulate:function(t,e,n){var r=_.extend(new _.Event,n,{type:t,isSimulated:!0});_.event.trigger(r,null,e)}}),_.fn.extend({trigger:function(t,e){return this.each((function(){_.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return _.event.trigger(t,e,n,!0)}}),g.focusin||_.each({focus:"focusin",blur:"focusout"},(function(t,e){var n=function(t){_.event.simulate(e,t.target,_.event.fix(t))};_.event.special[e]={setup:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,e);i||r.addEventListener(t,n,!0),Q.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,e)-1;i?Q.access(r,e,i):(r.removeEventListener(t,n,!0),Q.remove(r,e))}}}));var _e=r.location,Te={guid:Date.now()},Ce=/\?/;_.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new r.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||_.error("Invalid XML: "+(n?_.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var Se=/\[\]$/,ke=/\r?\n/g,Ae=/^(?:submit|button|image|reset|file)$/i,De=/^(?:input|select|textarea|keygen)/i;function Pe(t,e,n,r){var i;if(Array.isArray(e))_.each(e,(function(e,i){n||Se.test(t)?r(t,i):Pe(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)}));else if(n||"object"!==N(e))r(t,e);else for(i in e)Pe(t+"["+i+"]",e[i],n,r)}_.param=function(t,e){var n,r=[],i=function(t,e){var n=v(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!_.isPlainObject(t))_.each(t,(function(){i(this.name,this.value)}));else for(n in t)Pe(n,t[n],e,i);return r.join("&")},_.fn.extend({serialize:function(){return _.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=_.prop(this,"elements");return t?_.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!_(this).is(":disabled")&&De.test(this.nodeName)&&!Ae.test(t)&&(this.checked||!gt.test(t))})).map((function(t,e){var n=_(this).val();return null==n?null:Array.isArray(n)?_.map(n,(function(t){return{name:e.name,value:t.replace(ke,"\r\n")}})):{name:e.name,value:n.replace(ke,"\r\n")}})).get()}});var Oe=/%20/g,Ie=/#.*$/,je=/([?&])_=[^&]*/,Le=/^(.*?):[ \t]*([^\r\n]*)$/gm,Me=/^(?:GET|HEAD)$/,Be=/^\/\//,$e={},Re={},He="*/".concat("*"),Fe=y.createElement("a");function qe(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,s=e.toLowerCase().match($)||[];if(v(n))for(;r=s[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function Ue(t,e,n,r){var i={},s=t===Re;function o(a){var l;return i[a]=!0,_.each(t[a]||[],(function(t,a){var c=a(e,n,r);return"string"!=typeof c||s||i[c]?s?!(l=c):void 0:(e.dataTypes.unshift(c),o(c),!1)})),l}return o(e.dataTypes[0])||!i["*"]&&o("*")}function ze(t,e){var n,r,i=_.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&_.extend(!0,t,r),t}Fe.href=_e.href,_.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:_e.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(_e.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":He,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":_.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?ze(ze(t,_.ajaxSettings),e):ze(_.ajaxSettings,t)},ajaxPrefilter:qe($e),ajaxTransport:qe(Re),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,i,s,o,a,l,c,u,d,h,p=_.ajaxSetup({},e),f=p.context||p,m=p.context&&(f.nodeType||f.jquery)?_(f):_.event,g=_.Deferred(),v=_.Callbacks("once memory"),b=p.statusCode||{},w={},x={},N="canceled",E={readyState:0,getResponseHeader:function(t){var e;if(c){if(!o)for(o={};e=Le.exec(s);)o[e[1].toLowerCase()+" "]=(o[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=o[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return c?s:null},setRequestHeader:function(t,e){return null==c&&(t=x[t.toLowerCase()]=x[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==c&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(c)E.always(t[E.status]);else for(e in t)b[e]=[b[e],t[e]];return this},abort:function(t){var e=t||N;return n&&n.abort(e),T(0,e),this}};if(g.promise(E),p.url=((t||p.url||_e.href)+"").replace(Be,_e.protocol+"//"),p.type=e.method||e.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match($)||[""],null==p.crossDomain){l=y.createElement("a");try{l.href=p.url,l.href=l.href,p.crossDomain=Fe.protocol+"//"+Fe.host!=l.protocol+"//"+l.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=_.param(p.data,p.traditional)),Ue($e,p,e,E),c)return E;for(d in(u=_.event&&p.global)&&0==_.active++&&_.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Me.test(p.type),i=p.url.replace(Ie,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(Oe,"+")):(h=p.url.slice(i.length),p.data&&(p.processData||"string"==typeof p.data)&&(i+=(Ce.test(i)?"&":"?")+p.data,delete p.data),!1===p.cache&&(i=i.replace(je,"$1"),h=(Ce.test(i)?"&":"?")+"_="+Te.guid+++h),p.url=i+h),p.ifModified&&(_.lastModified[i]&&E.setRequestHeader("If-Modified-Since",_.lastModified[i]),_.etag[i]&&E.setRequestHeader("If-None-Match",_.etag[i])),(p.data&&p.hasContent&&!1!==p.contentType||e.contentType)&&E.setRequestHeader("Content-Type",p.contentType),E.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+He+"; q=0.01":""):p.accepts["*"]),p.headers)E.setRequestHeader(d,p.headers[d]);if(p.beforeSend&&(!1===p.beforeSend.call(f,E,p)||c))return E.abort();if(N="abort",v.add(p.complete),E.done(p.success),E.fail(p.error),n=Ue(Re,p,e,E)){if(E.readyState=1,u&&m.trigger("ajaxSend",[E,p]),c)return E;p.async&&p.timeout>0&&(a=r.setTimeout((function(){E.abort("timeout")}),p.timeout));try{c=!1,n.send(w,T)}catch(t){if(c)throw t;T(-1,t)}}else T(-1,"No Transport");function T(t,e,o,l){var d,h,y,w,x,N=e;c||(c=!0,a&&r.clearTimeout(a),n=void 0,s=l||"",E.readyState=t>0?4:0,d=t>=200&&t<300||304===t,o&&(w=function(t,e,n){for(var r,i,s,o,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){l.unshift(i);break}if(l[0]in n)s=l[0];else{for(i in n){if(!l[0]||t.converters[i+" "+l[0]]){s=i;break}o||(o=i)}s=s||o}if(s)return s!==l[0]&&l.unshift(s),n[s]}(p,E,o)),!d&&_.inArray("script",p.dataTypes)>-1&&_.inArray("json",p.dataTypes)<0&&(p.converters["text script"]=function(){}),w=function(t,e,n,r){var i,s,o,a,l,c={},u=t.dataTypes.slice();if(u[1])for(o in t.converters)c[o.toLowerCase()]=t.converters[o];for(s=u.shift();s;)if(t.responseFields[s]&&(n[t.responseFields[s]]=e),!l&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=s,s=u.shift())if("*"===s)s=l;else if("*"!==l&&l!==s){if(!(o=c[l+" "+s]||c["* "+s]))for(i in c)if((a=i.split(" "))[1]===s&&(o=c[l+" "+a[0]]||c["* "+a[0]])){!0===o?o=c[i]:!0!==c[i]&&(s=a[0],u.unshift(a[1]));break}if(!0!==o)if(o&&t.throws)e=o(e);else try{e=o(e)}catch(t){return{state:"parsererror",error:o?t:"No conversion from "+l+" to "+s}}}return{state:"success",data:e}}(p,w,E,d),d?(p.ifModified&&((x=E.getResponseHeader("Last-Modified"))&&(_.lastModified[i]=x),(x=E.getResponseHeader("etag"))&&(_.etag[i]=x)),204===t||"HEAD"===p.type?N="nocontent":304===t?N="notmodified":(N=w.state,h=w.data,d=!(y=w.error))):(y=N,!t&&N||(N="error",t<0&&(t=0))),E.status=t,E.statusText=(e||N)+"",d?g.resolveWith(f,[h,N,E]):g.rejectWith(f,[E,N,y]),E.statusCode(b),b=void 0,u&&m.trigger(d?"ajaxSuccess":"ajaxError",[E,p,d?h:y]),v.fireWith(f,[E,N]),u&&(m.trigger("ajaxComplete",[E,p]),--_.active||_.event.trigger("ajaxStop")))}return E},getJSON:function(t,e,n){return _.get(t,e,n,"json")},getScript:function(t,e){return _.get(t,void 0,e,"script")}}),_.each(["get","post"],(function(t,e){_[e]=function(t,n,r,i){return v(n)&&(i=i||r,r=n,n=void 0),_.ajax(_.extend({url:t,type:e,dataType:i,data:n,success:r},_.isPlainObject(t)&&t))}})),_.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),_._evalUrl=function(t,e,n){return _.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){_.globalEval(t,e,n)}})},_.fn.extend({wrapAll:function(t){var e;return this[0]&&(v(t)&&(t=t.call(this[0])),e=_(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return v(t)?this.each((function(e){_(this).wrapInner(t.call(this,e))})):this.each((function(){var e=_(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=v(t);return this.each((function(n){_(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){_(this).replaceWith(this.childNodes)})),this}}),_.expr.pseudos.hidden=function(t){return!_.expr.pseudos.visible(t)},_.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},_.ajaxSettings.xhr=function(){try{return new r.XMLHttpRequest}catch(t){}};var We={0:200,1223:204},Ge=_.ajaxSettings.xhr();g.cors=!!Ge&&"withCredentials"in Ge,g.ajax=Ge=!!Ge,_.ajaxTransport((function(t){var e,n;if(g.cors||Ge&&!t.crossDomain)return{send:function(i,s){var o,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];for(o in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)a.setRequestHeader(o,i[o]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?s(0,"error"):s(a.status,a.statusText):s(We[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&r.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),_.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),_.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return _.globalEval(t),t}}}),_.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),_.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(r,i){e=_("