diff --git a/extensions/flags/js/dist-typings/forum/extend.d.ts b/extensions/flags/js/dist-typings/forum/extend.d.ts new file mode 100644 index 000000000..f83ce3204 --- /dev/null +++ b/extensions/flags/js/dist-typings/forum/extend.d.ts @@ -0,0 +1,2 @@ +declare const _default: any[]; +export default _default; diff --git a/extensions/flags/js/dist-typings/forum/index.d.ts b/extensions/flags/js/dist-typings/forum/index.d.ts index cb0ff5c3b..6d2293da0 100644 --- a/extensions/flags/js/dist-typings/forum/index.d.ts +++ b/extensions/flags/js/dist-typings/forum/index.d.ts @@ -1 +1 @@ -export {}; +export { default as extend } from './extend'; diff --git a/extensions/flags/js/dist/forum.js b/extensions/flags/js/dist/forum.js index f8ad1d0c1..620eefa1a 100644 --- a/extensions/flags/js/dist/forum.js +++ b/extensions/flags/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:a=>{var o=a&&a.__esModule?()=>a.default:()=>a;return t.d(o,{a:o}),o},d:(a,o)=>{for(var s in o)t.o(o,s)&&!t.o(a,s)&&Object.defineProperty(a,s,{enumerable:!0,get:o[s]})},o:(t,a)=>Object.prototype.hasOwnProperty.call(t,a),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},a={};(()=>{"use strict";t.r(a);const o=flarum.core.compat["forum/app"];var s=t.n(o);const e=flarum.core.compat["common/Model"];var n=t.n(e);function r(t,a){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,a){return t.__proto__=a,t},r(t,a)}function l(t,a){t.prototype=Object.create(a.prototype),t.prototype.constructor=t,r(t,a)}var i=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.type=function(){return n().attribute("type").call(this)},o.reason=function(){return n().attribute("reason").call(this)},o.reasonDetail=function(){return n().attribute("reasonDetail").call(this)},o.createdAt=function(){return n().attribute("createdAt",n().transformDate).call(this)},o.post=function(){return n().hasOne("post").call(this)},o.user=function(){return n().hasOne("user").call(this)},a}(n());const c=flarum.core.compat["components/Page"];var u=t.n(c);const f=flarum.core.compat["common/Component"];var p=t.n(f);const d=flarum.core.compat["common/components/Link"];var g=t.n(d);const h=flarum.core.compat["common/components/LoadingIndicator"];var v=t.n(h);const _=flarum.core.compat["common/helpers/avatar"];var b=t.n(_);const y=flarum.core.compat["common/helpers/username"];var N=t.n(y);const F=flarum.core.compat["common/helpers/icon"];var x=t.n(F);const k=flarum.core.compat["common/helpers/humanTime"];var w=t.n(k),P=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.oninit=function(a){t.prototype.oninit.call(this,a),this.state=this.attrs.state},o.view=function(){var t=this.state.cache||[];return m("div",{className:"NotificationList FlagList"},m("div",{className:"NotificationList-header"},m("h4",{className:"App-titleControl App-titleControl--text"},s().translator.trans("flarum-flags.forum.flagged_posts.title"))),m("div",{className:"NotificationList-content"},m("ul",{className:"NotificationGroup-content"},t.length?t.map((function(t){var a=t.post();return m("li",null,m(g(),{href:s().route.post(a),className:"Notification Flag",onclick:function(t){s().flags.index=a,t.redraw=!1}},b()(a.user()),x()("fas fa-flag",{className:"Notification-icon"}),m("span",{className:"Notification-content"},s().translator.trans("flarum-flags.forum.flagged_posts.item_text",{username:N()(a.user()),em:m("em",null),discussion:a.discussion().title()})),w()(t.createdAt()),m("div",{className:"Notification-excerpt"},a.contentPlain())))})):this.state.loading?v().component({className:"LoadingIndicator--block"}):m("div",{className:"NotificationList-empty"},s().translator.trans("flarum-flags.forum.flagged_posts.empty_text")))))},a}(p()),C=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.oninit=function(a){t.prototype.oninit.call(this,a),s().history.push("flags"),s().flags.load(),this.bodyClass="App--flags"},o.view=function(){return m("div",{className:"FlagsPage"},m(P,{state:s().flags}))},a}(u()),D=function(){function t(t){this.app=t,this.loading=!1}return t.prototype.load=function(){var t=this;this.cache&&!this.app.session.user.attribute("newFlagCount")||(this.loading=!0,m.redraw(),this.app.store.find("flags").then((function(a){t.app.session.user.pushAttributes({newFlagCount:0}),t.cache=a.sort((function(t,a){return a.createdAt()-t.createdAt()}))})).catch((function(){})).then((function(){t.loading=!1,m.redraw()})))},t}();const A=flarum.core.compat["common/extend"],O=flarum.core.compat["forum/utils/PostControls"];var M=t.n(O);const L=flarum.core.compat["common/components/Button"];var B=t.n(L);const j=flarum.core.compat["common/components/Modal"];var T=t.n(j);const S=flarum.core.compat["common/utils/Stream"];var R=t.n(S);const E=flarum.core.compat["common/utils/withAttr"];var I=t.n(E);const H=flarum.core.compat["common/utils/ItemList"];var U=t.n(H),G=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.oninit=function(a){t.prototype.oninit.call(this,a),this.success=!1,this.reason=R()(""),this.reasonDetail=R()("")},o.className=function(){return"FlagPostModal Modal--medium"},o.title=function(){return s().translator.trans("flarum-flags.forum.flag_post.title")},o.content=function(){return this.success?m("div",{className:"Modal-body"},m("div",{className:"Form Form--centered"},m("p",{className:"helpText"},s().translator.trans("flarum-flags.forum.flag_post.confirmation_message")),m("div",{className:"Form-group"},m(B(),{className:"Button Button--primary Button--block",onclick:this.hide.bind(this)},s().translator.trans("flarum-flags.forum.flag_post.dismiss_button"))))):m("div",{className:"Modal-body"},m("div",{className:"Form Form--centered"},m("div",{className:"Form-group"},m("div",null,this.flagReasons().toArray())),m("div",{className:"Form-group"},m(B(),{className:"Button Button--primary Button--block",type:"submit",loading:this.loading,disabled:!this.reason()},s().translator.trans("flarum-flags.forum.flag_post.submit_button")))))},o.flagReasons=function(){var t=new(U()),a=s().forum.attribute("guidelinesUrl");return t.add("off-topic",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"off_topic"===this.reason(),value:"off_topic",onclick:I()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_off_topic_label")),s().translator.trans("flarum-flags.forum.flag_post.reason_off_topic_text"),"off_topic"===this.reason()?m("textarea",{className:"FormControl",placeholder:s().translator.trans("flarum-flags.forum.flag_post.reason_details_placeholder"),value:this.reasonDetail(),oninput:I()("value",this.reasonDetail)}):""),70),t.add("inappropriate",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"inappropriate"===this.reason(),value:"inappropriate",onclick:I()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_inappropriate_label")),s().translator.trans("flarum-flags.forum.flag_post.reason_inappropriate_text",{a:a?m("a",{href:a,target:"_blank"}):void 0}),"inappropriate"===this.reason()?m("textarea",{className:"FormControl",placeholder:s().translator.trans("flarum-flags.forum.flag_post.reason_details_placeholder"),value:this.reasonDetail(),oninput:I()("value",this.reasonDetail)}):""),60),t.add("spam",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"spam"===this.reason(),value:"spam",onclick:I()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_spam_label")),s().translator.trans("flarum-flags.forum.flag_post.reason_spam_text"),"spam"===this.reason()?m("textarea",{className:"FormControl",placeholder:s().translator.trans("flarum-flags.forum.flag_post.reason_details_placeholder"),value:this.reasonDetail(),oninput:I()("value",this.reasonDetail)}):""),50),t.add("other",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"other"===this.reason(),value:"other",onclick:I()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_other_label")),"other"===this.reason()?m("textarea",{className:"FormControl",value:this.reasonDetail(),oninput:I()("value",this.reasonDetail)}):""),10),t},o.onsubmit=function(t){var a=this;t.preventDefault(),this.loading=!0,s().store.createRecord("flags").save({reason:"other"===this.reason()?null:this.reason(),reasonDetail:this.reasonDetail(),relationships:{user:s().session.user,post:this.attrs.post}},{errorHandler:this.onerror.bind(this)}).then((function(){return a.success=!0})).catch((function(){})).then(this.loaded.bind(this))},a}(T());function q(){(0,A.extend)(M(),"userControls",(function(t,a){!a.isHidden()&&"comment"===a.contentType()&&a.canFlag()&&t.add("flag",m(B(),{icon:"fas fa-flag",onclick:function(){return s().modal.show(G,{post:a})}},s().translator.trans("flarum-flags.forum.post_controls.flag_button")))}))}const z=flarum.core.compat["forum/components/HeaderSecondary"];var V=t.n(z);const J=flarum.core.compat["components/NotificationsDropdown"];var K=function(t){function a(){return t.apply(this,arguments)||this}l(a,t),a.initAttrs=function(a){a.label=a.label||s().translator.trans("flarum-flags.forum.flagged_posts.tooltip"),a.icon=a.icon||"fas fa-flag",t.initAttrs.call(this,a)};var o=a.prototype;return o.getMenu=function(){return m("div",{className:"Dropdown-menu "+this.attrs.menuClassName,onclick:this.menuClick.bind(this)},this.showing?P.component({state:this.attrs.state}):"")},o.goToRoute=function(){m.route.set(s().route("flags"))},o.getUnreadCount=function(){return s().flags.cache?s().flags.cache.length:s().forum.attribute("flagCount")},o.getNewCount=function(){return s().session.user.attribute("newFlagCount")},a}(t.n(J)());function Q(){(0,A.extend)(V().prototype,"items",(function(t){s().forum.attribute("canViewFlags")&&t.add("flags",m(K,{state:s().flags}),15)}))}const W=flarum.core.compat["forum/components/Post"];var X=t.n(W);const Y=flarum.core.compat["common/utils/humanTime"];var Z=t.n(Y);function $(){(0,A.extend)(X().prototype,"elementAttrs",(function(t){this.attrs.post.flags().length&&(t.className+=" Post--flagged")})),X().prototype.dismissFlag=function(t){var a=this.attrs.post;return delete a.data.relationships.flags,this.subtree.invalidate(),s().flags.cache&&s().flags.cache.some((function(t,o){if(t.post()===a){if(s().flags.cache.splice(o,1),s().flags.index===a){var e=s().flags.cache[o];if(e||(e=s().flags.cache[0]),e){var n=e.post();s().flags.index=n,m.route.set(s().route.post(n))}}return!0}})),s().request({url:s().forum.attribute("apiUrl")+a.apiEndpoint()+"/flags",method:"DELETE",body:t})},X().prototype.flagActionItems=function(){var t=this,a=new(U()),o=M().destructiveControls(this.attrs.post);return Object.keys(o.items).forEach((function(a){var s=o.get(a).attrs;s.className="Button",(0,A.extend)(s,"onclick",(function(){return t.dismissFlag()}))})),a.add("controls",m("div",{className:"ButtonGroup"},o.toArray())),a.add("dismiss",m(B(),{className:"Button",icon:"far fa-eye-slash",onclick:this.dismissFlag.bind(this)},s().translator.trans("flarum-flags.forum.post.dismiss_flag_button")),-100),a},(0,A.extend)(X().prototype,"content",(function(t){var a=this,o=this.attrs.post,s=o.flags();s.length&&(o.isHidden()&&(this.revealContent=!0),t.unshift(m("div",{className:"Post-flagged"},m("div",{className:"Post-flagged-flags"},s.map((function(t){return m("div",{className:"Post-flagged-flag"},a.flagReason(t))}))),m("div",{className:"Post-flagged-actions"},this.flagActionItems().toArray()))))})),X().prototype.flagReason=function(t){if("user"===t.type()){var a=t.user(),o=t.reason()?s().translator.trans("flarum-flags.forum.flag_post.reason_"+t.reason()+"_label"):null,e=t.reasonDetail(),n=Z()(t.createdAt());return[s().translator.trans(o?"flarum-flags.forum.post.flagged_by_with_reason_text":"flarum-flags.forum.post.flagged_by_text",{time:n,user:a,reason:o}),e?m("span",{className:"Post-flagged-detail"},e):""]}}}const tt={"flags/addFlagsToPosts":$,"flags/addFlagControl":q,"flags/addFlagsDropdown":Q,"flags/models/Flag":i,"flags/components/FlagList":P,"flags/components/FlagPostModal":G,"flags/components/FlagsPage":C,"flags/components/FlagsDropdown":K},at=flarum.core,ot=flarum.core.compat["common/models/Post"];var st=t.n(ot);s().initializers.add("flarum-flags",(function(){st().prototype.flags=n().hasMany("flags"),st().prototype.canFlag=n().attribute("canFlag"),s().store.models.flags=i,s().routes.flags={path:"/flags",component:C},s().flags=new D(s()),q(),Q(),$()})),Object.assign(at.compat,tt)})(),module.exports=a})(); +(()=>{var t={n:a=>{var o=a&&a.__esModule?()=>a.default:()=>a;return t.d(o,{a:o}),o},d:(a,o)=>{for(var s in o)t.o(o,s)&&!t.o(a,s)&&Object.defineProperty(a,s,{enumerable:!0,get:o[s]})},o:(t,a)=>Object.prototype.hasOwnProperty.call(t,a),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},a={};(()=>{"use strict";t.r(a),t.d(a,{extend:()=>ot});const o=flarum.core.compat["forum/app"];var s=t.n(o);const e=flarum.core.compat["common/Model"];var n=t.n(e);function r(t,a){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,a){return t.__proto__=a,t},r(t,a)}function l(t,a){t.prototype=Object.create(a.prototype),t.prototype.constructor=t,r(t,a)}var i=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.type=function(){return n().attribute("type").call(this)},o.reason=function(){return n().attribute("reason").call(this)},o.reasonDetail=function(){return n().attribute("reasonDetail").call(this)},o.createdAt=function(){return n().attribute("createdAt",n().transformDate).call(this)},o.post=function(){return n().hasOne("post").call(this)},o.user=function(){return n().hasOne("user").call(this)},a}(n()),c=function(){function t(t){this.app=t,this.loading=!1}return t.prototype.load=function(){var t=this;this.cache&&!this.app.session.user.attribute("newFlagCount")||(this.loading=!0,m.redraw(),this.app.store.find("flags").then((function(a){t.app.session.user.pushAttributes({newFlagCount:0}),t.cache=a.sort((function(t,a){return a.createdAt()-t.createdAt()}))})).catch((function(){})).then((function(){t.loading=!1,m.redraw()})))},t}();const u=flarum.core.compat["common/extend"],f=flarum.core.compat["forum/utils/PostControls"];var p=t.n(f);const d=flarum.core.compat["common/components/Button"];var g=t.n(d);const h=flarum.core.compat["common/components/Modal"];var v=t.n(h);const _=flarum.core.compat["common/utils/Stream"];var b=t.n(_);const y=flarum.core.compat["common/utils/withAttr"];var N=t.n(y);const F=flarum.core.compat["common/utils/ItemList"];var x=t.n(F),k=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.oninit=function(a){t.prototype.oninit.call(this,a),this.success=!1,this.reason=b()(""),this.reasonDetail=b()("")},o.className=function(){return"FlagPostModal Modal--medium"},o.title=function(){return s().translator.trans("flarum-flags.forum.flag_post.title")},o.content=function(){return this.success?m("div",{className:"Modal-body"},m("div",{className:"Form Form--centered"},m("p",{className:"helpText"},s().translator.trans("flarum-flags.forum.flag_post.confirmation_message")),m("div",{className:"Form-group"},m(g(),{className:"Button Button--primary Button--block",onclick:this.hide.bind(this)},s().translator.trans("flarum-flags.forum.flag_post.dismiss_button"))))):m("div",{className:"Modal-body"},m("div",{className:"Form Form--centered"},m("div",{className:"Form-group"},m("div",null,this.flagReasons().toArray())),m("div",{className:"Form-group"},m(g(),{className:"Button Button--primary Button--block",type:"submit",loading:this.loading,disabled:!this.reason()},s().translator.trans("flarum-flags.forum.flag_post.submit_button")))))},o.flagReasons=function(){var t=new(x()),a=s().forum.attribute("guidelinesUrl");return t.add("off-topic",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"off_topic"===this.reason(),value:"off_topic",onclick:N()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_off_topic_label")),s().translator.trans("flarum-flags.forum.flag_post.reason_off_topic_text"),"off_topic"===this.reason()?m("textarea",{className:"FormControl",placeholder:s().translator.trans("flarum-flags.forum.flag_post.reason_details_placeholder"),value:this.reasonDetail(),oninput:N()("value",this.reasonDetail)}):""),70),t.add("inappropriate",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"inappropriate"===this.reason(),value:"inappropriate",onclick:N()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_inappropriate_label")),s().translator.trans("flarum-flags.forum.flag_post.reason_inappropriate_text",{a:a?m("a",{href:a,target:"_blank"}):void 0}),"inappropriate"===this.reason()?m("textarea",{className:"FormControl",placeholder:s().translator.trans("flarum-flags.forum.flag_post.reason_details_placeholder"),value:this.reasonDetail(),oninput:N()("value",this.reasonDetail)}):""),60),t.add("spam",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"spam"===this.reason(),value:"spam",onclick:N()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_spam_label")),s().translator.trans("flarum-flags.forum.flag_post.reason_spam_text"),"spam"===this.reason()?m("textarea",{className:"FormControl",placeholder:s().translator.trans("flarum-flags.forum.flag_post.reason_details_placeholder"),value:this.reasonDetail(),oninput:N()("value",this.reasonDetail)}):""),50),t.add("other",m("label",{className:"checkbox"},m("input",{type:"radio",name:"reason",checked:"other"===this.reason(),value:"other",onclick:N()("value",this.reason)}),m("strong",null,s().translator.trans("flarum-flags.forum.flag_post.reason_other_label")),"other"===this.reason()?m("textarea",{className:"FormControl",value:this.reasonDetail(),oninput:N()("value",this.reasonDetail)}):""),10),t},o.onsubmit=function(t){var a=this;t.preventDefault(),this.loading=!0,s().store.createRecord("flags").save({reason:"other"===this.reason()?null:this.reason(),reasonDetail:this.reasonDetail(),relationships:{user:s().session.user,post:this.attrs.post}},{errorHandler:this.onerror.bind(this)}).then((function(){return a.success=!0})).catch((function(){})).then(this.loaded.bind(this))},a}(v());function w(){(0,u.extend)(p(),"userControls",(function(t,a){!a.isHidden()&&"comment"===a.contentType()&&a.canFlag()&&t.add("flag",m(g(),{icon:"fas fa-flag",onclick:function(){return s().modal.show(k,{post:a})}},s().translator.trans("flarum-flags.forum.post_controls.flag_button")))}))}const P=flarum.core.compat["forum/components/HeaderSecondary"];var C=t.n(P);const D=flarum.core.compat["components/NotificationsDropdown"];var A=t.n(D);const O=flarum.core.compat["common/Component"];var M=t.n(O);const L=flarum.core.compat["common/components/Link"];var B=t.n(L);const j=flarum.core.compat["common/components/LoadingIndicator"];var T=t.n(j);const R=flarum.core.compat["common/helpers/avatar"];var S=t.n(R);const E=flarum.core.compat["common/helpers/username"];var I=t.n(E);const H=flarum.core.compat["common/helpers/icon"];var U=t.n(H);const G=flarum.core.compat["common/helpers/humanTime"];var q=t.n(G),z=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.oninit=function(a){t.prototype.oninit.call(this,a),this.state=this.attrs.state},o.view=function(){var t=this.state.cache||[];return m("div",{className:"NotificationList FlagList"},m("div",{className:"NotificationList-header"},m("h4",{className:"App-titleControl App-titleControl--text"},s().translator.trans("flarum-flags.forum.flagged_posts.title"))),m("div",{className:"NotificationList-content"},m("ul",{className:"NotificationGroup-content"},t.length?t.map((function(t){var a=t.post();return m("li",null,m(B(),{href:s().route.post(a),className:"Notification Flag",onclick:function(t){s().flags.index=a,t.redraw=!1}},S()(a.user()),U()("fas fa-flag",{className:"Notification-icon"}),m("span",{className:"Notification-content"},s().translator.trans("flarum-flags.forum.flagged_posts.item_text",{username:I()(a.user()),em:m("em",null),discussion:a.discussion().title()})),q()(t.createdAt()),m("div",{className:"Notification-excerpt"},a.contentPlain())))})):this.state.loading?T().component({className:"LoadingIndicator--block"}):m("div",{className:"NotificationList-empty"},s().translator.trans("flarum-flags.forum.flagged_posts.empty_text")))))},a}(M()),V=function(t){function a(){return t.apply(this,arguments)||this}l(a,t),a.initAttrs=function(a){a.label=a.label||s().translator.trans("flarum-flags.forum.flagged_posts.tooltip"),a.icon=a.icon||"fas fa-flag",t.initAttrs.call(this,a)};var o=a.prototype;return o.getMenu=function(){return m("div",{className:"Dropdown-menu "+this.attrs.menuClassName,onclick:this.menuClick.bind(this)},this.showing?z.component({state:this.attrs.state}):"")},o.goToRoute=function(){m.route.set(s().route("flags"))},o.getUnreadCount=function(){return s().flags.cache?s().flags.cache.length:s().forum.attribute("flagCount")},o.getNewCount=function(){return s().session.user.attribute("newFlagCount")},a}(A());function J(){(0,u.extend)(C().prototype,"items",(function(t){s().forum.attribute("canViewFlags")&&t.add("flags",m(V,{state:s().flags}),15)}))}const K=flarum.core.compat["forum/components/Post"];var Q=t.n(K);const W=flarum.core.compat["common/utils/humanTime"];var X=t.n(W);function Y(){(0,u.extend)(Q().prototype,"elementAttrs",(function(t){this.attrs.post.flags().length&&(t.className+=" Post--flagged")})),Q().prototype.dismissFlag=function(t){var a=this.attrs.post;return delete a.data.relationships.flags,this.subtree.invalidate(),s().flags.cache&&s().flags.cache.some((function(t,o){if(t.post()===a){if(s().flags.cache.splice(o,1),s().flags.index===a){var e=s().flags.cache[o];if(e||(e=s().flags.cache[0]),e){var n=e.post();s().flags.index=n,m.route.set(s().route.post(n))}}return!0}})),s().request({url:s().forum.attribute("apiUrl")+a.apiEndpoint()+"/flags",method:"DELETE",body:t})},Q().prototype.flagActionItems=function(){var t=this,a=new(x()),o=p().destructiveControls(this.attrs.post);return Object.keys(o.items).forEach((function(a){var s=o.get(a).attrs;s.className="Button",(0,u.extend)(s,"onclick",(function(){return t.dismissFlag()}))})),a.add("controls",m("div",{className:"ButtonGroup"},o.toArray())),a.add("dismiss",m(g(),{className:"Button",icon:"far fa-eye-slash",onclick:this.dismissFlag.bind(this)},s().translator.trans("flarum-flags.forum.post.dismiss_flag_button")),-100),a},(0,u.extend)(Q().prototype,"content",(function(t){var a=this,o=this.attrs.post,s=o.flags();s.length&&(o.isHidden()&&(this.revealContent=!0),t.unshift(m("div",{className:"Post-flagged"},m("div",{className:"Post-flagged-flags"},s.map((function(t){return m("div",{className:"Post-flagged-flag"},a.flagReason(t))}))),m("div",{className:"Post-flagged-actions"},this.flagActionItems().toArray()))))})),Q().prototype.flagReason=function(t){if("user"===t.type()){var a=t.user(),o=t.reason()?s().translator.trans("flarum-flags.forum.flag_post.reason_"+t.reason()+"_label"):null,e=t.reasonDetail(),n=X()(t.createdAt());return[s().translator.trans(o?"flarum-flags.forum.post.flagged_by_with_reason_text":"flarum-flags.forum.post.flagged_by_text",{time:n,user:a,reason:o}),e?m("span",{className:"Post-flagged-detail"},e):""]}}}const Z=flarum.core.compat["common/extenders"];var $=t.n(Z);const tt=flarum.core.compat["components/Page"];var at=function(t){function a(){return t.apply(this,arguments)||this}l(a,t);var o=a.prototype;return o.oninit=function(a){t.prototype.oninit.call(this,a),s().history.push("flags"),s().flags.load(),this.bodyClass="App--flags"},o.view=function(){return m("div",{className:"FlagsPage"},m(z,{state:s().flags}))},a}(t.n(tt)());const ot=[(new($().Routes)).add("flags","/flags",at)],st={"flags/addFlagsToPosts":Y,"flags/addFlagControl":w,"flags/addFlagsDropdown":J,"flags/models/Flag":i,"flags/components/FlagList":z,"flags/components/FlagPostModal":k,"flags/components/FlagsPage":at,"flags/components/FlagsDropdown":V},et=flarum.core,nt=flarum.core.compat["common/models/Post"];var rt=t.n(nt);s().initializers.add("flarum-flags",(function(){rt().prototype.flags=n().hasMany("flags"),rt().prototype.canFlag=n().attribute("canFlag"),s().store.models.flags=i,s().flags=new c(s()),w(),J(),Y()})),Object.assign(et.compat,st)})(),module.exports=a})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/flags/js/dist/forum.js.map b/extensions/flags/js/dist/forum.js.map index 7b3f6fdf2..3872a5271 100644 --- a/extensions/flags/js/dist/forum.js.map +++ b/extensions/flags/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/flags/webpack/bootstrap","webpack://@flarum/flags/webpack/runtime/compat get default export","webpack://@flarum/flags/webpack/runtime/define property getters","webpack://@flarum/flags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/flags/webpack/runtime/make namespace object","webpack://@flarum/flags/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/flags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/flags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/flags/./src/forum/models/Flag.ts","webpack://@flarum/flags/external root \"flarum.core.compat['components/Page']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/flags/./src/forum/components/FlagList.js","webpack://@flarum/flags/./src/forum/components/FlagsPage.js","webpack://@flarum/flags/./src/forum/states/FlagListState.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/flags/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/flags/./src/forum/components/FlagPostModal.js","webpack://@flarum/flags/./src/forum/addFlagControl.js","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/HeaderSecondary']\"","webpack://@flarum/flags/external root \"flarum.core.compat['components/NotificationsDropdown']\"","webpack://@flarum/flags/./src/forum/components/FlagsDropdown.js","webpack://@flarum/flags/./src/forum/addFlagsDropdown.js","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/humanTime']\"","webpack://@flarum/flags/./src/forum/addFlagsToPosts.js","webpack://@flarum/flags/./src/forum/compat.js","webpack://@flarum/flags/external assign \"flarum.core\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/flags/./src/forum/index.ts"],"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['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Model from 'flarum/common/Model';\nimport type Post from 'flarum/common/models/Post';\nimport type User from 'flarum/common/models/User';\n\nexport default class Flag extends Model {\n type() {\n return Model.attribute('type').call(this);\n }\n reason() {\n return Model.attribute('reason').call(this);\n }\n reasonDetail() {\n return Model.attribute('reasonDetail').call(this);\n }\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n post() {\n return Model.hasOne('post').call(this);\n }\n user() {\n return Model.hasOne('user').call(this);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","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/helpers/humanTime'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport Link from 'flarum/common/components/Link';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\n\nexport default class FlagList extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.state = this.attrs.state;\n }\n\n view() {\n const flags = this.state.cache || [];\n\n return (\n
\n
\n

{app.translator.trans('flarum-flags.forum.flagged_posts.title')}

\n
\n
\n
    \n {flags.length ? (\n flags.map((flag) => {\n const post = flag.post();\n\n return (\n
  • \n {\n app.flags.index = post;\n e.redraw = false;\n }}\n >\n {avatar(post.user())}\n {icon('fas fa-flag', { className: 'Notification-icon' })}\n \n {app.translator.trans('flarum-flags.forum.flagged_posts.item_text', {\n username: username(post.user()),\n em: ,\n discussion: post.discussion().title(),\n })}\n \n {humanTime(flag.createdAt())}\n
    {post.contentPlain()}
    \n \n
  • \n );\n })\n ) : !this.state.loading ? (\n
    {app.translator.trans('flarum-flags.forum.flagged_posts.empty_text')}
    \n ) : (\n LoadingIndicator.component({ className: 'LoadingIndicator--block' })\n )}\n
\n
\n
\n );\n }\n}\n","import app from 'flarum/forum/app';\nimport Page from 'flarum/components/Page';\n\nimport FlagList from './FlagList';\n\n/**\n * The `FlagsPage` component shows the flags list. It is only\n * used on mobile devices where the flags dropdown is within the drawer.\n */\nexport default class FlagsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('flags');\n\n app.flags.load();\n\n this.bodyClass = 'App--flags';\n }\n\n view() {\n return (\n
\n \n
\n );\n }\n}\n","export default class FlagListState {\n constructor(app) {\n this.app = app;\n\n /**\n * Whether or not the flags are loading.\n *\n * @type {Boolean}\n */\n this.loading = false;\n }\n\n /**\n * Load flags into the application's cache if they haven't already\n * been loaded.\n */\n load() {\n if (this.cache && !this.app.session.user.attribute('newFlagCount')) {\n return;\n }\n\n this.loading = true;\n m.redraw();\n\n this.app.store\n .find('flags')\n .then((flags) => {\n this.app.session.user.pushAttributes({ newFlagCount: 0 });\n this.cache = flags.sort((a, b) => b.createdAt() - a.createdAt());\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","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/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\n\nimport Stream from 'flarum/common/utils/Stream';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport default class FlagPostModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.success = false;\n\n this.reason = Stream('');\n this.reasonDetail = Stream('');\n }\n\n className() {\n return 'FlagPostModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('flarum-flags.forum.flag_post.title');\n }\n\n content() {\n if (this.success) {\n return (\n
\n
\n

{app.translator.trans('flarum-flags.forum.flag_post.confirmation_message')}

\n
\n \n
\n
\n
\n );\n }\n\n return (\n
\n
\n
\n
{this.flagReasons().toArray()}
\n
\n\n
\n \n
\n
\n
\n );\n }\n\n flagReasons() {\n const items = new ItemList();\n const guidelinesUrl = app.forum.attribute('guidelinesUrl');\n\n items.add(\n 'off-topic',\n ,\n 70\n );\n\n items.add(\n 'inappropriate',\n ,\n 60\n );\n\n items.add(\n 'spam',\n ,\n 50\n );\n\n items.add(\n 'other',\n ,\n 10\n );\n\n return items;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n app.store\n .createRecord('flags')\n .save(\n {\n reason: this.reason() === 'other' ? null : this.reason(),\n reasonDetail: this.reasonDetail(),\n relationships: {\n user: app.session.user,\n post: this.attrs.post,\n },\n },\n { errorHandler: this.onerror.bind(this) }\n )\n .then(() => (this.success = true))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport Button from 'flarum/common/components/Button';\n\nimport FlagPostModal from './components/FlagPostModal';\n\nexport default function () {\n extend(PostControls, 'userControls', function (items, post) {\n if (post.isHidden() || post.contentType() !== 'comment' || !post.canFlag()) return;\n\n items.add(\n 'flag',\n \n );\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/HeaderSecondary'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/NotificationsDropdown'];","import app from 'flarum/forum/app';\nimport NotificationsDropdown from 'flarum/components/NotificationsDropdown';\n\nimport FlagList from './FlagList';\n\nexport default class FlagsDropdown extends NotificationsDropdown {\n static initAttrs(attrs) {\n attrs.label = attrs.label || app.translator.trans('flarum-flags.forum.flagged_posts.tooltip');\n attrs.icon = attrs.icon || 'fas fa-flag';\n\n super.initAttrs(attrs);\n }\n\n getMenu() {\n return (\n
\n {this.showing ? FlagList.component({ state: this.attrs.state }) : ''}\n
\n );\n }\n\n goToRoute() {\n m.route.set(app.route('flags'));\n }\n\n getUnreadCount() {\n return app.flags.cache ? app.flags.cache.length : app.forum.attribute('flagCount');\n }\n\n getNewCount() {\n return app.session.user.attribute('newFlagCount');\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport HeaderSecondary from 'flarum/forum/components/HeaderSecondary';\nimport FlagsDropdown from './components/FlagsDropdown';\n\nexport default function () {\n extend(HeaderSecondary.prototype, 'items', function (items) {\n if (app.forum.attribute('canViewFlags')) {\n items.add('flags', , 15);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/humanTime'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Post from 'flarum/forum/components/Post';\nimport Button from 'flarum/common/components/Button';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport humanTime from 'flarum/common/utils/humanTime';\n\nexport default function () {\n extend(Post.prototype, 'elementAttrs', function (attrs) {\n if (this.attrs.post.flags().length) {\n attrs.className += ' Post--flagged';\n }\n });\n\n Post.prototype.dismissFlag = function (body) {\n const post = this.attrs.post;\n\n delete post.data.relationships.flags;\n\n this.subtree.invalidate();\n\n if (app.flags.cache) {\n app.flags.cache.some((flag, i) => {\n if (flag.post() === post) {\n app.flags.cache.splice(i, 1);\n\n if (app.flags.index === post) {\n let next = app.flags.cache[i];\n\n if (!next) next = app.flags.cache[0];\n\n if (next) {\n const nextPost = next.post();\n app.flags.index = nextPost;\n m.route.set(app.route.post(nextPost));\n }\n }\n\n return true;\n }\n });\n }\n\n return app.request({\n url: app.forum.attribute('apiUrl') + post.apiEndpoint() + '/flags',\n method: 'DELETE',\n body,\n });\n };\n\n Post.prototype.flagActionItems = function () {\n const items = new ItemList();\n\n const controls = PostControls.destructiveControls(this.attrs.post);\n\n Object.keys(controls.items).forEach((k) => {\n const attrs = controls.get(k).attrs;\n\n attrs.className = 'Button';\n\n extend(attrs, 'onclick', () => this.dismissFlag());\n });\n\n items.add('controls',
{controls.toArray()}
);\n\n items.add(\n 'dismiss',\n ,\n -100\n );\n\n return items;\n };\n\n extend(Post.prototype, 'content', function (vdom) {\n const post = this.attrs.post;\n const flags = post.flags();\n\n if (!flags.length) return;\n\n if (post.isHidden()) this.revealContent = true;\n\n vdom.unshift(\n
\n
\n {flags.map((flag) => (\n
{this.flagReason(flag)}
\n ))}\n
\n
{this.flagActionItems().toArray()}
\n
\n );\n });\n\n Post.prototype.flagReason = function (flag) {\n if (flag.type() === 'user') {\n const user = flag.user();\n const reason = flag.reason() ? app.translator.trans(`flarum-flags.forum.flag_post.reason_${flag.reason()}_label`) : null;\n const detail = flag.reasonDetail();\n const time = humanTime(flag.createdAt());\n\n return [\n app.translator.trans(reason ? 'flarum-flags.forum.post.flagged_by_with_reason_text' : 'flarum-flags.forum.post.flagged_by_text', {\n time,\n user,\n reason,\n }),\n detail ? {detail} : '',\n ];\n }\n };\n}\n","import addFlagsToPosts from './addFlagsToPosts';\nimport addFlagControl from './addFlagControl';\nimport addFlagsDropdown from './addFlagsDropdown';\nimport Flag from './models/Flag';\nimport FlagList from './components/FlagList';\nimport FlagPostModal from './components/FlagPostModal';\nimport FlagsPage from './components/FlagsPage';\nimport FlagsDropdown from './components/FlagsDropdown';\n\nexport default {\n 'flags/addFlagsToPosts': addFlagsToPosts,\n 'flags/addFlagControl': addFlagControl,\n 'flags/addFlagsDropdown': addFlagsDropdown,\n 'flags/models/Flag': Flag,\n 'flags/components/FlagList': FlagList,\n 'flags/components/FlagPostModal': FlagPostModal,\n 'flags/components/FlagsPage': FlagsPage,\n 'flags/components/FlagsDropdown': FlagsDropdown,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\n\nimport Flag from './models/Flag';\nimport FlagsPage from './components/FlagsPage';\nimport FlagListState from './states/FlagListState';\nimport addFlagControl from './addFlagControl';\nimport addFlagsDropdown from './addFlagsDropdown';\nimport addFlagsToPosts from './addFlagsToPosts';\n\napp.initializers.add('flarum-flags', () => {\n Post.prototype.flags = Model.hasMany('flags');\n Post.prototype.canFlag = Model.attribute('canFlag');\n\n app.store.models.flags = Flag;\n\n app.routes.flags = { path: '/flags', component: FlagsPage };\n\n app.flags = new FlagListState(app);\n\n addFlagControl();\n addFlagsDropdown();\n addFlagsToPosts();\n});\n\n// Expose compat API\nimport flagsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\nimport Post from 'flarum/common/models/Post';\n\nObject.assign(compat, flagsCompat);\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","Flag","type","Model","this","reason","reasonDetail","createdAt","post","user","FlagList","oninit","vnode","state","attrs","view","flags","cache","className","app","length","map","flag","href","onclick","e","redraw","avatar","icon","username","em","discussion","title","humanTime","contentPlain","loading","LoadingIndicator","Component","FlagsPage","bodyClass","Page","FlagListState","load","session","attribute","m","store","find","then","pushAttributes","newFlagCount","sort","b","FlagPostModal","success","Stream","content","hide","flagReasons","toArray","disabled","items","ItemList","guidelinesUrl","add","name","checked","withAttr","placeholder","oninput","target","undefined","onsubmit","preventDefault","save","relationships","errorHandler","onerror","loaded","Modal","extend","PostControls","isHidden","contentType","canFlag","FlagsDropdown","initAttrs","label","getMenu","menuClassName","menuClick","showing","component","goToRoute","route","set","getUnreadCount","getNewCount","NotificationsDropdown","HeaderSecondary","Post","body","data","subtree","invalidate","i","next","nextPost","url","apiEndpoint","method","controls","keys","forEach","k","dismissFlag","vdom","revealContent","unshift","flagReason","flagActionItems","detail","time","addFlagsToPosts","addFlagControl","addFlagsDropdown","path","assign","flagsCompat"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/flags/webpack/bootstrap","webpack://@flarum/flags/webpack/runtime/compat get default export","webpack://@flarum/flags/webpack/runtime/define property getters","webpack://@flarum/flags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/flags/webpack/runtime/make namespace object","webpack://@flarum/flags/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/flags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/flags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/flags/./src/forum/models/Flag.ts","webpack://@flarum/flags/./src/forum/states/FlagListState.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/flags/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/flags/./src/forum/components/FlagPostModal.js","webpack://@flarum/flags/./src/forum/addFlagControl.js","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/HeaderSecondary']\"","webpack://@flarum/flags/external root \"flarum.core.compat['components/NotificationsDropdown']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/flags/./src/forum/components/FlagList.js","webpack://@flarum/flags/./src/forum/components/FlagsDropdown.js","webpack://@flarum/flags/./src/forum/addFlagsDropdown.js","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/humanTime']\"","webpack://@flarum/flags/./src/forum/addFlagsToPosts.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/flags/external root \"flarum.core.compat['components/Page']\"","webpack://@flarum/flags/./src/forum/components/FlagsPage.js","webpack://@flarum/flags/./src/forum/extend.ts","webpack://@flarum/flags/./src/forum/compat.js","webpack://@flarum/flags/external assign \"flarum.core\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/flags/./src/forum/index.ts"],"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['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Model from 'flarum/common/Model';\nimport type Post from 'flarum/common/models/Post';\nimport type User from 'flarum/common/models/User';\n\nexport default class Flag extends Model {\n type() {\n return Model.attribute('type').call(this);\n }\n reason() {\n return Model.attribute('reason').call(this);\n }\n reasonDetail() {\n return Model.attribute('reasonDetail').call(this);\n }\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n post() {\n return Model.hasOne('post').call(this);\n }\n user() {\n return Model.hasOne('user').call(this);\n }\n}\n","export default class FlagListState {\n constructor(app) {\n this.app = app;\n\n /**\n * Whether or not the flags are loading.\n *\n * @type {Boolean}\n */\n this.loading = false;\n }\n\n /**\n * Load flags into the application's cache if they haven't already\n * been loaded.\n */\n load() {\n if (this.cache && !this.app.session.user.attribute('newFlagCount')) {\n return;\n }\n\n this.loading = true;\n m.redraw();\n\n this.app.store\n .find('flags')\n .then((flags) => {\n this.app.session.user.pushAttributes({ newFlagCount: 0 });\n this.cache = flags.sort((a, b) => b.createdAt() - a.createdAt());\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","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/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\n\nimport Stream from 'flarum/common/utils/Stream';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport default class FlagPostModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.success = false;\n\n this.reason = Stream('');\n this.reasonDetail = Stream('');\n }\n\n className() {\n return 'FlagPostModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('flarum-flags.forum.flag_post.title');\n }\n\n content() {\n if (this.success) {\n return (\n
\n
\n

{app.translator.trans('flarum-flags.forum.flag_post.confirmation_message')}

\n
\n \n
\n
\n
\n );\n }\n\n return (\n
\n
\n
\n
{this.flagReasons().toArray()}
\n
\n\n
\n \n
\n
\n
\n );\n }\n\n flagReasons() {\n const items = new ItemList();\n const guidelinesUrl = app.forum.attribute('guidelinesUrl');\n\n items.add(\n 'off-topic',\n ,\n 70\n );\n\n items.add(\n 'inappropriate',\n
: undefined,\n })}\n {this.reason() === 'inappropriate' ? (\n \n ) : (\n ''\n )}\n ,\n 60\n );\n\n items.add(\n 'spam',\n ,\n 50\n );\n\n items.add(\n 'other',\n ,\n 10\n );\n\n return items;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n app.store\n .createRecord('flags')\n .save(\n {\n reason: this.reason() === 'other' ? null : this.reason(),\n reasonDetail: this.reasonDetail(),\n relationships: {\n user: app.session.user,\n post: this.attrs.post,\n },\n },\n { errorHandler: this.onerror.bind(this) }\n )\n .then(() => (this.success = true))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport Button from 'flarum/common/components/Button';\n\nimport FlagPostModal from './components/FlagPostModal';\n\nexport default function () {\n extend(PostControls, 'userControls', function (items, post) {\n if (post.isHidden() || post.contentType() !== 'comment' || !post.canFlag()) return;\n\n items.add(\n 'flag',\n \n );\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/HeaderSecondary'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/NotificationsDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","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/helpers/humanTime'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport Link from 'flarum/common/components/Link';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\n\nexport default class FlagList extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.state = this.attrs.state;\n }\n\n view() {\n const flags = this.state.cache || [];\n\n return (\n
\n
\n

{app.translator.trans('flarum-flags.forum.flagged_posts.title')}

\n
\n
\n
    \n {flags.length ? (\n flags.map((flag) => {\n const post = flag.post();\n\n return (\n
  • \n {\n app.flags.index = post;\n e.redraw = false;\n }}\n >\n {avatar(post.user())}\n {icon('fas fa-flag', { className: 'Notification-icon' })}\n \n {app.translator.trans('flarum-flags.forum.flagged_posts.item_text', {\n username: username(post.user()),\n em: ,\n discussion: post.discussion().title(),\n })}\n \n {humanTime(flag.createdAt())}\n
    {post.contentPlain()}
    \n \n
  • \n );\n })\n ) : !this.state.loading ? (\n
    {app.translator.trans('flarum-flags.forum.flagged_posts.empty_text')}
    \n ) : (\n LoadingIndicator.component({ className: 'LoadingIndicator--block' })\n )}\n
\n
\n
\n );\n }\n}\n","import app from 'flarum/forum/app';\nimport NotificationsDropdown from 'flarum/components/NotificationsDropdown';\n\nimport FlagList from './FlagList';\n\nexport default class FlagsDropdown extends NotificationsDropdown {\n static initAttrs(attrs) {\n attrs.label = attrs.label || app.translator.trans('flarum-flags.forum.flagged_posts.tooltip');\n attrs.icon = attrs.icon || 'fas fa-flag';\n\n super.initAttrs(attrs);\n }\n\n getMenu() {\n return (\n
\n {this.showing ? FlagList.component({ state: this.attrs.state }) : ''}\n
\n );\n }\n\n goToRoute() {\n m.route.set(app.route('flags'));\n }\n\n getUnreadCount() {\n return app.flags.cache ? app.flags.cache.length : app.forum.attribute('flagCount');\n }\n\n getNewCount() {\n return app.session.user.attribute('newFlagCount');\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport HeaderSecondary from 'flarum/forum/components/HeaderSecondary';\nimport FlagsDropdown from './components/FlagsDropdown';\n\nexport default function () {\n extend(HeaderSecondary.prototype, 'items', function (items) {\n if (app.forum.attribute('canViewFlags')) {\n items.add('flags', , 15);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/humanTime'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Post from 'flarum/forum/components/Post';\nimport Button from 'flarum/common/components/Button';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport humanTime from 'flarum/common/utils/humanTime';\n\nexport default function () {\n extend(Post.prototype, 'elementAttrs', function (attrs) {\n if (this.attrs.post.flags().length) {\n attrs.className += ' Post--flagged';\n }\n });\n\n Post.prototype.dismissFlag = function (body) {\n const post = this.attrs.post;\n\n delete post.data.relationships.flags;\n\n this.subtree.invalidate();\n\n if (app.flags.cache) {\n app.flags.cache.some((flag, i) => {\n if (flag.post() === post) {\n app.flags.cache.splice(i, 1);\n\n if (app.flags.index === post) {\n let next = app.flags.cache[i];\n\n if (!next) next = app.flags.cache[0];\n\n if (next) {\n const nextPost = next.post();\n app.flags.index = nextPost;\n m.route.set(app.route.post(nextPost));\n }\n }\n\n return true;\n }\n });\n }\n\n return app.request({\n url: app.forum.attribute('apiUrl') + post.apiEndpoint() + '/flags',\n method: 'DELETE',\n body,\n });\n };\n\n Post.prototype.flagActionItems = function () {\n const items = new ItemList();\n\n const controls = PostControls.destructiveControls(this.attrs.post);\n\n Object.keys(controls.items).forEach((k) => {\n const attrs = controls.get(k).attrs;\n\n attrs.className = 'Button';\n\n extend(attrs, 'onclick', () => this.dismissFlag());\n });\n\n items.add('controls',
{controls.toArray()}
);\n\n items.add(\n 'dismiss',\n ,\n -100\n );\n\n return items;\n };\n\n extend(Post.prototype, 'content', function (vdom) {\n const post = this.attrs.post;\n const flags = post.flags();\n\n if (!flags.length) return;\n\n if (post.isHidden()) this.revealContent = true;\n\n vdom.unshift(\n
\n
\n {flags.map((flag) => (\n
{this.flagReason(flag)}
\n ))}\n
\n
{this.flagActionItems().toArray()}
\n
\n );\n });\n\n Post.prototype.flagReason = function (flag) {\n if (flag.type() === 'user') {\n const user = flag.user();\n const reason = flag.reason() ? app.translator.trans(`flarum-flags.forum.flag_post.reason_${flag.reason()}_label`) : null;\n const detail = flag.reasonDetail();\n const time = humanTime(flag.createdAt());\n\n return [\n app.translator.trans(reason ? 'flarum-flags.forum.post.flagged_by_with_reason_text' : 'flarum-flags.forum.post.flagged_by_text', {\n time,\n user,\n reason,\n }),\n detail ? {detail} : '',\n ];\n }\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Page'];","import app from 'flarum/forum/app';\nimport Page from 'flarum/components/Page';\n\nimport FlagList from './FlagList';\n\n/**\n * The `FlagsPage` component shows the flags list. It is only\n * used on mobile devices where the flags dropdown is within the drawer.\n */\nexport default class FlagsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('flags');\n\n app.flags.load();\n\n this.bodyClass = 'App--flags';\n }\n\n view() {\n return (\n
\n \n
\n );\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport FlagsPage from './components/FlagsPage';\n\nexport default [new Extend.Routes().add('flags', '/flags', FlagsPage)];\n","import addFlagsToPosts from './addFlagsToPosts';\nimport addFlagControl from './addFlagControl';\nimport addFlagsDropdown from './addFlagsDropdown';\nimport Flag from './models/Flag';\nimport FlagList from './components/FlagList';\nimport FlagPostModal from './components/FlagPostModal';\nimport FlagsPage from './components/FlagsPage';\nimport FlagsDropdown from './components/FlagsDropdown';\n\nexport default {\n 'flags/addFlagsToPosts': addFlagsToPosts,\n 'flags/addFlagControl': addFlagControl,\n 'flags/addFlagsDropdown': addFlagsDropdown,\n 'flags/models/Flag': Flag,\n 'flags/components/FlagList': FlagList,\n 'flags/components/FlagPostModal': FlagPostModal,\n 'flags/components/FlagsPage': FlagsPage,\n 'flags/components/FlagsDropdown': FlagsDropdown,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\n\nimport Flag from './models/Flag';\nimport FlagsPage from './components/FlagsPage';\nimport FlagListState from './states/FlagListState';\nimport addFlagControl from './addFlagControl';\nimport addFlagsDropdown from './addFlagsDropdown';\nimport addFlagsToPosts from './addFlagsToPosts';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-flags', () => {\n Post.prototype.flags = Model.hasMany('flags');\n Post.prototype.canFlag = Model.attribute('canFlag');\n\n app.store.models.flags = Flag;\n\n app.flags = new FlagListState(app);\n\n addFlagControl();\n addFlagsDropdown();\n addFlagsToPosts();\n});\n\n// Expose compat API\nimport flagsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\nimport Post from 'flarum/common/models/Post';\n\nObject.assign(compat, flagsCompat);\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","Flag","type","Model","this","reason","reasonDetail","createdAt","post","user","FlagListState","app","loading","load","cache","session","attribute","m","redraw","store","find","then","flags","pushAttributes","newFlagCount","sort","b","FlagPostModal","oninit","vnode","success","Stream","className","title","content","onclick","hide","flagReasons","toArray","disabled","items","ItemList","guidelinesUrl","add","name","checked","withAttr","placeholder","oninput","href","target","undefined","onsubmit","e","preventDefault","save","relationships","attrs","errorHandler","onerror","loaded","Modal","extend","PostControls","isHidden","contentType","canFlag","icon","FlagList","state","view","length","map","flag","avatar","username","em","discussion","humanTime","contentPlain","LoadingIndicator","Component","FlagsDropdown","initAttrs","label","getMenu","menuClassName","menuClick","showing","component","goToRoute","route","set","getUnreadCount","getNewCount","NotificationsDropdown","HeaderSecondary","Post","body","data","subtree","invalidate","i","next","nextPost","url","apiEndpoint","method","controls","keys","forEach","k","dismissFlag","vdom","revealContent","unshift","flagReason","flagActionItems","detail","time","FlagsPage","bodyClass","Page","Extend","addFlagsToPosts","addFlagControl","addFlagsDropdown","assign","flagsCompat"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/likes/js/dist/forum.js b/extensions/likes/js/dist/forum.js index 7e325c81c..efd6510cb 100644 --- a/extensions/likes/js/dist/forum.js +++ b/extensions/likes/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:o=>{var e=o&&o.__esModule?()=>o.default:()=>o;return t.d(e,{a:e}),e},d:(o,e)=>{for(var n in e)t.o(e,n)&&!t.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:e[n]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};(()=>{"use strict";t.r(o);const e=flarum.core.compat["common/extend"],n=flarum.core.compat["forum/app"];var r=t.n(n);const s=flarum.core.compat["common/models/Post"];var a=t.n(s);const i=flarum.core.compat["common/Model"];var u=t.n(i);const c=flarum.core.compat["forum/components/NotificationGrid"];var l=t.n(c);const f=flarum.core.compat["common/components/Button"];var p=t.n(f);const d=flarum.core.compat["forum/components/CommentPost"];var k=t.n(d);const h=flarum.core.compat["common/components/Link"];var v=t.n(h);const y=flarum.core.compat["common/helpers/punctuateSeries"];var b=t.n(y);const _=flarum.core.compat["common/helpers/username"];var g=t.n(_);const P=flarum.core.compat["common/helpers/icon"];var L=t.n(P);function x(t,o){return x=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,o){return t.__proto__=o,t},x(t,o)}function M(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,x(t,o)}const O=flarum.core.compat["common/components/Modal"];var j=t.n(O);const N=flarum.core.compat["common/helpers/avatar"];var B=t.n(N),S=function(t){function o(){return t.apply(this,arguments)||this}M(o,t);var e=o.prototype;return e.className=function(){return"PostLikesModal Modal--small"},e.title=function(){return r().translator.trans("flarum-likes.forum.post_likes.title")},e.content=function(){return m("div",{className:"Modal-body"},m("ul",{className:"PostLikesModal-list"},this.attrs.post.likes().map((function(t){return m("li",null,m(v(),{href:r().route.user(t)},B()(t)," ",g()(t)))}))))},o}(j());const I=flarum.core.compat["forum/components/Notification"];var T=t.n(I);const U=flarum.core.compat["common/utils/string"];var w=function(t){function o(){return t.apply(this,arguments)||this}M(o,t);var e=o.prototype;return e.icon=function(){return"far fa-thumbs-up"},e.href=function(){return r().route.post(this.attrs.notification.subject())},e.content=function(){var t=this.attrs.notification.fromUser();return r().translator.trans("flarum-likes.forum.notifications.post_liked_text",{user:t,count:1})},e.excerpt=function(){return(0,U.truncate)(this.attrs.notification.subject().contentPlain(),200)},o}(T());const C=flarum.core.compat["forum/components/UserPage"];var z=t.n(C);const A=flarum.core.compat["common/components/LinkButton"];var D=t.n(A);const G=flarum.core.compat["forum/components/PostsUserPage"];var H=function(t){function o(){return t.apply(this,arguments)||this}return M(o,t),o.prototype.loadResults=function(t){return r().store.find("posts",{filter:{type:"comment",likedBy:this.user.id()},page:{offset:t,limit:this.loadLimit},sort:"-createdAt"})},o}(t.n(G)());r().initializers.add("flarum-likes",(function(){r().notificationComponents.postLiked=w,a().prototype.canLike=u().attribute("canLike"),a().prototype.likes=u().hasMany("likes"),(0,e.extend)(k().prototype,"actionItems",(function(t){var o=this.attrs.post;if(!o.isHidden()&&o.canLike()){var e=o.likes(),n=r().session.user&&e&&e.some((function(t){return t===r().session.user}));t.add("like",p().component({className:"Button Button--link",onclick:function(){n=!n,o.save({isLiked:n});var t=o.data.relationships.likes.data;t.some((function(o,e){if(o.id===r().session.user.id())return t.splice(e,1),!0})),n&&t.unshift({type:"users",id:r().session.user.id()})}},r().translator.trans(n?"flarum-likes.forum.post.unlike_link":"flarum-likes.forum.post.like_link")))}})),(0,e.extend)(k().prototype,"footerItems",(function(t){var o=this.attrs.post,e=o.likes();if(e&&e.length){var n=e.length>4,s=e.sort((function(t){return t===r().session.user?-1:1})).slice(0,n?3:4).map((function(t){return m(v(),{href:r().route.user(t)},t===r().session.user?r().translator.trans("flarum-likes.forum.post.you_text"):g()(t))}));if(n){var a=e.length-s.length;s.push(m("a",{href:"#",onclick:function(t){t.preventDefault(),r().modal.show(S,{post:o})}},r().translator.trans("flarum-likes.forum.post.others_link",{count:a})))}t.add("liked",m("div",{className:"Post-likedBy"},L()("far fa-thumbs-up"),r().translator.trans("flarum-likes.forum.post.liked_by"+(e[0]===r().session.user?"_self":"")+"_text",{count:s.length,users:b()(s)})))}})),r().routes["user.likes"]={path:"/u/:username/likes",component:H},(0,e.extend)(z().prototype,"navItems",(function(t){var o=this.user;t.add("likes",m(D(),{href:r().route("user.likes",{username:o.slug()}),icon:"far fa-thumbs-up"},r().translator.trans("flarum-likes.forum.user.likes_link")),88)})),(0,e.extend)(l().prototype,"notificationTypes",(function(t){t.add("postLiked",{name:"postLiked",icon:"far fa-thumbs-up",label:r().translator.trans("flarum-likes.forum.settings.notify_post_liked_label")})}))}))})(),module.exports=o})(); +(()=>{var t={n:o=>{var e=o&&o.__esModule?()=>o.default:()=>o;return t.d(e,{a:e}),e},d:(o,e)=>{for(var n in e)t.o(e,n)&&!t.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:e[n]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};(()=>{"use strict";t.r(o),t.d(o,{extend:()=>E});const e=flarum.core.compat["common/extend"],n=flarum.core.compat["forum/app"];var r=t.n(n);const s=flarum.core.compat["common/models/Post"];var a=t.n(s);const i=flarum.core.compat["common/Model"];var u=t.n(i);const c=flarum.core.compat["forum/components/NotificationGrid"];var l=t.n(c);const f=flarum.core.compat["common/components/Button"];var p=t.n(f);const d=flarum.core.compat["forum/components/CommentPost"];var k=t.n(d);const h=flarum.core.compat["common/components/Link"];var v=t.n(h);const y=flarum.core.compat["common/helpers/punctuateSeries"];var b=t.n(y);const _=flarum.core.compat["common/helpers/username"];var g=t.n(_);const P=flarum.core.compat["common/helpers/icon"];var x=t.n(P);function L(t,o){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,o){return t.__proto__=o,t},L(t,o)}function M(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,L(t,o)}const O=flarum.core.compat["common/components/Modal"];var j=t.n(O);const N=flarum.core.compat["common/helpers/avatar"];var B=t.n(N),S=function(t){function o(){return t.apply(this,arguments)||this}M(o,t);var e=o.prototype;return e.className=function(){return"PostLikesModal Modal--small"},e.title=function(){return r().translator.trans("flarum-likes.forum.post_likes.title")},e.content=function(){return m("div",{className:"Modal-body"},m("ul",{className:"PostLikesModal-list"},this.attrs.post.likes().map((function(t){return m("li",null,m(v(),{href:r().route.user(t)},B()(t)," ",g()(t)))}))))},o}(j());const w=flarum.core.compat["forum/components/Notification"];var I=t.n(w);const T=flarum.core.compat["common/utils/string"];var U=function(t){function o(){return t.apply(this,arguments)||this}M(o,t);var e=o.prototype;return e.icon=function(){return"far fa-thumbs-up"},e.href=function(){return r().route.post(this.attrs.notification.subject())},e.content=function(){var t=this.attrs.notification.fromUser();return r().translator.trans("flarum-likes.forum.notifications.post_liked_text",{user:t,count:1})},e.excerpt=function(){return(0,T.truncate)(this.attrs.notification.subject().contentPlain(),200)},o}(I());const C=flarum.core.compat["forum/components/UserPage"];var R=t.n(C);const z=flarum.core.compat["common/components/LinkButton"];var A=t.n(z);const D=flarum.core.compat["common/extenders"];var G=t.n(D);const H=flarum.core.compat["forum/components/PostsUserPage"];var q=function(t){function o(){return t.apply(this,arguments)||this}return M(o,t),o.prototype.loadResults=function(t){return r().store.find("posts",{filter:{type:"comment",likedBy:this.user.id()},page:{offset:t,limit:this.loadLimit},sort:"-createdAt"})},o}(t.n(H)());const E=[(new(G().Routes)).add("user.likes","/u/:username/likes",q)];r().initializers.add("flarum-likes",(function(){r().notificationComponents.postLiked=U,a().prototype.canLike=u().attribute("canLike"),a().prototype.likes=u().hasMany("likes"),(0,e.extend)(k().prototype,"actionItems",(function(t){var o=this.attrs.post;if(!o.isHidden()&&o.canLike()){var e=o.likes(),n=r().session.user&&e&&e.some((function(t){return t===r().session.user}));t.add("like",p().component({className:"Button Button--link",onclick:function(){n=!n,o.save({isLiked:n});var t=o.data.relationships.likes.data;t.some((function(o,e){if(o.id===r().session.user.id())return t.splice(e,1),!0})),n&&t.unshift({type:"users",id:r().session.user.id()})}},r().translator.trans(n?"flarum-likes.forum.post.unlike_link":"flarum-likes.forum.post.like_link")))}})),(0,e.extend)(k().prototype,"footerItems",(function(t){var o=this.attrs.post,e=o.likes();if(e&&e.length){var n=e.length>4,s=e.sort((function(t){return t===r().session.user?-1:1})).slice(0,n?3:4).map((function(t){return m(v(),{href:r().route.user(t)},t===r().session.user?r().translator.trans("flarum-likes.forum.post.you_text"):g()(t))}));if(n){var a=e.length-s.length;s.push(m("a",{href:"#",onclick:function(t){t.preventDefault(),r().modal.show(S,{post:o})}},r().translator.trans("flarum-likes.forum.post.others_link",{count:a})))}t.add("liked",m("div",{className:"Post-likedBy"},x()("far fa-thumbs-up"),r().translator.trans("flarum-likes.forum.post.liked_by"+(e[0]===r().session.user?"_self":"")+"_text",{count:s.length,users:b()(s)})))}})),(0,e.extend)(R().prototype,"navItems",(function(t){var o=this.user;t.add("likes",m(A(),{href:r().route("user.likes",{username:null==o?void 0:o.slug()}),icon:"far fa-thumbs-up"},r().translator.trans("flarum-likes.forum.user.likes_link")),88)})),(0,e.extend)(l().prototype,"notificationTypes",(function(t){t.add("postLiked",{name:"postLiked",icon:"far fa-thumbs-up",label:r().translator.trans("flarum-likes.forum.settings.notify_post_liked_label")})}))}))})(),module.exports=o})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/likes/js/dist/forum.js.map b/extensions/likes/js/dist/forum.js.map index ae119d0d5..8d5a86411 100644 --- a/extensions/likes/js/dist/forum.js.map +++ b/extensions/likes/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/likes/webpack/bootstrap","webpack://@flarum/likes/webpack/runtime/compat get default export","webpack://@flarum/likes/webpack/runtime/define property getters","webpack://@flarum/likes/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/likes/webpack/runtime/make namespace object","webpack://@flarum/likes/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/likes/./src/forum/components/PostLikesModal.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/likes/./src/forum/components/PostLikedNotification.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/likes/./src/forum/components/LikesUserPage.tsx","webpack://@flarum/likes/./src/forum/index.js","webpack://@flarum/likes/./src/forum/addLikeAction.js","webpack://@flarum/likes/./src/forum/addLikesList.js","webpack://@flarum/likes/./src/forum/addLikesTabToUserProfile.tsx"],"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['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","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'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Link from 'flarum/common/components/Link';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\n\nexport default class PostLikesModal extends Modal {\n className() {\n return 'PostLikesModal Modal--small';\n }\n\n title() {\n return app.translator.trans('flarum-likes.forum.post_likes.title');\n }\n\n content() {\n return (\n
\n
    \n {this.attrs.post.likes().map((user) => (\n
  • \n \n {avatar(user)} {username(user)}\n \n
  • \n ))}\n
\n
\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostLikedNotification extends Notification {\n icon() {\n return 'far fa-thumbs-up';\n }\n\n href() {\n return app.route.post(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-likes.forum.notifications.post_liked_text', { user, count: 1 });\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['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `LikesUserPage` component shows posts which user the user liked.\n */\nexport default class LikesUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param offset The position to start getting results from.\n * @protected\n */\n loadResults(offset: number) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n likedBy: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Post from 'flarum/common/models/Post';\nimport Model from 'flarum/common/Model';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addLikeAction from './addLikeAction';\nimport addLikesList from './addLikesList';\nimport PostLikedNotification from './components/PostLikedNotification';\nimport addLikesTabToUserProfile from './addLikesTabToUserProfile';\n\napp.initializers.add('flarum-likes', () => {\n app.notificationComponents.postLiked = PostLikedNotification;\n\n Post.prototype.canLike = Model.attribute('canLike');\n Post.prototype.likes = Model.hasMany('likes');\n\n addLikeAction();\n addLikesList();\n addLikesTabToUserProfile();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postLiked', {\n name: 'postLiked',\n icon: 'far fa-thumbs-up',\n label: app.translator.trans('flarum-likes.forum.settings.notify_post_liked_label'),\n });\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || !post.canLike()) return;\n\n const likes = post.likes();\n\n let isLiked = app.session.user && likes && likes.some((user) => user === app.session.user);\n\n items.add(\n 'like',\n Button.component(\n {\n className: 'Button Button--link',\n onclick: () => {\n isLiked = !isLiked;\n\n post.save({ isLiked });\n\n // We've saved the fact that we do or don't like the post, but in order\n // to provide instantaneous feedback to the user, we'll need to add or\n // remove the like from the relationship data manually.\n const data = post.data.relationships.likes.data;\n data.some((like, i) => {\n if (like.id === app.session.user.id()) {\n data.splice(i, 1);\n return true;\n }\n });\n\n if (isLiked) {\n data.unshift({ type: 'users', id: app.session.user.id() });\n }\n },\n },\n app.translator.trans(isLiked ? 'flarum-likes.forum.post.unlike_link' : 'flarum-likes.forum.post.like_link')\n )\n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\n\nimport PostLikesModal from './components/PostLikesModal';\n\nexport default function () {\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const likes = post.likes();\n\n if (likes && likes.length) {\n const limit = 4;\n const overLimit = likes.length > limit;\n\n // Construct a list of names of users who have liked this post. Make sure the\n // current user is first in the list, and cap a maximum of 4 items.\n const names = likes\n .sort((a) => (a === app.session.user ? -1 : 1))\n .slice(0, overLimit ? limit - 1 : limit)\n .map((user) => {\n return (\n \n {user === app.session.user ? app.translator.trans('flarum-likes.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 = likes.length - names.length;\n\n names.push(\n {\n e.preventDefault();\n app.modal.show(PostLikesModal, { post });\n }}\n >\n {app.translator.trans('flarum-likes.forum.post.others_link', { count })}\n
\n );\n }\n\n items.add(\n 'liked',\n
\n {icon('far fa-thumbs-up')}\n {app.translator.trans('flarum-likes.forum.post.liked_by' + (likes[0] === app.session.user ? '_self' : '') + '_text', {\n count: names.length,\n users: punctuateSeries(names),\n })}\n
\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport LikesUserPage from './components/LikesUserPage';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addLikesTabToUserProfile() {\n app.routes['user.likes'] = { path: '/u/:username/likes', component: LikesUserPage };\n extend(UserPage.prototype, 'navItems', function (items: ItemList) {\n const user = this.user;\n items.add(\n 'likes',\n \n {app.translator.trans('flarum-likes.forum.user.likes_link')}\n ,\n 88\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","PostLikesModal","className","title","app","content","this","attrs","post","likes","map","user","href","avatar","username","Modal","PostLikedNotification","icon","notification","subject","fromUser","count","excerpt","truncate","contentPlain","Notification","LikesUserPage","loadResults","offset","filter","type","likedBy","id","page","limit","loadLimit","sort","PostsUserPage","Post","Model","extend","CommentPost","items","isHidden","canLike","isLiked","some","add","Button","onclick","save","data","relationships","like","i","splice","unshift","length","overLimit","names","slice","push","e","preventDefault","users","punctuateSeries","path","component","UserPage","slug","NotificationGrid","name","label"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/likes/webpack/bootstrap","webpack://@flarum/likes/webpack/runtime/compat get default export","webpack://@flarum/likes/webpack/runtime/define property getters","webpack://@flarum/likes/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/likes/webpack/runtime/make namespace object","webpack://@flarum/likes/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/likes/./src/forum/components/PostLikesModal.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/likes/./src/forum/components/PostLikedNotification.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/likes/./src/forum/components/LikesUserPage.tsx","webpack://@flarum/likes/./src/forum/extend.ts","webpack://@flarum/likes/./src/forum/index.js","webpack://@flarum/likes/./src/forum/addLikeAction.js","webpack://@flarum/likes/./src/forum/addLikesList.js","webpack://@flarum/likes/./src/forum/addLikesTabToUserProfile.tsx"],"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['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","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'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Link from 'flarum/common/components/Link';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\n\nexport default class PostLikesModal extends Modal {\n className() {\n return 'PostLikesModal Modal--small';\n }\n\n title() {\n return app.translator.trans('flarum-likes.forum.post_likes.title');\n }\n\n content() {\n return (\n
\n
    \n {this.attrs.post.likes().map((user) => (\n
  • \n \n {avatar(user)} {username(user)}\n \n
  • \n ))}\n
\n
\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostLikedNotification extends Notification {\n icon() {\n return 'far fa-thumbs-up';\n }\n\n href() {\n return app.route.post(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-likes.forum.notifications.post_liked_text', { user, count: 1 });\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/extenders'];","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 `LikesUserPage` component shows posts which user the user liked.\n */\nexport default class LikesUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param offset The position to start getting results from.\n * @protected\n */\n loadResults(offset: number) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n likedBy: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport LikesUserPage from './components/LikesUserPage';\n\nexport default [new Extend.Routes().add('user.likes', '/u/:username/likes', LikesUserPage)];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Post from 'flarum/common/models/Post';\nimport Model from 'flarum/common/Model';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addLikeAction from './addLikeAction';\nimport addLikesList from './addLikesList';\nimport PostLikedNotification from './components/PostLikedNotification';\nimport addLikesTabToUserProfile from './addLikesTabToUserProfile';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-likes', () => {\n app.notificationComponents.postLiked = PostLikedNotification;\n\n Post.prototype.canLike = Model.attribute('canLike');\n Post.prototype.likes = Model.hasMany('likes');\n\n addLikeAction();\n addLikesList();\n addLikesTabToUserProfile();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postLiked', {\n name: 'postLiked',\n icon: 'far fa-thumbs-up',\n label: app.translator.trans('flarum-likes.forum.settings.notify_post_liked_label'),\n });\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || !post.canLike()) return;\n\n const likes = post.likes();\n\n let isLiked = app.session.user && likes && likes.some((user) => user === app.session.user);\n\n items.add(\n 'like',\n Button.component(\n {\n className: 'Button Button--link',\n onclick: () => {\n isLiked = !isLiked;\n\n post.save({ isLiked });\n\n // We've saved the fact that we do or don't like the post, but in order\n // to provide instantaneous feedback to the user, we'll need to add or\n // remove the like from the relationship data manually.\n const data = post.data.relationships.likes.data;\n data.some((like, i) => {\n if (like.id === app.session.user.id()) {\n data.splice(i, 1);\n return true;\n }\n });\n\n if (isLiked) {\n data.unshift({ type: 'users', id: app.session.user.id() });\n }\n },\n },\n app.translator.trans(isLiked ? 'flarum-likes.forum.post.unlike_link' : 'flarum-likes.forum.post.like_link')\n )\n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\n\nimport PostLikesModal from './components/PostLikesModal';\n\nexport default function () {\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const likes = post.likes();\n\n if (likes && likes.length) {\n const limit = 4;\n const overLimit = likes.length > limit;\n\n // Construct a list of names of users who have liked this post. Make sure the\n // current user is first in the list, and cap a maximum of 4 items.\n const names = likes\n .sort((a) => (a === app.session.user ? -1 : 1))\n .slice(0, overLimit ? limit - 1 : limit)\n .map((user) => {\n return (\n \n {user === app.session.user ? app.translator.trans('flarum-likes.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 = likes.length - names.length;\n\n names.push(\n {\n e.preventDefault();\n app.modal.show(PostLikesModal, { post });\n }}\n >\n {app.translator.trans('flarum-likes.forum.post.others_link', { count })}\n \n );\n }\n\n items.add(\n 'liked',\n
\n {icon('far fa-thumbs-up')}\n {app.translator.trans('flarum-likes.forum.post.liked_by' + (likes[0] === app.session.user ? '_self' : '') + '_text', {\n count: names.length,\n users: punctuateSeries(names),\n })}\n
\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addLikesTabToUserProfile() {\n extend(UserPage.prototype, 'navItems', function (items: ItemList) {\n const user = this.user;\n items.add(\n 'likes',\n \n {app.translator.trans('flarum-likes.forum.user.likes_link')}\n ,\n 88\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","PostLikesModal","className","title","app","content","this","attrs","post","likes","map","user","href","avatar","username","Modal","PostLikedNotification","icon","notification","subject","fromUser","count","excerpt","truncate","contentPlain","Notification","LikesUserPage","loadResults","offset","filter","type","likedBy","id","page","limit","loadLimit","sort","PostsUserPage","Extend","add","Post","Model","extend","CommentPost","items","isHidden","canLike","isLiked","some","Button","onclick","save","data","relationships","like","i","splice","unshift","length","overLimit","names","slice","push","e","preventDefault","users","punctuateSeries","UserPage","slug","NotificationGrid","name","label"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/lock/js/dist/forum.js b/extensions/lock/js/dist/forum.js index 9821c6fc6..f425a95d4 100644 --- a/extensions/lock/js/dist/forum.js +++ b/extensions/lock/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var o={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return o.d(n,{a:n}),n},d:(t,n)=>{for(var c in n)o.o(n,c)&&!o.o(t,c)&&Object.defineProperty(t,c,{enumerable:!0,get:n[c]})},o:(o,t)=>Object.prototype.hasOwnProperty.call(o,t),r:o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},t={};(()=>{"use strict";o.r(t);const n=flarum.core.compat["common/extend"],c=flarum.core.compat["forum/app"];var r=o.n(c);const e=flarum.core.compat["common/Model"];var s=o.n(e);const a=flarum.core.compat["common/models/Discussion"];var i=o.n(a);const u=flarum.core.compat["forum/components/NotificationGrid"];var l=o.n(u);function f(o,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,t){return o.__proto__=t,o},f(o,t)}function p(o,t){o.prototype=Object.create(t.prototype),o.prototype.constructor=o,f(o,t)}const d=flarum.core.compat["forum/components/EventPost"];var k=function(o){function t(){return o.apply(this,arguments)||this}p(t,o);var n=t.prototype;return n.icon=function(){return this.attrs.post.content().locked?"fas fa-lock":"fas fa-unlock"},n.descriptionKey=function(){return this.attrs.post.content().locked?"flarum-lock.forum.post_stream.discussion_locked_text":"flarum-lock.forum.post_stream.discussion_unlocked_text"},t}(o.n(d)());const y=flarum.core.compat["forum/components/Notification"];var b=function(o){function t(){return o.apply(this,arguments)||this}p(t,o);var n=t.prototype;return n.icon=function(){return"fas fa-lock"},n.href=function(){var o=this.attrs.notification;return r().route.discussion(o.subject(),o.content().postNumber)},n.content=function(){return r().translator.trans("flarum-lock.forum.notifications.discussion_locked_text",{user:this.attrs.notification.fromUser()})},t}(o.n(y)());const _=flarum.core.compat["common/components/Badge"];var v=o.n(_);const h=flarum.core.compat["forum/utils/DiscussionControls"];var L=o.n(h);const g=flarum.core.compat["forum/components/DiscussionPage"];var O=o.n(g);const j=flarum.core.compat["common/components/Button"];var x=o.n(j);r().initializers.add("flarum-lock",(function(){r().postComponents.discussionLocked=k,r().notificationComponents.discussionLocked=b,i().prototype.isLocked=s().attribute("isLocked"),i().prototype.canLock=s().attribute("canLock"),(0,n.extend)(i().prototype,"badges",(function(o){this.isLocked()&&o.add("locked",v().component({type:"locked",label:r().translator.trans("flarum-lock.forum.badge.locked_tooltip"),icon:"fas fa-lock"}))})),(0,n.extend)(L(),"moderationControls",(function(o,t){t.canLock()&&o.add("lock",x().component({icon:"fas fa-lock",onclick:this.lockAction.bind(t)},r().translator.trans(t.isLocked()?"flarum-lock.forum.discussion_controls.unlock_button":"flarum-lock.forum.discussion_controls.lock_button")))})),L().lockAction=function(){this.save({isLocked:!this.isLocked()}).then((function(){r().current.matches(O())&&r().current.get("stream").update(),m.redraw()}))},(0,n.extend)(l().prototype,"notificationTypes",(function(o){o.add("discussionLocked",{name:"discussionLocked",icon:"fas fa-lock",label:r().translator.trans("flarum-lock.forum.settings.notify_discussion_locked_label")})}))}))})(),module.exports=t})(); +(()=>{var o={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return o.d(n,{a:n}),n},d:(t,n)=>{for(var c in n)o.o(n,c)&&!o.o(t,c)&&Object.defineProperty(t,c,{enumerable:!0,get:n[c]})},o:(o,t)=>Object.prototype.hasOwnProperty.call(o,t),r:o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},t={};(()=>{"use strict";o.r(t),o.d(t,{extend:()=>M});const n=flarum.core.compat["common/extend"],c=flarum.core.compat["forum/app"];var e=o.n(c);const r=flarum.core.compat["common/Model"];var s=o.n(r);const a=flarum.core.compat["common/models/Discussion"];var i=o.n(a);const u=flarum.core.compat["forum/components/NotificationGrid"];var l=o.n(u);function f(o,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,t){return o.__proto__=t,o},f(o,t)}function d(o,t){o.prototype=Object.create(t.prototype),o.prototype.constructor=o,f(o,t)}const p=flarum.core.compat["forum/components/Notification"];var k=function(o){function t(){return o.apply(this,arguments)||this}d(t,o);var n=t.prototype;return n.icon=function(){return"fas fa-lock"},n.href=function(){var o=this.attrs.notification;return e().route.discussion(o.subject(),o.content().postNumber)},n.content=function(){return e().translator.trans("flarum-lock.forum.notifications.discussion_locked_text",{user:this.attrs.notification.fromUser()})},t}(o.n(p)());const y=flarum.core.compat["common/components/Badge"];var b=o.n(y);const _=flarum.core.compat["forum/utils/DiscussionControls"];var v=o.n(_);const h=flarum.core.compat["forum/components/DiscussionPage"];var L=o.n(h);const g=flarum.core.compat["common/components/Button"];var x=o.n(g);const O=flarum.core.compat["common/extenders"];var P=o.n(O);const j=flarum.core.compat["forum/components/EventPost"];var S=function(o){function t(){return o.apply(this,arguments)||this}d(t,o);var n=t.prototype;return n.icon=function(){return this.attrs.post.content().locked?"fas fa-lock":"fas fa-unlock"},n.descriptionKey=function(){return this.attrs.post.content().locked?"flarum-lock.forum.post_stream.discussion_locked_text":"flarum-lock.forum.post_stream.discussion_unlocked_text"},t}(o.n(j)());const M=[(new(P().PostTypes)).add("discussionLocked",S)];e().initializers.add("flarum-lock",(function(){e().notificationComponents.discussionLocked=k,i().prototype.isLocked=s().attribute("isLocked"),i().prototype.canLock=s().attribute("canLock"),(0,n.extend)(i().prototype,"badges",(function(o){this.isLocked()&&o.add("locked",b().component({type:"locked",label:e().translator.trans("flarum-lock.forum.badge.locked_tooltip"),icon:"fas fa-lock"}))})),(0,n.extend)(v(),"moderationControls",(function(o,t){t.canLock()&&o.add("lock",x().component({icon:"fas fa-lock",onclick:this.lockAction.bind(t)},e().translator.trans(t.isLocked()?"flarum-lock.forum.discussion_controls.unlock_button":"flarum-lock.forum.discussion_controls.lock_button")))})),v().lockAction=function(){this.save({isLocked:!this.isLocked()}).then((function(){e().current.matches(L())&&e().current.get("stream").update(),m.redraw()}))},(0,n.extend)(l().prototype,"notificationTypes",(function(o){o.add("discussionLocked",{name:"discussionLocked",icon:"fas fa-lock",label:e().translator.trans("flarum-lock.forum.settings.notify_discussion_locked_label")})}))}))})(),module.exports=t})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/lock/js/dist/forum.js.map b/extensions/lock/js/dist/forum.js.map index 29061d6b4..2cfa9d032 100644 --- a/extensions/lock/js/dist/forum.js.map +++ b/extensions/lock/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/lock/webpack/bootstrap","webpack://@flarum/lock/webpack/runtime/compat get default export","webpack://@flarum/lock/webpack/runtime/define property getters","webpack://@flarum/lock/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/lock/webpack/runtime/make namespace object","webpack://@flarum/lock/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/lock/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/lock/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedPost.js","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedNotification.js","webpack://@flarum/lock/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/lock/./src/forum/index.js","webpack://@flarum/lock/./src/forum/addLockBadge.js","webpack://@flarum/lock/./src/forum/addLockControl.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['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\n\nexport default class DiscussionLockedPost extends EventPost {\n icon() {\n return this.attrs.post.content().locked ? 'fas fa-lock' : 'fas fa-unlock';\n }\n\n descriptionKey() {\n return this.attrs.post.content().locked\n ? 'flarum-lock.forum.post_stream.discussion_locked_text'\n : 'flarum-lock.forum.post_stream.discussion_unlocked_text';\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';\n\nexport default class DiscussionLockedNotification extends Notification {\n icon() {\n return 'fas fa-lock';\n }\n\n href() {\n const notification = this.attrs.notification;\n\n return app.route.discussion(notification.subject(), notification.content().postNumber);\n }\n\n content() {\n return app.translator.trans('flarum-lock.forum.notifications.discussion_locked_text', { user: this.attrs.notification.fromUser() });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport DiscussionLockedPost from './components/DiscussionLockedPost';\nimport DiscussionLockedNotification from './components/DiscussionLockedNotification';\nimport addLockBadge from './addLockBadge';\nimport addLockControl from './addLockControl';\n\napp.initializers.add('flarum-lock', () => {\n app.postComponents.discussionLocked = DiscussionLockedPost;\n app.notificationComponents.discussionLocked = DiscussionLockedNotification;\n\n Discussion.prototype.isLocked = Model.attribute('isLocked');\n Discussion.prototype.canLock = Model.attribute('canLock');\n\n addLockBadge();\n addLockControl();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('discussionLocked', {\n name: 'discussionLocked',\n icon: 'fas fa-lock',\n label: app.translator.trans('flarum-lock.forum.settings.notify_discussion_locked_label'),\n });\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addLockBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isLocked()) {\n badges.add(\n 'locked',\n Badge.component({\n type: 'locked',\n label: app.translator.trans('flarum-lock.forum.badge.locked_tooltip'),\n icon: 'fas fa-lock',\n })\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\n\nexport default function addLockControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canLock()) {\n items.add(\n 'lock',\n Button.component(\n {\n icon: 'fas fa-lock',\n onclick: this.lockAction.bind(discussion),\n },\n app.translator.trans(\n discussion.isLocked() ? 'flarum-lock.forum.discussion_controls.unlock_button' : 'flarum-lock.forum.discussion_controls.lock_button'\n )\n )\n );\n }\n });\n\n DiscussionControls.lockAction = function () {\n this.save({ isLocked: !this.isLocked() }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","DiscussionLockedPost","icon","this","attrs","post","content","locked","descriptionKey","EventPost","DiscussionLockedNotification","href","notification","app","subject","postNumber","user","fromUser","Notification","Discussion","Model","extend","badges","isLocked","add","Badge","type","label","DiscussionControls","items","discussion","canLock","Button","onclick","lockAction","save","then","DiscussionPage","update","m","redraw","NotificationGrid","name"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/lock/webpack/bootstrap","webpack://@flarum/lock/webpack/runtime/compat get default export","webpack://@flarum/lock/webpack/runtime/define property getters","webpack://@flarum/lock/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/lock/webpack/runtime/make namespace object","webpack://@flarum/lock/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/lock/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/lock/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedNotification.js","webpack://@flarum/lock/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedPost.js","webpack://@flarum/lock/./src/forum/extend.ts","webpack://@flarum/lock/./src/forum/index.js","webpack://@flarum/lock/./src/forum/addLockBadge.js","webpack://@flarum/lock/./src/forum/addLockControl.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['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class DiscussionLockedNotification extends Notification {\n icon() {\n return 'fas fa-lock';\n }\n\n href() {\n const notification = this.attrs.notification;\n\n return app.route.discussion(notification.subject(), notification.content().postNumber);\n }\n\n content() {\n return app.translator.trans('flarum-lock.forum.notifications.discussion_locked_text', { user: this.attrs.notification.fromUser() });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\n\nexport default class DiscussionLockedPost extends EventPost {\n icon() {\n return this.attrs.post.content().locked ? 'fas fa-lock' : 'fas fa-unlock';\n }\n\n descriptionKey() {\n return this.attrs.post.content().locked\n ? 'flarum-lock.forum.post_stream.discussion_locked_text'\n : 'flarum-lock.forum.post_stream.discussion_unlocked_text';\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport DiscussionLockedPost from './components/DiscussionLockedPost';\n\nexport default [new Extend.PostTypes().add('discussionLocked', DiscussionLockedPost)];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport DiscussionLockedNotification from './components/DiscussionLockedNotification';\nimport addLockBadge from './addLockBadge';\nimport addLockControl from './addLockControl';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-lock', () => {\n app.notificationComponents.discussionLocked = DiscussionLockedNotification;\n\n Discussion.prototype.isLocked = Model.attribute('isLocked');\n Discussion.prototype.canLock = Model.attribute('canLock');\n\n addLockBadge();\n addLockControl();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('discussionLocked', {\n name: 'discussionLocked',\n icon: 'fas fa-lock',\n label: app.translator.trans('flarum-lock.forum.settings.notify_discussion_locked_label'),\n });\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addLockBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isLocked()) {\n badges.add(\n 'locked',\n Badge.component({\n type: 'locked',\n label: app.translator.trans('flarum-lock.forum.badge.locked_tooltip'),\n icon: 'fas fa-lock',\n })\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\n\nexport default function addLockControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canLock()) {\n items.add(\n 'lock',\n Button.component(\n {\n icon: 'fas fa-lock',\n onclick: this.lockAction.bind(discussion),\n },\n app.translator.trans(\n discussion.isLocked() ? 'flarum-lock.forum.discussion_controls.unlock_button' : 'flarum-lock.forum.discussion_controls.lock_button'\n )\n )\n );\n }\n });\n\n DiscussionControls.lockAction = function () {\n this.save({ isLocked: !this.isLocked() }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","DiscussionLockedNotification","icon","href","notification","this","attrs","app","subject","content","postNumber","user","fromUser","Notification","DiscussionLockedPost","post","locked","descriptionKey","EventPost","Extend","add","Discussion","Model","extend","badges","isLocked","Badge","type","label","DiscussionControls","items","discussion","canLock","Button","onclick","lockAction","save","then","DiscussionPage","update","m","redraw","NotificationGrid","name"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/mentions/js/dist/forum.js b/extensions/mentions/js/dist/forum.js index e46343f26..afe72ac78 100644 --- a/extensions/mentions/js/dist/forum.js +++ b/extensions/mentions/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},d:(n,e)=>{for(var o in e)t.o(e,o)&&!t.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:e[o]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};(()=>{"use strict";t.r(n),t.d(n,{filterGroupMentions:()=>Nt,filterPostMentions:()=>kt,filterUserMentions:()=>At});var e={};t.r(e),t.d(e,{default:()=>W,insertMention:()=>L});var o={};t.r(o),t.d(o,{filterGroupMentions:()=>Nt,filterPostMentions:()=>kt,filterUserMentions:()=>At});const r=flarum.core.compat["common/extend"],s=flarum.core.compat["forum/app"];var i=t.n(s);const a=flarum.core.compat["forum/components/NotificationGrid"];var u=t.n(a);const c=flarum.core.compat["common/utils/string"],f=flarum.core.compat["forum/components/CommentPost"];var l=t.n(f);const d=flarum.core.compat["forum/components/PostPreview"];var p=t.n(d);const h=flarum.core.compat["common/components/LoadingIndicator"];var v=t.n(h);const g=flarum.core.compat["common/Model"];var y=t.n(g);const b=flarum.core.compat["common/models/Post"];var w=t.n(b);const P=flarum.core.compat["common/components/Link"];var x=t.n(P);const M=flarum.core.compat["common/helpers/punctuateSeries"];var C=t.n(M);const _=flarum.core.compat["common/helpers/username"];var T=t.n(_);const B=flarum.core.compat["common/helpers/icon"];var A=t.n(B);const k=flarum.core.compat["common/components/Button"];var N=t.n(k);const S=flarum.core.compat["forum/utils/DiscussionControls"];var D=t.n(S);const I=flarum.core.compat["forum/components/EditPostComposer"];var U=t.n(I);const j=flarum.core.compat["common/utils/extractText"];var E=t.n(j),H=function(){return E()(i().translator.trans("core.lib.username.deleted_text"))};function O(t,n){return void 0===n&&(n=!0),t?((n?t.displayName():t.username())||H()).replace(/"#[a-z]{0,3}[0-9]+/,"_"):H().replace(/"#[a-z]{0,3}[0-9]+/,"_")}function G(t,n,e){if(void 0!==t&&void 0===n)return i().forum.attribute("allowUsernameMentionFormat")?"@"+O(t,!1):'@"'+O(t)+'"#'+t.id();if(void 0!==t&&void 0!==n)return'@"'+O(t)+'"#p'+n;if(void 0!==e)return'@"'+e.namePlural()+'"#g'+e.id();throw"No parameters were passed"}function L(t,n,e){return new Promise((function(o){var r=G(t.user(),t.id())+" ";n.fields.content()||(n.body.attrs.originalContent=r);var s=n.editor.getSelectionRange()[0],i=n.fields.content().slice(0,s),a=0==i.length?0:3-i.match(/(\n{0,2})$/)[0].length;return n.editor.insertAtCursor(Array(a).join("\n")+(e?"> "+r+e.trim().replace(/\n/g,"\n> ")+"\n\n":r),!1),o(n)}))}function W(t,n){return i().composer.bodyMatches(U())&&i().composer.body.attrs.post.discussion()===t.discussion()?L(t,i().composer,n):D().replyAction.call(t.discussion()).then((function(e){return L(t,e,n)}))}function R(t,n){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},R(t,n)}function q(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,R(t,n)}const J=flarum.core.compat["common/Fragment"];var F=t.n(J),z=function(t){function n(n){var e;return(e=t.call(this)||this).post=n,e}q(n,t);var e=n.prototype;return e.view=function(){var t=this;return m("button",{class:"Button PostQuoteButton",onclick:function(){W(t.post,t.content)}},A()("fas fa-quote-left",{className:"Button-icon"}),i().translator.trans("flarum-mentions.forum.post.quote_button"))},e.show=function(t,n){var e=this.$().show(),o=e.offsetParent().offset();e.css("left",t-o.left).css("top",n-o.top),this.hideHandler=this.hide.bind(this),$(document).on("mouseup",this.hideHandler)},e.showStart=function(t,n){var e=this.$();this.show(t,$(window).scrollTop()+n-e.outerHeight()-5)},e.showEnd=function(t,n){var e=this.$();this.show(t-e.outerWidth(),$(window).scrollTop()+n+5)},e.hide=function(){this.$().hide(),$(document).off("mouseup",this.hideHandler)},n}(F());function Q(t){var n=window.getSelection();if(!n.isCollapsed){var e=n.getRangeAt(0),o=e.commonAncestorContainer;if(t[0]===o||$.contains(t[0],o)){var r=$("
").append(e.cloneContents());return r.find("img.emoji").replaceWith((function(){return this.alt})),r.find("img").replaceWith((function(){return"![]("+this.src+")"})),r.find("a").replaceWith((function(){return"["+this.innerText+"]("+this.href+")"})),r.text()}}return""}const X=flarum.core.compat["common/components/TextEditor"];var Y=t.n(X);const K=flarum.core.compat["common/components/TextEditorButton"];var V=t.n(K);const Z=flarum.core.compat["forum/components/ReplyComposer"];var tt=t.n(Z);const nt=flarum.core.compat["common/helpers/avatar"];var et=t.n(nt);const ot=flarum.core.compat["common/helpers/highlight"];var rt=t.n(ot);const st=flarum.core.compat["common/utils/KeyboardNavigatable"];var it=t.n(st);const at=flarum.core.compat["common/utils/throttleDebounce"],ut=flarum.core.compat["common/components/Badge"];var ct=t.n(ut);const mt=flarum.core.compat["common/models/Group"];var ft=t.n(mt),lt=function(t){function n(){for(var n,e=arguments.length,o=new Array(e),r=0;r=o.length&&(r=0),this.index=r;var s=o.removeClass("active").eq(r).addClass("active");if(n){var i,a=e.scrollTop(),u=e.offset().top,c=u+e.outerHeight(),m=s.offset().top,f=m+s.outerHeight();mc&&(i=a-c+f+parseInt(e.css("padding-bottom"),10)),void 0!==i&&e.stop(!0).animate({scrollTop:i},100)}}},n}(F()),dt=(0,at.throttle)(250,(function(t,n,e,o,r,s){var a=t.toLowerCase();n.includes(a)||(i().store.find("users",{filter:{q:t},page:{limit:5}}).then((function(t){t.forEach((function(t){o.has(t.id())||(o.add(t.id()),e.push(t))})),s()})),n.push(a))}));const pt=flarum.core.compat["forum/components/Notification"];var ht=t.n(pt),vt=function(t){function n(){return t.apply(this,arguments)||this}q(n,t);var e=n.prototype;return e.icon=function(){return"fas fa-reply"},e.href=function(){var t=this.attrs.notification,n=t.subject(),e=t.content();return i().route.discussion(n.discussion(),e&&e.replyNumber)},e.content=function(){var t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.post_mentioned_text",{user:t,count:1})},e.excerpt=function(){return(0,c.truncate)(this.attrs.notification.subject().contentPlain()||"",200)},n}(ht()),gt=function(t){function n(){return t.apply(this,arguments)||this}q(n,t);var e=n.prototype;return e.icon=function(){return"fas fa-at"},e.href=function(){var t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())},e.content=function(){var t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.user_mentioned_text",{user:t})},e.excerpt=function(){return(0,c.truncate)(this.attrs.notification.subject().contentPlain(),200)},n}(ht()),yt=function(t){function n(){return t.apply(this,arguments)||this}q(n,t);var e=n.prototype;return e.icon=function(){return"fas fa-at"},e.href=function(){var t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())},e.content=function(){var t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.group_mentioned_text",{user:t})},e.excerpt=function(){return(0,c.truncate)(this.attrs.notification.subject().contentPlain(),200)},n}(ht());const bt=flarum.core.compat["forum/components/UserPage"];var wt=t.n(bt);const Pt=flarum.core.compat["common/components/LinkButton"];var xt=t.n(Pt);const Mt=flarum.core.compat["forum/components/PostsUserPage"];var $t=function(t){function n(){return t.apply(this,arguments)||this}return q(n,t),n.prototype.loadResults=function(t){return i().store.find("posts",{filter:{type:"comment",mentioned:this.user.id()},page:{offset:t,limit:this.loadLimit},sort:"-createdAt"})},n}(t.n(Mt)());const Ct=flarum.core.compat["common/models/User"];var _t=t.n(Ct);const Tt=flarum.core.compat["common/utils/isDark"];var Bt=t.n(Tt);function At(t){var n;if(i().forum.attribute("allowUsernameMentionFormat")&&t.hasAttribute("username")?n=i().store.getBy("users","username",t.getAttribute("username")):t.hasAttribute("id")&&(n=i().store.getById("users",t.getAttribute("id"))),n)return t.setAttribute("id",n.id()),t.setAttribute("slug",n.slug()),t.setAttribute("displayname",E()(T()(n))),!0;t.invalidate()}function kt(t){var n=i().store.getById("posts",t.getAttribute("id"));if(n)return t.setAttribute("discussionid",n.discussion().id()),t.setAttribute("number",n.number()),t.setAttribute("displayname",E()(T()(n.user()))),!0}function Nt(t){var n,e;if(null!=(n=i().session)&&null!=(e=n.user)&&e.canMentionGroups()){var o=i().store.getById("groups",t.getAttribute("id"));if(o)return t.setAttribute("groupname",E()(o.namePlural())),t.setAttribute("icon",o.icon()),t.setAttribute("color",o.color()),t.setAttribute("class",Bt()(o.color())?"GroupMention--light":"GroupMention--dark"),!0}t.invalidate()}const St={"mentions/components/MentionsUserPage":$t,"mentions/components/PostMentionedNotification":vt,"mentions/components/UserMentionedNotification":gt,"mentions/components/GroupMentionedNotification":yt,"mentions/fragments/AutocompleteDropdown":lt,"mentions/fragments/PostQuoteButton":z,"mentions/utils/getCleanDisplayName":O,"mentions/utils/getMentionText":G,"mentions/utils/reply":e,"mentions/utils/selectedText":Q,"mentions/utils/textFormatter":o},Dt=flarum.core;i().initializers.add("flarum-mentions",(function(){var t,n;_t().prototype.canMentionGroups=y().attribute("canMentionGroups"),function(){function t(){var t=this.attrs.post.contentHtml();if(t!==this.oldPostContentHtml&&!this.isEditing()){this.oldPostContentHtml=t;var n=this.attrs.post,e=this.$();this.$().on("click",".UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted)",(function(t){m.route.set(this.getAttribute("href")),t.preventDefault()})),this.$(".PostMention:not(.PostMention--deleted)").each((function(){var t,o=$(this),r=o.data("id"),s=$('
'),n=new lt,(0,r.extend)(Y().prototype,"oncreate",(function(){var e=this.$(".TextEditor-editor").wrap('
');this.navigator=new(it()),this.navigator.when((function(){return n.active})).onUp((function(){return n.navigate(-1)})).onDown((function(){return n.navigate(1)})).onSelect(n.complete.bind(n)).onCancel(n.hide.bind(n)).bindTo(e),e.after(t)})),(0,r.extend)(Y().prototype,"buildEditorParams",(function(e){var o,r,s,a,u=this,f=[],l=Array.from(i().store.all("users")),d=new Set(l.map((function(t){return t.id()}))),p=Array.from(i().store.all("groups").filter((function(t){return t.id()!=ft().GUEST_ID&&t.id()!=ft().MEMBER_ID}))),h=function(t){u.attrs.composer.editor.replaceBeforeCursor(r-1,t+" "),n.hide()};e.inputListeners.push((function(){var e=u.attrs.composer.editor.getSelectionRange(),v=e[0];if(!(e[1]-v>0)){var g=u.attrs.composer.editor.getLastNChars(30);r=0;for(var y=g.length-1;y>=0;y--)if("@"===g.substr(y,1)&&(0==y||/\s/.test(g.substr(y-1,1)))){o=y+1,r=v-g.length+y+1;break}if(n.hide(),n.active=!1,r){s=g.substring(o).toLowerCase(),a=s.match(/^["|“]((?:(?!"#).)+)$/),s=a&&a[1]||s;var b=function(t,e,o,r){void 0===r&&(r="");var i=T()(t);return s&&(i.children=[rt()(i.text,s)],delete i.text),m("button",{className:"PostPreview "+r,onclick:function(){return h(e)},onmouseenter:function(){n.setIndex($(this).parent().index())}},m("span",{className:"PostPreview-content"},et()(t),i," ",o))},w=function(t){return[t.username(),t.displayName()].some((function(t){return t.toLowerCase().substr(0,s.length)===s}))},P=function(){var e,o,a=[];if(s&&(l.forEach((function(t){w(t)&&a.push(b(t,G(t),"","MentionsDropdown-user"))})),null!=(e=i().session)&&null!=(o=e.user)&&o.canMentionGroups()&&p.forEach((function(t){(function(t){return[t.nameSingular(),t.namePlural()].some((function(t){return t.toLowerCase().substr(0,s.length)===s}))})(t)&&a.push(function(t,e,o,r){void 0===r&&(r="");var i=t.namePlural().toLowerCase();return s&&(i=rt()(i,s)),m("button",{className:"PostPreview "+r,onclick:function(){return h(e)},onmouseenter:function(){n.setIndex($(this).parent().index())}},m("span",{className:"PostPreview-content"},m(ct(),{class:"Avatar Badge Badge--group--"+t.id()+" Badge-icon ",color:t.color(),type:"group",icon:t.icon()}),m("span",{className:"username"},i)))}(t,G(void 0,void 0,t),0,"MentionsDropdown-group"))}))),u.attrs.composer.bodyMatches(tt())||u.attrs.composer.bodyMatches(U())){var f=u.attrs.composer.body.attrs,d=f.post,v=d&&d.discussion()||f.discussion;v&&v.posts().filter((function(t){return t&&"comment"===t.contentType()&&(!d||t.number()x.height()&&(C=g.top-P-15),M+y>x.width()&&(M=x.width()-y),C=Math.max(-(x.offset().top-$(document).scrollTop()),C),M=Math.max(-x.offset().left,M),n.show(M,C)}else n.active=!1,n.hide()};n.active=!0,P(),n.setIndex(0),n.$().scrollTop(0),s.length>1&&i().forum.attribute("canSearchUsers")&&dt(s,f,l,d,n,P)}}}))})),(0,r.extend)(Y().prototype,"toolbarItems",(function(t){var n=this;t.add("mention",m(V(),{onclick:function(){return n.attrs.composer.editor.insertAtCursor(" @")},icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.composer.mention_tooltip")))})),i().notificationComponents.postMentioned=vt,i().notificationComponents.userMentioned=gt,i().notificationComponents.groupMentioned=yt,(0,r.extend)(u().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")})})),i().routes["user.mentions"]={path:"/u/:username/mentions",component:$t},(0,r.extend)(wt().prototype,"navItems",(function(t){var n=this.user;t.add("mentions",xt().component({href:i().route("user.mentions",{username:n.slug()}),name:"mentions",icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.user.mentions_link")),80)})),c.getPlainContent.removeSelectors.push("a.PostMention")})),Object.assign(Dt.compat,St)})(),module.exports=n})(); +(()=>{var t={n:n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},d:(n,e)=>{for(var o in e)t.o(e,o)&&!t.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:e[o]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};(()=>{"use strict";t.r(n),t.d(n,{extend:()=>At,filterGroupMentions:()=>It,filterPostMentions:()=>Dt,filterUserMentions:()=>St});var e={};t.r(e),t.d(e,{default:()=>W,insertMention:()=>L});var o={};t.r(o),t.d(o,{filterGroupMentions:()=>It,filterPostMentions:()=>Dt,filterUserMentions:()=>St});const r=flarum.core.compat["common/extend"],s=flarum.core.compat["forum/app"];var i=t.n(s);const a=flarum.core.compat["forum/components/NotificationGrid"];var u=t.n(a);const c=flarum.core.compat["common/utils/string"],f=flarum.core.compat["forum/components/CommentPost"];var l=t.n(f);const d=flarum.core.compat["forum/components/PostPreview"];var p=t.n(d);const h=flarum.core.compat["common/components/LoadingIndicator"];var v=t.n(h);const g=flarum.core.compat["common/Model"];var y=t.n(g);const b=flarum.core.compat["common/models/Post"];var w=t.n(b);const P=flarum.core.compat["common/components/Link"];var x=t.n(P);const M=flarum.core.compat["common/helpers/punctuateSeries"];var C=t.n(M);const _=flarum.core.compat["common/helpers/username"];var T=t.n(_);const B=flarum.core.compat["common/helpers/icon"];var A=t.n(B);const k=flarum.core.compat["common/components/Button"];var N=t.n(k);const S=flarum.core.compat["forum/utils/DiscussionControls"];var D=t.n(S);const I=flarum.core.compat["forum/components/EditPostComposer"];var U=t.n(I);const j=flarum.core.compat["common/utils/extractText"];var E=t.n(j),H=function(){return E()(i().translator.trans("core.lib.username.deleted_text"))};function O(t,n){return void 0===n&&(n=!0),t?((n?t.displayName():t.username())||H()).replace(/"#[a-z]{0,3}[0-9]+/,"_"):H().replace(/"#[a-z]{0,3}[0-9]+/,"_")}function G(t,n,e){if(void 0!==t&&void 0===n)return i().forum.attribute("allowUsernameMentionFormat")?"@"+O(t,!1):'@"'+O(t)+'"#'+t.id();if(void 0!==t&&void 0!==n)return'@"'+O(t)+'"#p'+n;if(void 0!==e)return'@"'+e.namePlural()+'"#g'+e.id();throw"No parameters were passed"}function L(t,n,e){return new Promise((function(o){var r=G(t.user(),t.id())+" ";n.fields.content()||(n.body.attrs.originalContent=r);var s=n.editor.getSelectionRange()[0],i=n.fields.content().slice(0,s),a=0==i.length?0:3-i.match(/(\n{0,2})$/)[0].length;return n.editor.insertAtCursor(Array(a).join("\n")+(e?"> "+r+e.trim().replace(/\n/g,"\n> ")+"\n\n":r),!1),o(n)}))}function W(t,n){return i().composer.bodyMatches(U())&&i().composer.body.attrs.post.discussion()===t.discussion()?L(t,i().composer,n):D().replyAction.call(t.discussion()).then((function(e){return L(t,e,n)}))}function R(t,n){return R=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},R(t,n)}function q(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,R(t,n)}const J=flarum.core.compat["common/Fragment"];var F=t.n(J),z=function(t){function n(n){var e;return(e=t.call(this)||this).post=n,e}q(n,t);var e=n.prototype;return e.view=function(){var t=this;return m("button",{class:"Button PostQuoteButton",onclick:function(){W(t.post,t.content)}},A()("fas fa-quote-left",{className:"Button-icon"}),i().translator.trans("flarum-mentions.forum.post.quote_button"))},e.show=function(t,n){var e=this.$().show(),o=e.offsetParent().offset();e.css("left",t-o.left).css("top",n-o.top),this.hideHandler=this.hide.bind(this),$(document).on("mouseup",this.hideHandler)},e.showStart=function(t,n){var e=this.$();this.show(t,$(window).scrollTop()+n-e.outerHeight()-5)},e.showEnd=function(t,n){var e=this.$();this.show(t-e.outerWidth(),$(window).scrollTop()+n+5)},e.hide=function(){this.$().hide(),$(document).off("mouseup",this.hideHandler)},n}(F());function Q(t){var n=window.getSelection();if(!n.isCollapsed){var e=n.getRangeAt(0),o=e.commonAncestorContainer;if(t[0]===o||$.contains(t[0],o)){var r=$("
").append(e.cloneContents());return r.find("img.emoji").replaceWith((function(){return this.alt})),r.find("img").replaceWith((function(){return"![]("+this.src+")"})),r.find("a").replaceWith((function(){return"["+this.innerText+"]("+this.href+")"})),r.text()}}return""}const X=flarum.core.compat["common/components/TextEditor"];var Y=t.n(X);const K=flarum.core.compat["common/components/TextEditorButton"];var V=t.n(K);const Z=flarum.core.compat["forum/components/ReplyComposer"];var tt=t.n(Z);const nt=flarum.core.compat["common/helpers/avatar"];var et=t.n(nt);const ot=flarum.core.compat["common/helpers/highlight"];var rt=t.n(ot);const st=flarum.core.compat["common/utils/KeyboardNavigatable"];var it=t.n(st);const at=flarum.core.compat["common/utils/throttleDebounce"],ut=flarum.core.compat["common/components/Badge"];var ct=t.n(ut);const mt=flarum.core.compat["common/models/Group"];var ft=t.n(mt),lt=function(t){function n(){for(var n,e=arguments.length,o=new Array(e),r=0;r=o.length&&(r=0),this.index=r;var s=o.removeClass("active").eq(r).addClass("active");if(n){var i,a=e.scrollTop(),u=e.offset().top,c=u+e.outerHeight(),m=s.offset().top,f=m+s.outerHeight();mc&&(i=a-c+f+parseInt(e.css("padding-bottom"),10)),void 0!==i&&e.stop(!0).animate({scrollTop:i},100)}}},n}(F()),dt=(0,at.throttle)(250,(function(t,n,e,o,r,s){var a=t.toLowerCase();n.includes(a)||(i().store.find("users",{filter:{q:t},page:{limit:5}}).then((function(t){t.forEach((function(t){o.has(t.id())||(o.add(t.id()),e.push(t))})),s()})),n.push(a))}));const pt=flarum.core.compat["forum/components/Notification"];var ht=t.n(pt),vt=function(t){function n(){return t.apply(this,arguments)||this}q(n,t);var e=n.prototype;return e.icon=function(){return"fas fa-reply"},e.href=function(){var t=this.attrs.notification,n=t.subject(),e=t.content();return i().route.discussion(n.discussion(),e&&e.replyNumber)},e.content=function(){var t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.post_mentioned_text",{user:t,count:1})},e.excerpt=function(){return(0,c.truncate)(this.attrs.notification.subject().contentPlain()||"",200)},n}(ht()),gt=function(t){function n(){return t.apply(this,arguments)||this}q(n,t);var e=n.prototype;return e.icon=function(){return"fas fa-at"},e.href=function(){var t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())},e.content=function(){var t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.user_mentioned_text",{user:t})},e.excerpt=function(){return(0,c.truncate)(this.attrs.notification.subject().contentPlain(),200)},n}(ht()),yt=function(t){function n(){return t.apply(this,arguments)||this}q(n,t);var e=n.prototype;return e.icon=function(){return"fas fa-at"},e.href=function(){var t=this.attrs.notification.subject();return i().route.discussion(t.discussion(),t.number())},e.content=function(){var t=this.attrs.notification.fromUser();return i().translator.trans("flarum-mentions.forum.notifications.group_mentioned_text",{user:t})},e.excerpt=function(){return(0,c.truncate)(this.attrs.notification.subject().contentPlain(),200)},n}(ht());const bt=flarum.core.compat["forum/components/UserPage"];var wt=t.n(bt);const Pt=flarum.core.compat["common/components/LinkButton"];var xt=t.n(Pt);const Mt=flarum.core.compat["common/models/User"];var $t=t.n(Mt);const Ct=flarum.core.compat["common/extenders"];var _t=t.n(Ct);const Tt=flarum.core.compat["forum/components/PostsUserPage"];var Bt=function(t){function n(){return t.apply(this,arguments)||this}return q(n,t),n.prototype.loadResults=function(t){return i().store.find("posts",{filter:{type:"comment",mentioned:this.user.id()},page:{offset:t,limit:this.loadLimit},sort:"-createdAt"})},n}(t.n(Tt)());const At=[(new(_t().Routes)).add("user.mentions","/u/:username/mentions",Bt)],kt=flarum.core.compat["common/utils/isDark"];var Nt=t.n(kt);function St(t){var n;if(i().forum.attribute("allowUsernameMentionFormat")&&t.hasAttribute("username")?n=i().store.getBy("users","username",t.getAttribute("username")):t.hasAttribute("id")&&(n=i().store.getById("users",t.getAttribute("id"))),n)return t.setAttribute("id",n.id()),t.setAttribute("slug",n.slug()),t.setAttribute("displayname",E()(T()(n))),!0;t.invalidate()}function Dt(t){var n=i().store.getById("posts",t.getAttribute("id"));if(n)return t.setAttribute("discussionid",n.discussion().id()),t.setAttribute("number",n.number()),t.setAttribute("displayname",E()(T()(n.user()))),!0}function It(t){var n,e;if(null!=(n=i().session)&&null!=(e=n.user)&&e.canMentionGroups()){var o=i().store.getById("groups",t.getAttribute("id"));if(o)return t.setAttribute("groupname",E()(o.namePlural())),t.setAttribute("icon",o.icon()),t.setAttribute("color",o.color()),t.setAttribute("class",Nt()(o.color())?"GroupMention--light":"GroupMention--dark"),!0}t.invalidate()}const Ut={"mentions/components/MentionsUserPage":Bt,"mentions/components/PostMentionedNotification":vt,"mentions/components/UserMentionedNotification":gt,"mentions/components/GroupMentionedNotification":yt,"mentions/fragments/AutocompleteDropdown":lt,"mentions/fragments/PostQuoteButton":z,"mentions/utils/getCleanDisplayName":O,"mentions/utils/getMentionText":G,"mentions/utils/reply":e,"mentions/utils/selectedText":Q,"mentions/utils/textFormatter":o},jt=flarum.core;i().initializers.add("flarum-mentions",(function(){var t,n;$t().prototype.canMentionGroups=y().attribute("canMentionGroups"),function(){function t(){var t=this.attrs.post.contentHtml();if(t!==this.oldPostContentHtml&&!this.isEditing()){this.oldPostContentHtml=t;var n=this.attrs.post,e=this.$();this.$().on("click",".UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted)",(function(t){m.route.set(this.getAttribute("href")),t.preventDefault()})),this.$(".PostMention:not(.PostMention--deleted)").each((function(){var t,o=$(this),r=o.data("id"),s=$('
'),n=new lt,(0,r.extend)(Y().prototype,"oncreate",(function(){var e=this.$(".TextEditor-editor").wrap('
');this.navigator=new(it()),this.navigator.when((function(){return n.active})).onUp((function(){return n.navigate(-1)})).onDown((function(){return n.navigate(1)})).onSelect(n.complete.bind(n)).onCancel(n.hide.bind(n)).bindTo(e),e.after(t)})),(0,r.extend)(Y().prototype,"buildEditorParams",(function(e){var o,r,s,a,u=this,f=[],l=Array.from(i().store.all("users")),d=new Set(l.map((function(t){return t.id()}))),p=Array.from(i().store.all("groups").filter((function(t){return t.id()!=ft().GUEST_ID&&t.id()!=ft().MEMBER_ID}))),h=function(t){u.attrs.composer.editor.replaceBeforeCursor(r-1,t+" "),n.hide()};e.inputListeners.push((function(){var e=u.attrs.composer.editor.getSelectionRange(),v=e[0];if(!(e[1]-v>0)){var g=u.attrs.composer.editor.getLastNChars(30);r=0;for(var y=g.length-1;y>=0;y--)if("@"===g.substr(y,1)&&(0==y||/\s/.test(g.substr(y-1,1)))){o=y+1,r=v-g.length+y+1;break}if(n.hide(),n.active=!1,r){s=g.substring(o).toLowerCase(),a=s.match(/^["|“]((?:(?!"#).)+)$/),s=a&&a[1]||s;var b=function(t,e,o,r){void 0===r&&(r="");var i=T()(t);return s&&(i.children=[rt()(i.text,s)],delete i.text),m("button",{className:"PostPreview "+r,onclick:function(){return h(e)},onmouseenter:function(){n.setIndex($(this).parent().index())}},m("span",{className:"PostPreview-content"},et()(t),i," ",o))},w=function(t){return[t.username(),t.displayName()].some((function(t){return t.toLowerCase().substr(0,s.length)===s}))},P=function(){var e,o,a=[];if(s&&(l.forEach((function(t){w(t)&&a.push(b(t,G(t),"","MentionsDropdown-user"))})),null!=(e=i().session)&&null!=(o=e.user)&&o.canMentionGroups()&&p.forEach((function(t){(function(t){return[t.nameSingular(),t.namePlural()].some((function(t){return t.toLowerCase().substr(0,s.length)===s}))})(t)&&a.push(function(t,e,o,r){void 0===r&&(r="");var i=t.namePlural().toLowerCase();return s&&(i=rt()(i,s)),m("button",{className:"PostPreview "+r,onclick:function(){return h(e)},onmouseenter:function(){n.setIndex($(this).parent().index())}},m("span",{className:"PostPreview-content"},m(ct(),{class:"Avatar Badge Badge--group--"+t.id()+" Badge-icon ",color:t.color(),type:"group",icon:t.icon()}),m("span",{className:"username"},i)))}(t,G(void 0,void 0,t),0,"MentionsDropdown-group"))}))),u.attrs.composer.bodyMatches(tt())||u.attrs.composer.bodyMatches(U())){var f=u.attrs.composer.body.attrs,d=f.post,v=d&&d.discussion()||f.discussion;v&&v.posts().filter((function(t){return t&&"comment"===t.contentType()&&(!d||t.number()x.height()&&(C=g.top-P-15),M+y>x.width()&&(M=x.width()-y),C=Math.max(-(x.offset().top-$(document).scrollTop()),C),M=Math.max(-x.offset().left,M),n.show(M,C)}else n.active=!1,n.hide()};n.active=!0,P(),n.setIndex(0),n.$().scrollTop(0),s.length>1&&i().forum.attribute("canSearchUsers")&&dt(s,f,l,d,n,P)}}}))})),(0,r.extend)(Y().prototype,"toolbarItems",(function(t){var n=this;t.add("mention",m(V(),{onclick:function(){return n.attrs.composer.editor.insertAtCursor(" @")},icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.composer.mention_tooltip")))})),i().notificationComponents.postMentioned=vt,i().notificationComponents.userMentioned=gt,i().notificationComponents.groupMentioned=yt,(0,r.extend)(u().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,r.extend)(wt().prototype,"navItems",(function(t){var n=this.user;t.add("mentions",xt().component({href:i().route("user.mentions",{username:n.slug()}),name:"mentions",icon:"fas fa-at"},i().translator.trans("flarum-mentions.forum.user.mentions_link")),80)})),c.getPlainContent.removeSelectors.push("a.PostMention")})),Object.assign(jt.compat,Ut)})(),module.exports=n})(); //# 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 c9896fac8..0385dddab 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['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/Model']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Post']\"","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['forum/utils/DiscussionControls']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/EditPostComposer']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/mentions/./src/forum/utils/getCleanDisplayName.js","webpack://@flarum/mentions/./src/forum/utils/getMentionText.js","webpack://@flarum/mentions/./src/forum/utils/reply.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.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['forum/components/ReplyComposer']\"","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/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/throttleDebounce']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Group']\"","webpack://@flarum/mentions/./src/forum/fragments/AutocompleteDropdown.js","webpack://@flarum/mentions/./src/forum/addComposerAutocomplete.js","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['forum/components/PostsUserPage']\"","webpack://@flarum/mentions/./src/forum/components/MentionsUserPage.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/User']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/isDark']\"","webpack://@flarum/mentions/./src/forum/utils/textFormatter.js","webpack://@flarum/mentions/./src/forum/compat.js","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"],"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['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/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","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['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EditPostComposer'];","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 getCleanDisplayName, { shouldUseOldFormat } from './getCleanDisplayName';\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 * @example New display name syntax\n * // '@\"User\"#1'\n * getMentionText(User) // User is ID 1, display name is 'User'\n *\n * @example Replying\n * // '@\"User\"#p13'\n * getMentionText(User, 13) // User display name is 'User', post ID is 13\n *\n * @example Using old syntax\n * // '@username'\n * getMentionText(User) // User's username is 'username'\n *\n * @example Group mention\n * // '@\"Mods\"#g4'\n * getMentionText(undefined, undefined, group) // Group display name is 'Mods', group ID is 4\n */\nexport default function getMentionText(user, postId, group) {\n if (user !== undefined && postId === undefined) {\n if (shouldUseOldFormat()) {\n // Plain @username\n const cleanText = getCleanDisplayName(user, false);\n return `@${cleanText}`;\n }\n // @\"Display name\"#UserID\n const cleanText = getCleanDisplayName(user);\n return `@\"${cleanText}\"#${user.id()}`;\n } else if (user !== undefined && postId !== undefined) {\n // @\"Display name\"#pPostID\n const cleanText = getCleanDisplayName(user);\n return `@\"${cleanText}\"#p${postId}`;\n } else if (group !== undefined) {\n // @\"Name Plural\"#gGroupID\n return `@\"${group.namePlural()}\"#g${group.id()}`;\n } else {\n throw 'No parameters were passed';\n }\n}\n","import app from 'flarum/forum/app';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport getMentionText from './getMentionText';\n\nexport function insertMention(post, composer, quote) {\n return new Promise((resolve) => {\n const user = post.user();\n const mention = getMentionText(user, post.id()) + ' ';\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","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\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['forum/components/ReplyComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/throttleDebounce'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","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 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 ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport avatar from 'flarum/common/helpers/avatar';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport highlight from 'flarum/common/helpers/highlight';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport { truncate } from 'flarum/common/utils/string';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\nimport Badge from 'flarum/common/components/Badge';\nimport Group from 'flarum/common/models/Group';\n\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport getMentionText from './utils/getMentionText';\n\nconst throttledSearch = throttle(\n 250, // 250ms timeout\n function (typed, searched, returnedUsers, returnedUserIds, dropdown, buildSuggestions) {\n const typedLower = typed.toLowerCase();\n if (!searched.includes(typedLower)) {\n app.store.find('users', { filter: { q: typed }, page: { limit: 5 } }).then((results) => {\n results.forEach((u) => {\n if (!returnedUserIds.has(u.id())) {\n returnedUserIds.add(u.id());\n returnedUsers.push(u);\n }\n });\n\n buildSuggestions();\n });\n\n searched.push(typedLower);\n }\n }\n);\n\nexport default function addComposerAutocomplete() {\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 const searched = [];\n let relMentionStart;\n let absMentionStart;\n let typed;\n let matchTyped;\n\n // We store users returned from an API here to preserve order in which they are returned\n // This prevents the user list jumping around while users are returned.\n // We also use a hashset for user IDs to provide O(1) lookup for the users already in the list.\n const returnedUsers = Array.from(app.store.all('users'));\n const returnedUserIds = new Set(returnedUsers.map((u) => u.id()));\n\n // Store groups, but exclude the two virtual groups - 'Guest' and 'Member'.\n const returnedGroups = Array.from(\n app.store.all('groups').filter((group) => {\n return group.id() != Group.GUEST_ID && group.id() != Group.MEMBER_ID;\n })\n );\n\n const applySuggestion = (replacement) => {\n this.attrs.composer.editor.replaceBeforeCursor(absMentionStart - 1, replacement + ' ');\n\n dropdown.hide();\n };\n\n params.inputListeners.push(() => {\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 an '@' symbol. If we find one,\n // we will want to show the autocomplete dropdown!\n const lastChunk = this.attrs.composer.editor.getLastNChars(30);\n absMentionStart = 0;\n for (let i = lastChunk.length - 1; i >= 0; i--) {\n const character = lastChunk.substr(i, 1);\n if (character === '@' && (i == 0 || /\\s/.test(lastChunk.substr(i - 1, 1)))) {\n relMentionStart = i + 1;\n absMentionStart = cursor - lastChunk.length + i + 1;\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (absMentionStart) {\n typed = lastChunk.substring(relMentionStart).toLowerCase();\n matchTyped = typed.match(/^[\"|“]((?:(?!\"#).)+)$/);\n typed = (matchTyped && matchTyped[1]) || typed;\n\n const makeSuggestion = function (user, replacement, content, className = '') {\n const username = usernameHelper(user);\n\n if (typed) {\n username.children = [highlight(username.text, typed)];\n delete username.text;\n }\n\n return (\n applySuggestion(replacement)}\n onmouseenter={function () {\n dropdown.setIndex($(this).parent().index());\n }}\n >\n \n {avatar(user)}\n {username} {content}\n \n \n );\n };\n\n const makeGroupSuggestion = function (group, replacement, content, className = '') {\n let groupName = group.namePlural().toLowerCase();\n\n if (typed) {\n groupName = highlight(groupName, typed);\n }\n\n return (\n applySuggestion(replacement)}\n onmouseenter={function () {\n dropdown.setIndex($(this).parent().index());\n }}\n >\n \n \n {groupName}\n \n \n );\n };\n\n const userMatches = function (user) {\n const names = [user.username(), user.displayName()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n };\n\n const groupMatches = function (group) {\n const names = [group.nameSingular(), group.namePlural()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n };\n\n const buildSuggestions = () => {\n const suggestions = [];\n\n // If the user has started to type a username, then suggest users\n // matching that username.\n if (typed) {\n returnedUsers.forEach((user) => {\n if (!userMatches(user)) return;\n\n suggestions.push(makeSuggestion(user, getMentionText(user), '', 'MentionsDropdown-user'));\n });\n\n // ... or groups.\n if (app.session?.user?.canMentionGroups()) {\n returnedGroups.forEach((group) => {\n if (!groupMatches(group)) return;\n\n suggestions.push(makeGroupSuggestion(group, getMentionText(undefined, undefined, group), '', 'MentionsDropdown-group'));\n });\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 if (this.attrs.composer.bodyMatches(ReplyComposer) || this.attrs.composer.bodyMatches(EditPostComposer)) {\n const composerAttrs = this.attrs.composer.body.attrs;\n const composerPost = composerAttrs.post;\n const discussion = (composerPost && composerPost.discussion()) || composerAttrs.discussion;\n\n if (discussion) {\n discussion\n .posts()\n // Filter to only comment posts, and replies before this message\n .filter((post) => post && post.contentType() === 'comment' && (!composerPost || post.number() < composerPost.number()))\n // Sort by new to old\n .sort((a, b) => b.createdAt() - a.createdAt())\n // Filter to where the user matches what is being typed\n .filter((post) => {\n const user = post.user();\n return user && userMatches(user);\n })\n // Get the first 5\n .splice(0, 5)\n // Make the suggestions\n .forEach((post) => {\n const user = post.user();\n suggestions.push(\n makeSuggestion(\n user,\n getMentionText(user, post.id()),\n [\n app.translator.trans('flarum-mentions.forum.composer.reply_to_post_text', { number: post.number() }),\n ' — ',\n truncate(post.contentPlain(), 200),\n ],\n 'MentionsDropdown-post'\n )\n );\n });\n }\n }\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 // Don't send API calls searching for users until at least 2 characters have been typed.\n // This focuses the mention results on users and posts in the discussion.\n if (typed.length > 1 && app.forum.attribute('canSearchUsers')) {\n throttledSearch(typed, searched, returnedUsers, returnedUserIds, dropdown, buildSuggestions);\n }\n }\n });\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","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['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","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/isDark'];","import app from 'flarum/forum/app';\nimport username from 'flarum/common/helpers/username';\nimport extractText from 'flarum/common/utils/extractText';\nimport isDark from 'flarum/common/utils/isDark';\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 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 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 tag.setAttribute('icon', group.icon());\n tag.setAttribute('color', group.color());\n tag.setAttribute('class', isDark(group.color()) ? 'GroupMention--light' : 'GroupMention--dark');\n\n return true;\n }\n }\n\n tag.invalidate();\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';\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};\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';\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 MentionsUserPage from './components/MentionsUserPage';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\napp.initializers.add('flarum-mentions', function () {\n User.prototype.canMentionGroups = Model.attribute('canMentionGroups');\n\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 app.routes['user.mentions'] = { path: '/u/:username/mentions', component: MentionsUserPage };\n extend(UserPage.prototype, 'navItems', function (items) {\n const user = this.user;\n items.add(\n 'mentions',\n LinkButton.component(\n {\n href: app.route('user.mentions', { username: user.slug() }),\n name: 'mentions',\n icon: 'fas fa-at',\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\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('click', '.UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted)', function (e) {\n m.route.set(this.getAttribute('href'));\n e.preventDefault();\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
  • {PostPreview.component({ post })}
  • ,\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], LoadingIndicator.component());\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 Model from 'flarum/common/Model';\nimport Post from 'flarum/common/models/Post';\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';\n\nexport default function addMentionedByList() {\n Post.prototype.mentionedBy = Model.hasMany('mentionedBy');\n\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 replies.map((reply) => (\n
    • \n {PostPreview.component({\n post: reply,\n onclick: hidePreview.bind(this),\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"],"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","getDeletedUserText","extractText","app","getCleanDisplayName","user","useDisplayName","displayName","username","replace","getMentionText","postId","group","undefined","id","namePlural","insertMention","post","composer","quote","Promise","resolve","mention","fields","content","body","attrs","originalContent","cursorPosition","editor","getSelectionRange","preceding","slice","precedingNewlines","length","match","insertAtCursor","Array","join","trim","reply","EditPostComposer","discussion","DiscussionControls","then","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","PostQuoteButton","view","class","onclick","icon","className","show","left","top","$this","this","$","parentOffset","offsetParent","offset","css","hideHandler","hide","document","on","showStart","window","scrollTop","outerHeight","showEnd","right","bottom","outerWidth","off","Fragment","selectedText","selection","getSelection","isCollapsed","range","getRangeAt","parent","commonAncestorContainer","contains","clone","append","cloneContents","find","replaceWith","alt","src","innerText","href","text","AutocompleteDropdown","items","active","index","keyWasJustPressed","map","item","navigate","delta","setIndex","clearTimeout","keyWasJustPressedTimeout","setTimeout","complete","eq","click","scrollToItem","$dropdown","$items","rangedIndex","$item","removeClass","addClass","dropdownScroll","dropdownTop","dropdownBottom","itemTop","itemBottom","parseInt","stop","animate","throttledSearch","throttle","typed","searched","returnedUsers","returnedUserIds","dropdown","buildSuggestions","typedLower","toLowerCase","includes","filter","q","page","limit","results","forEach","u","has","add","push","PostMentionedNotification","notification","subject","replyNumber","fromUser","count","excerpt","truncate","contentPlain","Notification","UserMentionedNotification","number","GroupMentionedNotification","MentionsUserPage","loadResults","type","mentioned","loadLimit","sort","PostsUserPage","filterUserMentions","tag","hasAttribute","getAttribute","setAttribute","slug","invalidate","filterPostMentions","filterGroupMentions","canMentionGroups","color","isDark","textFormatter","$container","User","Model","addPreviews","contentHtml","oldPostContentHtml","isEditing","parentPost","$parentPost","e","m","route","set","preventDefault","each","timeout","data","$preview","getPostElement","showPreview","$post","visible","pageYOffset","height","positionPreview","previewHeight","width","showPost","render","title","PostPreview","store","getById","LoadingIndicator","hidePreview","hasClass","one","cancelable","hover","stopPropagation","extend","CommentPost","addPostMentionPreviews","Post","replies","mentionedBy","is","users","repliers","indexOf","overLimit","names","punctuateSeries","addMentionedByList","isHidden","canReply","$postBody","button","handler","rects","getClientRects","firstRect","clientY","clientX","lastRect","after","addEventListener","TextEditor","$editor","wrap","navigator","KeyboardNavigatable","when","onUp","onDown","onSelect","onCancel","bindTo","params","relMentionStart","absMentionStart","matchTyped","from","Set","returnedGroups","Group","applySuggestion","replacement","replaceBeforeCursor","inputListeners","cursor","lastChunk","getLastNChars","i","substr","test","substring","makeSuggestion","usernameHelper","children","highlight","onmouseenter","avatar","userMatches","some","name","suggestions","nameSingular","groupMatches","groupName","makeGroupSuggestion","bodyMatches","ReplyComposer","composerAttrs","composerPost","posts","contentType","b","createdAt","splice","coordinates","getCaretCoordinates","Math","max","NotificationGrid","label","path","component","UserPage","LinkButton","getPlainContent","assign","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,wSCL9D,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,gC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,gC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,gB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sB,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,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,qC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCUlDC,EAAqB,WAAH,OAASC,IAAYC,IAAAA,WAAAA,MAAqB,kCAAkC,EAUrF,SAASC,EAAoBC,EAAMC,GAChD,YAD8D,IAAdA,IAAAA,GAAiB,GAC5DD,IAESC,EAAiBD,EAAKE,cAAgBF,EAAKG,aAAeP,KAE5DQ,QAAQ,qBAAsB,KAJxBR,IAAqBQ,QAAQ,qBAAsB,IAKvE,CCFe,SAASC,EAAeL,EAAMM,EAAQC,GACnD,QAAaC,IAATR,QAAiCQ,IAAXF,EACxB,ODlBoCR,IAAAA,MAAAA,UAAoB,8BCqB/C,IADWC,EAAoBC,GAAM,GAKvC,KADWD,EAAoBC,GACjB,KAAKA,EAAKS,KAC1B,QAAaD,IAATR,QAAiCQ,IAAXF,EAG/B,MAAO,KADWP,EAAoBC,GACjB,MAAMM,EACtB,QAAcE,IAAVD,EAET,MAAO,KAAKA,EAAMG,aAAY,MAAMH,EAAME,KAE1C,KAAM,2BAEV,CCvCO,SAASE,EAAcC,EAAMC,EAAUC,GAC5C,OAAO,IAAIC,SAAQ,SAACC,GAClB,IACMC,EAAUZ,EADHO,EAAKZ,OACmBY,EAAKH,MAAQ,IAK7CI,EAASK,OAAOC,YACnBN,EAASO,KAAKC,MAAMC,gBAAkBL,GAGxC,IAAMM,EAAiBV,EAASW,OAAOC,oBAAoB,GACrDC,EAAYb,EAASK,OAAOC,UAAUQ,MAAM,EAAGJ,GAC/CK,EAAwC,GAApBF,EAAUG,OAAc,EAAI,EAAIH,EAAUI,MAAM,cAAc,GAAGD,OAO3F,OALAhB,EAASW,OAAOO,eACdC,MAAMJ,GAAmBK,KAAK,OAC3BnB,EAAQ,KAAOG,EAAUH,EAAMoB,OAAO9B,QAAQ,MAAO,QAAU,OAASa,IAC3E,GAEKD,EAAQH,EACjB,GACF,CAEe,SAASsB,EAAMvB,EAAME,GAClC,OAAIhB,IAAAA,SAAAA,YAAyBsC,MAAqBtC,IAAAA,SAAAA,KAAAA,MAAAA,KAAAA,eAA8Cc,EAAKyB,aAG5F1B,EAAcC,EAAMd,IAAAA,SAAcgB,GAKlCwB,IAAAA,YAAAA,KAAoC1B,EAAKyB,cAAcE,MAAK,SAAC1B,GAAQ,OAAKF,EAAcC,EAAMC,EAAUC,EAAM,GAEzH,CCzCe,SAAS0B,EAAgB5D,EAAG6D,GAKzC,OAJAD,EAAkB3D,OAAO6D,eAAiB7D,OAAO6D,eAAeC,OAAS,SAAyB/D,EAAG6D,GAEnG,OADA7D,EAAEgE,UAAYH,EACP7D,CACT,EACO4D,EAAgB5D,EAAG6D,EAC5B,CCLe,SAASI,EAAeC,EAAUC,GAC/CD,EAAS3D,UAAYN,OAAOmE,OAAOD,EAAW5D,WAC9C2D,EAAS3D,UAAU8D,YAAcH,EACjCJ,EAAeI,EAAUC,EAC3B,CCLA,MAAM,EAA+BtD,OAAOC,KAAKC,OAAO,mB,aCMnCuD,EAAe,YAClC,WAAYtC,GAAM,MAGC,OAFjB,gBAAO,MAEFA,KAAOA,EAAK,CACnB,CALkC,OAKjC,kBAyCA,OAzCA,EAEDuC,KAAA,WAAO,WACL,OACE,YACEC,MAAM,yBACNC,QAAS,WACPlB,EAAM,EAAKvB,KAAM,EAAKO,QACxB,GAECmC,IAAK,oBAAqB,CAAEC,UAAW,gBACvCzD,IAAAA,WAAAA,MAAqB,2CAG5B,EAAC,EAED0D,KAAA,SAAKC,EAAMC,GACT,IAAMC,EAAQC,KAAKC,IAAIL,OACjBM,EAAeH,EAAMI,eAAeC,SAE1CL,EAAMM,IAAI,OAAQR,EAAOK,EAAaL,MAAMQ,IAAI,MAAOP,EAAMI,EAAaJ,KAE1EE,KAAKM,YAAcN,KAAKO,KAAKxB,KAAKiB,MAClCC,EAAEO,UAAUC,GAAG,UAAWT,KAAKM,YACjC,EAAC,EAEDI,UAAA,SAAUb,EAAMC,GACd,IAAMC,EAAQC,KAAKC,IAEnBD,KAAKJ,KAAKC,EAAMI,EAAEU,QAAQC,YAAcd,EAAMC,EAAMc,cAAgB,EACtE,EAAC,EAEDC,QAAA,SAAQC,EAAOC,GACb,IAAMjB,EAAQC,KAAKC,IAEnBD,KAAKJ,KAAKmB,EAAQhB,EAAMkB,aAAchB,EAAEU,QAAQC,YAAcI,EAAS,EACzE,EAAC,EAEDT,KAAA,WACEP,KAAKC,IAAIM,OACTN,EAAEO,UAAUU,IAAI,UAAWlB,KAAKM,YAClC,EAAC,EA9CiC,CAASa,KCH9B,SAASC,EAAa5D,GACnC,IAAM6D,EAAYV,OAAOW,eAEzB,IAAKD,EAAUE,YAAa,CAC1B,IAAMC,EAAQH,EAAUI,WAAW,GAC7BC,EAASF,EAAMG,wBAErB,GAAInE,EAAK,KAAOkE,GAAUzB,EAAE2B,SAASpE,EAAK,GAAIkE,GAAS,CACrD,IAAMG,EAAQ5B,EAAE,SAAS6B,OAAON,EAAMO,iBAiBtC,OAdAF,EAAMG,KAAK,aAAaC,aAAY,WAClC,OAAOjC,KAAKkC,GACd,IAGAL,EAAMG,KAAK,OAAOC,aAAY,WAC5B,MAAO,OAAOjC,KAAKmC,IAAG,GACxB,IAGAN,EAAMG,KAAK,KAAKC,aAAY,WAC1B,MAAO,IAAIjC,KAAKoC,UAAS,KAAKpC,KAAKqC,KAAI,GACzC,IAEOR,EAAMS,MACf,CACF,CACA,MAAO,EACT,CChCA,MAAM,EAA+BzG,OAAOC,KAAKC,OAAO,gC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,cCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,yB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,4B,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,oC,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,iCCAlD,GAA+BF,OAAOC,KAAKC,OAAO,2B,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,uB,eCEnCwG,GAAoB,mGAId,OAJc,0CACvCC,MAAQ,GAAE,EACVC,QAAS,EAAK,EACdC,MAAQ,EAAC,EACTC,mBAAoB,EAAK,EAJc,OAId,kBAyExB,OAzEwB,EAEzBpD,KAAA,WACE,OACE,QAAII,UAAU,kCACXK,KAAKwC,MAAMI,KAAI,SAACC,GAAI,OACnB,YAAKA,EAAU,IAIvB,EAAC,EAEDjD,KAAA,SAAKC,EAAMC,GACTE,KAAKC,IACFL,OACAS,IAAI,CACHR,KAAMA,EAAO,KACbC,IAAKA,EAAM,OAEfE,KAAKyC,QAAS,CAChB,EAAC,EAEDlC,KAAA,WACEP,KAAKC,IAAIM,OACTP,KAAKyC,QAAS,CAChB,EAAC,EAEDK,SAAA,SAASC,GAAO,WACd/C,KAAK2C,mBAAoB,EACzB3C,KAAKgD,SAAShD,KAAK0C,MAAQK,GAAO,GAClCE,aAAajD,KAAKkD,0BAClBlD,KAAKkD,yBAA2BC,YAAW,kBAAO,EAAKR,mBAAoB,CAAK,GAAG,IACrF,EAAC,EAEDS,SAAA,WACEpD,KAAKC,EAAE,MAAMoD,GAAGrD,KAAK0C,OAAOV,KAAK,UAAUsB,OAC7C,EAAC,EAEDN,SAAA,SAASN,EAAOa,GACd,IAAIvD,KAAK2C,mBAAsBY,EAA/B,CAEA,IAAMC,EAAYxD,KAAKC,IACjBwD,EAASD,EAAUxB,KAAK,MAC1B0B,EAAchB,EAEdgB,EAAc,EAChBA,EAAcD,EAAOxF,OAAS,EACrByF,GAAeD,EAAOxF,SAC/ByF,EAAc,GAGhB1D,KAAK0C,MAAQgB,EAEb,IAAMC,EAAQF,EAAOG,YAAY,UAAUP,GAAGK,GAAaG,SAAS,UAEpE,GAAIN,EAAc,CAChB,IAMI3C,EANEkD,EAAiBN,EAAU5C,YAC3BmD,EAAcP,EAAUpD,SAASN,IACjCkE,EAAiBD,EAAcP,EAAU3C,cACzCoD,EAAUN,EAAMvD,SAASN,IACzBoE,EAAaD,EAAUN,EAAM9C,cAG/BoD,EAAUF,EACZnD,EAAYkD,EAAiBC,EAAcE,EAAUE,SAASX,EAAUnD,IAAI,eAAgB,IACnF6D,EAAaF,IACtBpD,EAAYkD,EAAiBE,EAAiBE,EAAaC,SAASX,EAAUnD,IAAI,kBAAmB,UAG9E,IAAdO,GACT4C,EAAUY,MAAK,GAAMC,QAAQ,CAAEzD,UAAAA,GAAa,IAEhD,CAjCmD,CAkCrD,EAAC,EA7EsC,CAASO,KCgB5CmD,IAAkBC,EAAAA,GAAAA,UACtB,KACA,SAAUC,EAAOC,EAAUC,EAAeC,EAAiBC,EAAUC,GACnE,IAAMC,EAAaN,EAAMO,cACpBN,EAASO,SAASF,KACrB5I,IAAAA,MAAAA,KAAe,QAAS,CAAE+I,OAAQ,CAAEC,EAAGV,GAASW,KAAM,CAAEC,MAAO,KAAOzG,MAAK,SAAC0G,GAC1EA,EAAQC,SAAQ,SAACC,GACVZ,EAAgBa,IAAID,EAAE1I,QACzB8H,EAAgBc,IAAIF,EAAE1I,MACtB6H,EAAcgB,KAAKH,GAEvB,IAEAV,GACF,IAEAJ,EAASiB,KAAKZ,GAElB,ICpCF,MAAM,GAA+BjJ,OAAOC,KAAKC,OAAO,iC,eCInC4J,GAAyB,uFAsB3C,OAtB2C,EAC5CjG,KAAA,WACE,MAAO,cACT,EAAC,EAED2C,KAAA,WACE,IAAMuD,EAAe5F,KAAKvC,MAAMmI,aAC1B5I,EAAO4I,EAAaC,UACpBtI,EAAUqI,EAAarI,UAE7B,OAAOrB,IAAAA,MAAAA,WAAqBc,EAAKyB,aAAclB,GAAWA,EAAQuI,YACpE,EAAC,EAEDvI,QAAA,WACE,IACMnB,EADe4D,KAAKvC,MAAMmI,aACNG,WAE1B,OAAO7J,IAAAA,WAAAA,MAAqB,0DAA2D,CAAEE,KAAAA,EAAM4J,MAAO,GACxG,EAAC,EAEDC,QAAA,WACE,OAAOC,EAAAA,EAAAA,UAASlG,KAAKvC,MAAMmI,aAAaC,UAAUM,gBAAkB,GAAI,IAC1E,EAAC,EAtB2C,CAASC,MCAlCC,GAAyB,uFAmB3C,OAnB2C,EAC5C3G,KAAA,WACE,MAAO,WACT,EAAC,EAED2C,KAAA,WACE,IAAMrF,EAAOgD,KAAKvC,MAAMmI,aAAaC,UAErC,OAAO3J,IAAAA,MAAAA,WAAqBc,EAAKyB,aAAczB,EAAKsJ,SACtD,EAAC,EAED/I,QAAA,WACE,IAAMnB,EAAO4D,KAAKvC,MAAMmI,aAAaG,WAErC,OAAO7J,IAAAA,WAAAA,MAAqB,0DAA2D,CAAEE,KAAAA,GAC3F,EAAC,EAED6J,QAAA,WACE,OAAOC,EAAAA,EAAAA,UAASlG,KAAKvC,MAAMmI,aAAaC,UAAUM,eAAgB,IACpE,EAAC,EAnB2C,CAASC,MCAlCG,GAA0B,uFAmB5C,OAnB4C,EAC7C7G,KAAA,WACE,MAAO,WACT,EAAC,EAED2C,KAAA,WACE,IAAMrF,EAAOgD,KAAKvC,MAAMmI,aAAaC,UAErC,OAAO3J,IAAAA,MAAAA,WAAqBc,EAAKyB,aAAczB,EAAKsJ,SACtD,EAAC,EAED/I,QAAA,WACE,IAAMnB,EAAO4D,KAAKvC,MAAMmI,aAAaG,WAErC,OAAO7J,IAAAA,WAAAA,MAAqB,2DAA4D,CAAEE,KAAAA,GAC5F,EAAC,EAED6J,QAAA,WACE,OAAOC,EAAAA,EAAAA,UAASlG,KAAKvC,MAAMmI,aAAaC,UAAUM,eAAgB,IACpE,EAAC,EAnB4C,CAASC,MCJxD,MAAM,GAA+BvK,OAAOC,KAAKC,OAAO,6B,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,gC,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,sB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,oB,eCAxD,MAAM,GAA+BF,OAAOC,KAAKC,OAAO,kC,ICMnCyK,GAAgB,8DAiBlC,OAjBkC,mBAQnCC,YAAA,SAAYrG,GACV,OAAOlE,IAAAA,MAAAA,KAAe,QAAS,CAC7B+I,OAAQ,CACNyB,KAAM,UACNC,UAAW3G,KAAK5D,KAAKS,MAEvBsI,KAAM,CAAE/E,OAAAA,EAAQgF,MAAOpF,KAAK4G,WAC5BC,KAAM,cAEV,EAAC,EAjBkC,C,OAASC,ICH9C,WAAgB,IAAIC,KAAAA,SAAgBtB,IAAI,gBAAiB,wBAAyBe,KCH5E,GAA+B3K,OAAOC,KAAKC,OAAO,uB,eCKjD,SAASiL,GAAmBC,GACjC,IAAI7K,EAMJ,GAJIF,IAAAA,MAAAA,UAAoB,+BAAiC+K,EAAIC,aAAa,YACxE9K,EAAOF,IAAAA,MAAAA,MAAgB,QAAS,WAAY+K,EAAIE,aAAa,aACtDF,EAAIC,aAAa,QAAO9K,EAAOF,IAAAA,MAAAA,QAAkB,QAAS+K,EAAIE,aAAa,QAEhF/K,EAKF,OAJA6K,EAAIG,aAAa,KAAMhL,EAAKS,MAC5BoK,EAAIG,aAAa,OAAQhL,EAAKiL,QAC9BJ,EAAIG,aAAa,cAAenL,IAAYM,IAASH,MAE9C,EAGT6K,EAAIK,YACN,CAEO,SAASC,GAAmBN,GACjC,IAAMjK,EAAOd,IAAAA,MAAAA,QAAkB,QAAS+K,EAAIE,aAAa,OAEzD,GAAInK,EAKF,OAJAiK,EAAIG,aAAa,eAAgBpK,EAAKyB,aAAa5B,MACnDoK,EAAIG,aAAa,SAAUpK,EAAKsJ,UAChCW,EAAIG,aAAa,cAAenL,IAAYM,IAASS,EAAKZ,WAEnD,CAEX,CAEO,SAASoL,GAAoBP,GAAK,QACvC,GAAe,OAAf,EAAI/K,IAAAA,UAAiB,OAAN,EAAX,EAAaE,OAAb,EAAmBqL,mBAAoB,CACzC,IAAM9K,EAAQT,IAAAA,MAAAA,QAAkB,SAAU+K,EAAIE,aAAa,OAE3D,GAAIxK,EAMF,OALAsK,EAAIG,aAAa,YAAanL,IAAYU,EAAMG,eAChDmK,EAAIG,aAAa,OAAQzK,EAAM+C,QAC/BuH,EAAIG,aAAa,QAASzK,EAAM+K,SAChCT,EAAIG,aAAa,QAASO,KAAOhL,EAAM+K,SAAW,sBAAwB,uBAEnE,CAEX,CAEAT,EAAIK,YACN,CCtCA,UACE,uCAAwCd,GACxC,gDAAiDb,GACjD,gDAAiDU,GACjD,iDAAkDE,GAClD,0CAA2ChE,GAC3C,qCAAsCjD,EACtC,qCAAsCnD,EACtC,gCAAiCM,EACjC,uBAAwB8B,EACxB,8BAA+B6C,EAC/B,+BAAgCwG,GCvB5B,GAA+B/L,OAAOC,KCoB5CI,IAAAA,aAAAA,IAAqB,mBAAmB,WhBmBzB,IACP2L,EACAjD,EgBpBNkD,KAAAA,UAAAA,iBAAkCC,IAAAA,UAAgB,oBChBrC,WACb,SAASC,IACP,IAAMC,EAAcjI,KAAKvC,MAAMT,KAAKiL,cAEpC,GAAIA,IAAgBjI,KAAKkI,qBAAsBlI,KAAKmI,YAApD,CAEAnI,KAAKkI,mBAAqBD,EAE1B,IAAMG,EAAapI,KAAKvC,MAAMT,KACxBqL,EAAcrI,KAAKC,IAEzBD,KAAKC,IAAIQ,GAAG,QAAS,oFAAoF,SAAU6H,GACjHC,EAAEC,MAAMC,IAAIzI,KAAKmH,aAAa,SAC9BmB,EAAEI,gBACJ,IAEA1I,KAAKC,EAAE,2CAA2C0I,MAAK,WACrD,IAEIC,EAFE7I,EAAQE,EAAED,MACVnD,EAAKkD,EAAM8I,KAAK,MAKhBC,EAAW7I,EAAE,wDACnBoI,EAAYvG,OAAOgH,GAEnB,IAAMC,EAAiB,WACrB,OAAO9I,EAAE,6BAA6BpD,EAAE,KAC1C,EAEMmM,EAAc,WAIlB,IAAMC,EAAQF,IACVG,GAAU,EACd,GAAID,EAAMhL,OAAQ,CAChB,IAAM6B,EAAMmJ,EAAM7I,SAASN,IACrBc,EAAYD,OAAOwI,YACrBrJ,EAAMc,GAAad,EAAMmJ,EAAMG,SAAWxI,EAAYX,EAAEU,QAAQyI,WAClEH,EAAMpF,SAAS,WACfqF,GAAU,EAEd,CAIA,IAAKA,EAAS,CAGZ,IAAMG,EAAkB,WACtB,IAAMC,EAAgBR,EAASjI,aAAY,GACvCT,EAAS,EAITL,EAAMK,SAASN,IAAMwJ,EAAgBrJ,EAAEU,QAAQC,YAAcX,EAAE,WAAWY,cAC5ET,GAAUL,EAAMc,aAAY,GAE5BT,GAAUkJ,EAGZR,EACGlJ,OACAS,IAAI,MAAON,EAAMK,SAASN,IAAMuI,EAAYjI,SAASN,IAAMM,GAC3DC,IAAI,OAAQN,EAAMI,eAAeC,SAASP,KAAOwI,EAAYjI,SAASP,MACtEQ,IAAI,YAAaN,EAAMI,eAAeoJ,QAC3C,EAEMC,EAAW,SAACxM,GAChB,IAAMyB,EAAazB,EAAKyB,aAExB8J,EAAEkB,OAAOX,EAAS,GAAI,CACpBrK,IAAe2J,EAAW3J,aACxB,YACE,UAAMkB,UAAU,kCAAkClB,EAAWiL,UAG/D,GAEF,YAAKC,IAAAA,UAAsB,CAAE3M,KAAAA,OAE/BqM,GACF,EAEMrM,EAAOd,IAAI0N,MAAMC,QAAQ,QAAShN,GACpCG,GAAQA,EAAKyB,aACf+K,EAASxM,IAETuL,EAAEkB,OAAOX,EAAS,GAAIgB,IAAAA,aACtB5N,IAAI0N,MAAM5H,KAAK,QAASnF,GAAI8B,KAAK6K,GACjCH,KAGFlG,YAAW,kBAAM2F,EAAS5H,IAAI,iBAAiB2C,SAAS,KAAK,GAC/D,CACF,EAEMkG,EAAc,WAClBhB,IAAiBnF,YAAY,WACzBkF,EAASkB,SAAS,OACpBlB,EAASlF,YAAY,MAAMqG,IAAI,iBAAiB,kBAAMnB,EAASvI,MAAM,GAEzE,EAKAR,EAAMU,GAAG,YAAY,SAAC6H,GAChBA,EAAE4B,YACJ5B,EAAEI,gBAEN,IAEA3I,EACG0F,IAAIqD,GACJqB,OACC,WACElH,aAAa2F,GACbA,EAAUzF,WAAW6F,EAAa,IACpC,IACA,WACE/F,aAAa2F,GACbG,IAAiBnF,YAAY,WAC7BgF,EAAUzF,WAAW4G,EAAa,IACpC,IAEDtJ,GAAG,YAAY,SAAC6H,GACfU,IACAV,EAAE8B,iBACJ,IAEFnK,EAAEO,UAAUC,GAAG,WAAYsJ,EAC7B,GAjIuE,CAkIzE,EAEAM,EAAAA,EAAAA,QAAOC,IAAAA,UAAuB,WAAYtC,IAC1CqC,EAAAA,EAAAA,QAAOC,IAAAA,UAAuB,WAAYtC,EAC5C,CDtHEuC,GEda,WAGb,SAASR,IACP/J,KAAKC,EAAE,6BACJ2D,YAAY,MACZqG,IAAI,iBAAiB,WACpBhK,EAAED,MAAMO,MACV,GACJ,CARAiK,IAAAA,UAAAA,YAA6BzC,IAAAA,QAAc,gBAU3CsC,EAAAA,EAAAA,QAAOC,IAAAA,UAAuB,YAAY,WAAY,IAChD1B,EADgD,OAG9C6B,EADOzK,KAAKvC,MAAMT,KACH0N,cAErB,GAAID,GAAWA,EAAQxM,OAAQ,CAC7B,IAAM6K,EAAW7I,EAAE,6DACnBD,KAAKC,IAAI6B,OAAOgH,GAEhB,IAAMT,EAAcrI,KAAKC,IACnBF,EAAQC,KAAKC,EAAE,qBAEf+I,EAAc,YACbF,EAASkB,SAAS,OAASlB,EAAS6B,GAAG,cAK5CpC,EAAEkB,OACAX,EAAS,GACT2B,EAAQ7H,KAAI,SAACrE,GAAK,OAChB,QAAI,cAAaA,EAAM+H,UACpBqD,IAAAA,UAAsB,CACrB3M,KAAMuB,EACNkB,QAASsK,EAAYhL,KAAK,KAEzB,KAIT+J,EACGlJ,OACAS,IAAI,MAAON,EAAMK,SAASN,IAAMuI,EAAYjI,SAASN,IAAMC,EAAMc,aAAY,IAC7ER,IAAI,OAAQN,EAAMI,eAAeC,SAASP,KAAOwI,EAAYjI,SAASP,MACtEQ,IAAI,YAAagI,EAAYkB,SAEhCpG,YAAW,kBAAM2F,EAAS5H,IAAI,iBAAiB2C,SAAS,KAAK,IAC/D,EAEA9D,EAAM0F,IAAIqD,GAAUqB,OAClB,WACElH,aAAa2F,GACbA,EAAUzF,WAAW6F,EAAa,IACpC,IACA,WACE/F,aAAa2F,GACbA,EAAUzF,WAAW4G,EAAa,IACpC,IAMF/J,KAAKC,IACF+B,KAAK,+BACLmI,OACC,WACErB,EAAS9G,KAAK,iBAAmB/B,EAAED,MAAM6I,KAAK,UAAY,MAAMhF,SAAS,SAC3E,IACA,WACEiF,EAAS9G,KAAK,iBAAiB4B,YAAY,SAC7C,GAEN,CACF,KAEAyG,EAAAA,EAAAA,QAAOC,IAAAA,UAAuB,eAAe,SAAU9H,GAAO,WAEtDiI,EADOzK,KAAKvC,MAAMT,KACH0N,cAErB,GAAID,GAAWA,EAAQxM,OAAQ,CAC7B,IAAM2M,EAAQ,GACRC,EAAWJ,EACd5D,MAAK,SAACtI,GAAK,OAAMA,EAAMnC,SAAWF,IAAAA,QAAAA,MAAoB,EAAI,CAAC,IAC3D+I,QAAO,SAAC1G,GACP,IAAMnC,EAAOmC,EAAMnC,OACnB,IAA6B,IAAzBwO,EAAME,QAAQ1O,GAEhB,OADAwO,EAAMlF,KAAKtJ,IACJ,CAEX,IAGI2O,EAAYF,EAAS5M,OADb,EAKR+M,EAAQH,EAAS9M,MAAM,EAAGgN,EAAY3F,EAL9B,GAKiDxC,KAAI,SAACrE,GAClE,IAAMnC,EAAOmC,EAAMnC,OAEnB,OACE,EAAC,IAAI,CAACiG,KAAMnG,IAAAA,MAAAA,KAAeqC,GAAQkB,QAASsK,EAAYhL,KAAK,GAAO,cAAaR,EAAM+H,UACpFpK,IAAAA,QAAAA,OAAqBE,EAAOF,IAAAA,WAAAA,MAAqB,uCAAyCK,IAASH,GAG1G,IAKA,GAAI2O,EAAW,CACb,IAAM/E,EAAQ6E,EAAS5M,OAAS+M,EAAM/M,OAEtC+M,EAAMtF,KAAKxJ,IAAAA,WAAAA,MAAqB,yCAA0C,CAAE8J,MAAAA,IAC9E,CAEAxD,EAAMiD,IACJ,UACA,SAAK9F,UAAU,oBACb,UAAMA,UAAU,4BACbD,IAAK,gBACLxD,IAAAA,WAAAA,MAAqB,2CAA6C2O,EAAS,GAAGzO,SAAWF,IAAAA,QAAAA,KAAmB,QAAU,IAAM,QAAS,CACpI8J,MAAOgF,EAAM/M,OACb2M,MAAOK,IAAgBD,OAKjC,CACF,GACF,CFjHEE,IGrBAb,EAAAA,EAAAA,QAAOC,IAAAA,UAAuB,eAAe,SAAU9H,GACrD,IAAMxF,EAAOgD,KAAKvC,MAAMT,KAEpBA,EAAKmO,YAAejP,IAAAA,QAAAA,OAAqBc,EAAKyB,aAAa2M,YAE/D5I,EAAMiD,IACJ,QACA,EAAC,IAAM,CAAC9F,UAAU,sBAAsBF,QAAS,kBAAMlB,EAAMvB,EAAK,GAC/Dd,IAAAA,WAAAA,MAAqB,0CAG5B,KCXAmO,EAAAA,EAAAA,QAAOC,IAAAA,UAAuB,YAAY,WACxC,IAAMtN,EAAOgD,KAAKvC,MAAMT,KAExB,KAAIA,EAAKmO,YAAejP,IAAAA,QAAAA,OAAqBc,EAAKyB,aAAa2M,YAA/D,CAEA,IAAMC,EAAYrL,KAAKC,EAAE,cAInB4H,EAAa5H,EAAE,iDAEfqL,EAAS,IAAIhM,EAAgBtC,GAE7BuO,EAAU,SAAUjD,GACxBnF,YAAW,WACT,IAAM5F,EAAU6D,EAAaiK,GAC7B,GAAI9N,EAAS,CACX+N,EAAO/N,QAAUA,EACjBgL,EAAEkB,OAAO5B,EAAW,GAAIyD,EAAO7B,UAE/B,IAAM+B,EAAQ7K,OAAOW,eAAeG,WAAW,GAAGgK,iBAC5CC,EAAYF,EAAM,GAExB,GAAIlD,EAAEqD,QAAUD,EAAU1K,QAAUsH,EAAEsD,QAAUF,EAAU3K,MAAQ2K,EAAU7L,KAAOyI,EAAEsD,QACnFN,EAAO5K,UAAUgL,EAAU7L,KAAM6L,EAAU5L,SACtC,CACL,IAAM+L,EAAWL,EAAMA,EAAMvN,OAAS,GACtCqN,EAAOxK,QAAQ+K,EAAS9K,MAAO8K,EAAS7K,OAC1C,CACF,CACF,GAAG,EACL,EAEAhB,KAAKC,IAAI6L,MAAMjE,GAAYpH,GAAG,UAAW8K,GAErC,iBAAkB5K,QACpBH,SAASuL,iBAAiB,kBAAmBR,GAAS,EAjC0B,CAmCpF,IpBNM1D,EAAa5H,EAAE,8DACf2E,EAAW,IAAIrC,IAErB8H,EAAAA,EAAAA,QAAO2B,IAAAA,UAAsB,YAAY,WACvC,IAAMC,EAAUjM,KAAKC,EAAE,sBAAsBiM,KAAK,oDAElDlM,KAAKmM,UAAY,IAAIC,MACrBpM,KAAKmM,UACFE,MAAK,kBAAMzH,EAASnC,MAAM,IAC1B6J,MAAK,kBAAM1H,EAAS9B,UAAU,EAAE,IAChCyJ,QAAO,kBAAM3H,EAAS9B,SAAS,EAAE,IACjC0J,SAAS5H,EAASxB,SAASrE,KAAK6F,IAChC6H,SAAS7H,EAASrE,KAAKxB,KAAK6F,IAC5B8H,OAAOT,GAEVA,EAAQH,MAAMjE,EAChB,KAEAwC,EAAAA,EAAAA,QAAO2B,IAAAA,UAAsB,qBAAqB,SAAUW,GAAQ,IAE9DC,EACAC,EACArI,EACAsI,EAL8D,OAC5DrI,EAAW,GASXC,EAAgBtG,MAAM2O,KAAK7Q,IAAAA,MAAAA,IAAc,UACzCyI,EAAkB,IAAIqI,IAAItI,EAAc9B,KAAI,SAAC2C,GAAC,OAAKA,EAAE1I,IAAI,KAGzDoQ,EAAiB7O,MAAM2O,KAC3B7Q,IAAAA,MAAAA,IAAc,UAAU+I,QAAO,SAACtI,GAC9B,OAAOA,EAAME,MAAQqQ,KAAAA,UAAkBvQ,EAAME,MAAQqQ,KAAAA,SACvD,KAGIC,EAAkB,SAACC,GACvB,EAAK3P,MAAMR,SAASW,OAAOyP,oBAAoBR,EAAkB,EAAGO,EAAc,KAElFxI,EAASrE,MACX,EAEAoM,EAAOW,eAAe5H,MAAK,WACzB,IAAMrE,EAAY,EAAK5D,MAAMR,SAASW,OAAOC,oBAEvC0P,EAASlM,EAAU,GAEzB,KAAIA,EAAU,GAAKkM,EAAS,GAA5B,CAIA,IAAMC,EAAY,EAAK/P,MAAMR,SAASW,OAAO6P,cAAc,IAC3DZ,EAAkB,EAClB,IAAK,IAAIa,EAAIF,EAAUvP,OAAS,EAAGyP,GAAK,EAAGA,IAEzC,GAAkB,MADAF,EAAUG,OAAOD,EAAG,KACP,GAALA,GAAU,KAAKE,KAAKJ,EAAUG,OAAOD,EAAI,EAAG,KAAM,CAC1Ed,EAAkBc,EAAI,EACtBb,EAAkBU,EAASC,EAAUvP,OAASyP,EAAI,EAClD,KACF,CAMF,GAHA9I,EAASrE,OACTqE,EAASnC,QAAS,EAEdoK,EAAiB,CACnBrI,EAAQgJ,EAAUK,UAAUjB,GAAiB7H,cAC7C+H,EAAatI,EAAMtG,MAAM,yBACzBsG,EAASsI,GAAcA,EAAW,IAAOtI,EAEzC,IAAMsJ,EAAiB,SAAU1R,EAAMgR,EAAa7P,EAASoC,QAAS,IAATA,IAAAA,EAAY,IACvE,IAAMpD,EAAWwR,IAAe3R,GAOhC,OALIoI,IACFjI,EAASyR,SAAW,CAACC,KAAU1R,EAAS+F,KAAMkC,WACvCjI,EAAS+F,MAIhB,YACE3C,UAAW,eAAiBA,EAC5BF,QAAS,kBAAM0N,EAAgBC,EAAY,EAC3Cc,aAAc,WACZtJ,EAAS5B,SAAS/C,EAAED,MAAM0B,SAASgB,QACrC,GAEA,UAAM/C,UAAU,uBACbwO,KAAO/R,GACPG,EAAQ,IAAGgB,GAIpB,EAyBM6Q,EAAc,SAAUhS,GAG5B,MAFc,CAACA,EAAKG,WAAYH,EAAKE,eAExB+R,MAAK,SAACC,GAAI,OAAKA,EAAKvJ,cAAc4I,OAAO,EAAGnJ,EAAMvG,UAAYuG,CAAK,GAClF,EAQMK,EAAmB,WACvB,IAIW,IAJL0J,EAAc,GAyBpB,GArBI/J,IACFE,EAAcY,SAAQ,SAAClJ,GAChBgS,EAAYhS,IAEjBmS,EAAY7I,KAAKoI,EAAe1R,EAAMK,EAAeL,GAAO,GAAI,yBAClE,IAGe,OAAf,EAAIF,IAAAA,UAAiB,OAAN,EAAX,EAAaE,OAAb,EAAmBqL,oBACrBwF,EAAe3H,SAAQ,SAAC3I,IApBT,SAAUA,GAG7B,MAFc,CAACA,EAAM6R,eAAgB7R,EAAMG,cAE9BuR,MAAK,SAACC,GAAI,OAAKA,EAAKvJ,cAAc4I,OAAO,EAAGnJ,EAAMvG,UAAYuG,CAAK,GAClF,EAiBaiK,CAAa9R,IAElB4R,EAAY7I,KApDQ,SAAU/I,EAAOyQ,EAAa7P,EAASoC,QAAS,IAATA,IAAAA,EAAY,IAC7E,IAAI+O,EAAY/R,EAAMG,aAAaiI,cAMnC,OAJIP,IACFkK,EAAYT,KAAUS,EAAWlK,IAIjC,YACE7E,UAAW,eAAiBA,EAC5BF,QAAS,kBAAM0N,EAAgBC,EAAY,EAC3Cc,aAAc,WACZtJ,EAAS5B,SAAS/C,EAAED,MAAM0B,SAASgB,QACrC,GAEA,UAAM/C,UAAU,uBACd,EAAC,KAAK,CAACH,MAAA,8BAAqC7C,EAAME,KAAI,eAAgB6K,MAAO/K,EAAM+K,QAAShB,KAAK,QAAQhH,KAAM/C,EAAM+C,SACrH,UAAMC,UAAU,YAAY+O,IAIpC,CA+ByBC,CAAoBhS,EAAOF,OAAeG,OAAWA,EAAWD,GAAQ,EAAI,0BAC/F,KAQA,EAAKc,MAAMR,SAAS2R,YAAYC,OAAkB,EAAKpR,MAAMR,SAAS2R,YAAYpQ,KAAmB,CACvG,IAAMsQ,EAAgB,EAAKrR,MAAMR,SAASO,KAAKC,MACzCsR,EAAeD,EAAc9R,KAC7ByB,EAAcsQ,GAAgBA,EAAatQ,cAAiBqQ,EAAcrQ,WAE5EA,GACFA,EACGuQ,QAEA/J,QAAO,SAACjI,GAAI,OAAKA,GAA+B,YAAvBA,EAAKiS,iBAAiCF,GAAgB/R,EAAKsJ,SAAWyI,EAAazI,SAAS,IAErHO,MAAK,SAACjM,EAAGsU,GAAC,OAAKA,EAAEC,YAAcvU,EAAEuU,WAAW,IAE5ClK,QAAO,SAACjI,GACP,IAAMZ,EAAOY,EAAKZ,OAClB,OAAOA,GAAQgS,EAAYhS,EAC7B,IAECgT,OAAO,EAAG,GAEV9J,SAAQ,SAACtI,GACR,IAAMZ,EAAOY,EAAKZ,OAClBmS,EAAY7I,KACVoI,EACE1R,EACAK,EAAeL,EAAMY,EAAKH,MAC1B,CACEX,IAAAA,WAAAA,MAAqB,oDAAqD,CAAEoK,OAAQtJ,EAAKsJ,WACzF,OACAJ,EAAAA,EAAAA,UAASlJ,EAAKmJ,eAAgB,MAEhC,yBAGN,GAEN,CAEA,GAAIoI,EAAYtQ,OAAQ,CACtB2G,EAASpC,MAAQ+L,EACjBhG,EAAEkB,OAAO5B,EAAW,GAAIjD,EAAS6E,UAEjC7E,EAAShF,OACT,IAAMyP,EAAc,EAAK5R,MAAMR,SAASW,OAAO0R,oBAAoBzC,GAC7DtD,EAAQ3E,EAAS3E,IAAIgB,aACrBmI,EAASxE,EAAS3E,IAAIY,cACtBa,EAASkD,EAAS3E,IAAIE,eACxBN,EAAOwP,EAAYxP,KACnBC,EAAMuP,EAAYvP,IAAM,GAGxBA,EAAMsJ,EAAS1H,EAAO0H,WACxBtJ,EAAMuP,EAAYvP,IAAMsJ,EAAS,IAE/BvJ,EAAO0J,EAAQ7H,EAAO6H,UACxB1J,EAAO6B,EAAO6H,QAAUA,GAI1BzJ,EAAMyP,KAAKC,MAAM9N,EAAOtB,SAASN,IAAMG,EAAEO,UAAUI,aAAcd,GACjED,EAAO0P,KAAKC,KAAK9N,EAAOtB,SAASP,KAAMA,GAEvC+E,EAAShF,KAAKC,EAAMC,EACtB,MACE8E,EAASnC,QAAS,EAClBmC,EAASrE,MAEb,EAEAqE,EAASnC,QAAS,EAElBoC,IAEAD,EAAS5B,SAAS,GAClB4B,EAAS3E,IAAIW,UAAU,GAInB4D,EAAMvG,OAAS,GAAK/B,IAAAA,MAAAA,UAAoB,mBAC1CoI,GAAgBE,EAAOC,EAAUC,EAAeC,EAAiBC,EAAUC,EAE/E,CA7LqC,CA8LvC,GACF,KAEAwF,EAAAA,EAAAA,QAAO2B,IAAAA,UAAsB,gBAAgB,SAAUxJ,GAAO,WAC5DA,EAAMiD,IACJ,UACA,EAAC,IAAgB,CAAChG,QAAS,kBAAM,EAAKhC,MAAMR,SAASW,OAAOO,eAAe,KAAK,EAAEuB,KAAK,aACpFxD,IAAAA,WAAAA,MAAqB,mDAG5B,IgBvPAA,IAAAA,uBAAAA,cAA2CyJ,GAC3CzJ,IAAAA,uBAAAA,cAA2CmK,GAC3CnK,IAAAA,uBAAAA,eAA4CqK,IAG5C8D,EAAAA,EAAAA,QAAOoF,IAAAA,UAA4B,qBAAqB,SAAUjN,GAChEA,EAAMiD,IAAI,gBAAiB,CACzB6I,KAAM,gBACN5O,KAAM,eACNgQ,MAAOxT,IAAAA,WAAAA,MAAqB,gEAG9BsG,EAAMiD,IAAI,gBAAiB,CACzB6I,KAAM,gBACN5O,KAAM,YACNgQ,MAAOxT,IAAAA,WAAAA,MAAqB,gEAG9BsG,EAAMiD,IAAI,iBAAkB,CAC1B6I,KAAM,iBACN5O,KAAM,YACNgQ,MAAOxT,IAAAA,WAAAA,MAAqB,gEAEhC,KAGAmO,EAAAA,EAAAA,QAAOsF,KAAAA,UAAoB,YAAY,SAAUnN,GAC/C,IAAMpG,EAAO4D,KAAK5D,KAClBoG,EAAMiD,IACJ,WACAmK,KAAAA,UACE,CACEvN,KAAMnG,IAAAA,MAAU,gBAAiB,CAAEK,SAAUH,EAAKiL,SAClDiH,KAAM,WACN5O,KAAM,aAERxD,IAAAA,WAAAA,MAAqB,6CAEvB,GAEJ,IAGA2T,EAAAA,gBAAAA,gBAAAA,KAAqC,gBACvC,IAQA5U,OAAO6U,OAAO/T,GAAAA,OAAQgU,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['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/Model']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Post']\"","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['forum/utils/DiscussionControls']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/EditPostComposer']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/mentions/./src/forum/utils/getCleanDisplayName.js","webpack://@flarum/mentions/./src/forum/utils/getMentionText.js","webpack://@flarum/mentions/./src/forum/utils/reply.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.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['forum/components/ReplyComposer']\"","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/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/throttleDebounce']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Group']\"","webpack://@flarum/mentions/./src/forum/fragments/AutocompleteDropdown.js","webpack://@flarum/mentions/./src/forum/addComposerAutocomplete.js","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/extenders']\"","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/external root \"flarum.core.compat['common/utils/isDark']\"","webpack://@flarum/mentions/./src/forum/utils/textFormatter.js","webpack://@flarum/mentions/./src/forum/compat.js","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"],"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['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/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","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['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EditPostComposer'];","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 getCleanDisplayName, { shouldUseOldFormat } from './getCleanDisplayName';\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 * @example New display name syntax\n * // '@\"User\"#1'\n * getMentionText(User) // User is ID 1, display name is 'User'\n *\n * @example Replying\n * // '@\"User\"#p13'\n * getMentionText(User, 13) // User display name is 'User', post ID is 13\n *\n * @example Using old syntax\n * // '@username'\n * getMentionText(User) // User's username is 'username'\n *\n * @example Group mention\n * // '@\"Mods\"#g4'\n * getMentionText(undefined, undefined, group) // Group display name is 'Mods', group ID is 4\n */\nexport default function getMentionText(user, postId, group) {\n if (user !== undefined && postId === undefined) {\n if (shouldUseOldFormat()) {\n // Plain @username\n const cleanText = getCleanDisplayName(user, false);\n return `@${cleanText}`;\n }\n // @\"Display name\"#UserID\n const cleanText = getCleanDisplayName(user);\n return `@\"${cleanText}\"#${user.id()}`;\n } else if (user !== undefined && postId !== undefined) {\n // @\"Display name\"#pPostID\n const cleanText = getCleanDisplayName(user);\n return `@\"${cleanText}\"#p${postId}`;\n } else if (group !== undefined) {\n // @\"Name Plural\"#gGroupID\n return `@\"${group.namePlural()}\"#g${group.id()}`;\n } else {\n throw 'No parameters were passed';\n }\n}\n","import app from 'flarum/forum/app';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport getMentionText from './getMentionText';\n\nexport function insertMention(post, composer, quote) {\n return new Promise((resolve) => {\n const user = post.user();\n const mention = getMentionText(user, post.id()) + ' ';\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","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\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['forum/components/ReplyComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/throttleDebounce'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","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 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 ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport avatar from 'flarum/common/helpers/avatar';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport highlight from 'flarum/common/helpers/highlight';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport { truncate } from 'flarum/common/utils/string';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\nimport Badge from 'flarum/common/components/Badge';\nimport Group from 'flarum/common/models/Group';\n\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport getMentionText from './utils/getMentionText';\n\nconst throttledSearch = throttle(\n 250, // 250ms timeout\n function (typed, searched, returnedUsers, returnedUserIds, dropdown, buildSuggestions) {\n const typedLower = typed.toLowerCase();\n if (!searched.includes(typedLower)) {\n app.store.find('users', { filter: { q: typed }, page: { limit: 5 } }).then((results) => {\n results.forEach((u) => {\n if (!returnedUserIds.has(u.id())) {\n returnedUserIds.add(u.id());\n returnedUsers.push(u);\n }\n });\n\n buildSuggestions();\n });\n\n searched.push(typedLower);\n }\n }\n);\n\nexport default function addComposerAutocomplete() {\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 const searched = [];\n let relMentionStart;\n let absMentionStart;\n let typed;\n let matchTyped;\n\n // We store users returned from an API here to preserve order in which they are returned\n // This prevents the user list jumping around while users are returned.\n // We also use a hashset for user IDs to provide O(1) lookup for the users already in the list.\n const returnedUsers = Array.from(app.store.all('users'));\n const returnedUserIds = new Set(returnedUsers.map((u) => u.id()));\n\n // Store groups, but exclude the two virtual groups - 'Guest' and 'Member'.\n const returnedGroups = Array.from(\n app.store.all('groups').filter((group) => {\n return group.id() != Group.GUEST_ID && group.id() != Group.MEMBER_ID;\n })\n );\n\n const applySuggestion = (replacement) => {\n this.attrs.composer.editor.replaceBeforeCursor(absMentionStart - 1, replacement + ' ');\n\n dropdown.hide();\n };\n\n params.inputListeners.push(() => {\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 an '@' symbol. If we find one,\n // we will want to show the autocomplete dropdown!\n const lastChunk = this.attrs.composer.editor.getLastNChars(30);\n absMentionStart = 0;\n for (let i = lastChunk.length - 1; i >= 0; i--) {\n const character = lastChunk.substr(i, 1);\n if (character === '@' && (i == 0 || /\\s/.test(lastChunk.substr(i - 1, 1)))) {\n relMentionStart = i + 1;\n absMentionStart = cursor - lastChunk.length + i + 1;\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (absMentionStart) {\n typed = lastChunk.substring(relMentionStart).toLowerCase();\n matchTyped = typed.match(/^[\"|“]((?:(?!\"#).)+)$/);\n typed = (matchTyped && matchTyped[1]) || typed;\n\n const makeSuggestion = function (user, replacement, content, className = '') {\n const username = usernameHelper(user);\n\n if (typed) {\n username.children = [highlight(username.text, typed)];\n delete username.text;\n }\n\n return (\n applySuggestion(replacement)}\n onmouseenter={function () {\n dropdown.setIndex($(this).parent().index());\n }}\n >\n \n {avatar(user)}\n {username} {content}\n \n \n );\n };\n\n const makeGroupSuggestion = function (group, replacement, content, className = '') {\n let groupName = group.namePlural().toLowerCase();\n\n if (typed) {\n groupName = highlight(groupName, typed);\n }\n\n return (\n applySuggestion(replacement)}\n onmouseenter={function () {\n dropdown.setIndex($(this).parent().index());\n }}\n >\n \n \n {groupName}\n \n \n );\n };\n\n const userMatches = function (user) {\n const names = [user.username(), user.displayName()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n };\n\n const groupMatches = function (group) {\n const names = [group.nameSingular(), group.namePlural()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n };\n\n const buildSuggestions = () => {\n const suggestions = [];\n\n // If the user has started to type a username, then suggest users\n // matching that username.\n if (typed) {\n returnedUsers.forEach((user) => {\n if (!userMatches(user)) return;\n\n suggestions.push(makeSuggestion(user, getMentionText(user), '', 'MentionsDropdown-user'));\n });\n\n // ... or groups.\n if (app.session?.user?.canMentionGroups()) {\n returnedGroups.forEach((group) => {\n if (!groupMatches(group)) return;\n\n suggestions.push(makeGroupSuggestion(group, getMentionText(undefined, undefined, group), '', 'MentionsDropdown-group'));\n });\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 if (this.attrs.composer.bodyMatches(ReplyComposer) || this.attrs.composer.bodyMatches(EditPostComposer)) {\n const composerAttrs = this.attrs.composer.body.attrs;\n const composerPost = composerAttrs.post;\n const discussion = (composerPost && composerPost.discussion()) || composerAttrs.discussion;\n\n if (discussion) {\n discussion\n .posts()\n // Filter to only comment posts, and replies before this message\n .filter((post) => post && post.contentType() === 'comment' && (!composerPost || post.number() < composerPost.number()))\n // Sort by new to old\n .sort((a, b) => b.createdAt() - a.createdAt())\n // Filter to where the user matches what is being typed\n .filter((post) => {\n const user = post.user();\n return user && userMatches(user);\n })\n // Get the first 5\n .splice(0, 5)\n // Make the suggestions\n .forEach((post) => {\n const user = post.user();\n suggestions.push(\n makeSuggestion(\n user,\n getMentionText(user, post.id()),\n [\n app.translator.trans('flarum-mentions.forum.composer.reply_to_post_text', { number: post.number() }),\n ' — ',\n truncate(post.contentPlain(), 200),\n ],\n 'MentionsDropdown-post'\n )\n );\n });\n }\n }\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 // Don't send API calls searching for users until at least 2 characters have been typed.\n // This focuses the mention results on users and posts in the discussion.\n if (typed.length > 1 && app.forum.attribute('canSearchUsers')) {\n throttledSearch(typed, searched, returnedUsers, returnedUserIds, dropdown, buildSuggestions);\n }\n }\n });\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","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/extenders'];","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 MentionsUserPage from './components/MentionsUserPage';\n\nexport default [new Extend.Routes().add('user.mentions', '/u/:username/mentions', MentionsUserPage)];\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/isDark'];","import app from 'flarum/forum/app';\nimport username from 'flarum/common/helpers/username';\nimport extractText from 'flarum/common/utils/extractText';\nimport isDark from 'flarum/common/utils/isDark';\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 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 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 tag.setAttribute('icon', group.icon());\n tag.setAttribute('color', group.color());\n tag.setAttribute('class', isDark(group.color()) ? 'GroupMention--light' : 'GroupMention--dark');\n\n return true;\n }\n }\n\n tag.invalidate();\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';\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};\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';\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 User.prototype.canMentionGroups = Model.attribute('canMentionGroups');\n\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 LinkButton.component(\n {\n href: app.route('user.mentions', { username: user.slug() }),\n name: 'mentions',\n icon: 'fas fa-at',\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\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('click', '.UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted)', function (e) {\n m.route.set(this.getAttribute('href'));\n e.preventDefault();\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
      • {PostPreview.component({ post })}
      • ,\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], LoadingIndicator.component());\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 Model from 'flarum/common/Model';\nimport Post from 'flarum/common/models/Post';\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';\n\nexport default function addMentionedByList() {\n Post.prototype.mentionedBy = Model.hasMany('mentionedBy');\n\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 replies.map((reply) => (\n
        • \n {PostPreview.component({\n post: reply,\n onclick: hidePreview.bind(this),\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"],"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","getDeletedUserText","extractText","app","getCleanDisplayName","user","useDisplayName","displayName","username","replace","getMentionText","postId","group","undefined","id","namePlural","insertMention","post","composer","quote","Promise","resolve","mention","fields","content","body","attrs","originalContent","cursorPosition","editor","getSelectionRange","preceding","slice","precedingNewlines","length","match","insertAtCursor","Array","join","trim","reply","EditPostComposer","discussion","DiscussionControls","then","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","PostQuoteButton","view","class","onclick","icon","className","show","left","top","$this","this","$","parentOffset","offsetParent","offset","css","hideHandler","hide","document","on","showStart","window","scrollTop","outerHeight","showEnd","right","bottom","outerWidth","off","Fragment","selectedText","selection","getSelection","isCollapsed","range","getRangeAt","parent","commonAncestorContainer","contains","clone","append","cloneContents","find","replaceWith","alt","src","innerText","href","text","AutocompleteDropdown","items","active","index","keyWasJustPressed","map","item","navigate","delta","setIndex","clearTimeout","keyWasJustPressedTimeout","setTimeout","complete","eq","click","scrollToItem","$dropdown","$items","rangedIndex","$item","removeClass","addClass","dropdownScroll","dropdownTop","dropdownBottom","itemTop","itemBottom","parseInt","stop","animate","throttledSearch","throttle","typed","searched","returnedUsers","returnedUserIds","dropdown","buildSuggestions","typedLower","toLowerCase","includes","filter","q","page","limit","results","forEach","u","has","add","push","PostMentionedNotification","notification","subject","replyNumber","fromUser","count","excerpt","truncate","contentPlain","Notification","UserMentionedNotification","number","GroupMentionedNotification","MentionsUserPage","loadResults","type","mentioned","loadLimit","sort","PostsUserPage","Extend","filterUserMentions","tag","hasAttribute","getAttribute","setAttribute","slug","invalidate","filterPostMentions","filterGroupMentions","canMentionGroups","color","isDark","textFormatter","$container","User","Model","addPreviews","contentHtml","oldPostContentHtml","isEditing","parentPost","$parentPost","e","m","route","set","preventDefault","each","timeout","data","$preview","getPostElement","showPreview","$post","visible","pageYOffset","height","positionPreview","previewHeight","width","showPost","render","title","PostPreview","store","getById","LoadingIndicator","hidePreview","hasClass","one","cancelable","hover","stopPropagation","extend","CommentPost","addPostMentionPreviews","Post","replies","mentionedBy","is","users","repliers","indexOf","overLimit","names","punctuateSeries","addMentionedByList","isHidden","canReply","$postBody","button","handler","rects","getClientRects","firstRect","clientY","clientX","lastRect","after","addEventListener","TextEditor","$editor","wrap","navigator","KeyboardNavigatable","when","onUp","onDown","onSelect","onCancel","bindTo","params","relMentionStart","absMentionStart","matchTyped","from","Set","returnedGroups","Group","applySuggestion","replacement","replaceBeforeCursor","inputListeners","cursor","lastChunk","getLastNChars","i","substr","test","substring","makeSuggestion","usernameHelper","children","highlight","onmouseenter","avatar","userMatches","some","name","suggestions","nameSingular","groupMatches","groupName","makeGroupSuggestion","bodyMatches","ReplyComposer","composerAttrs","composerPost","posts","contentType","b","createdAt","splice","coordinates","getCaretCoordinates","Math","max","NotificationGrid","label","UserPage","LinkButton","getPlainContent","assign","mentionsCompat"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/sticky/js/dist/forum.js b/extensions/sticky/js/dist/forum.js index c69513b55..9916511cc 100644 --- a/extensions/sticky/js/dist/forum.js +++ b/extensions/sticky/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:o=>{var s=o&&o.__esModule?()=>o.default:()=>o;return t.d(s,{a:s}),s},d:(o,s)=>{for(var n in s)t.o(s,n)&&!t.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:s[n]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};(()=>{"use strict";t.r(o);const s=flarum.core.compat["forum/app"];var n=t.n(s);const c=flarum.core.compat["common/Model"];var r=t.n(c);const e=flarum.core.compat["common/models/Discussion"];var i=t.n(e);function a(t,o){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,o){return t.__proto__=o,t},a(t,o)}const u=flarum.core.compat["forum/components/EventPost"];var p=function(t){var o,s;function n(){return t.apply(this,arguments)||this}s=t,(o=n).prototype=Object.create(s.prototype),o.prototype.constructor=o,a(o,s);var c=n.prototype;return c.icon=function(){return"fas fa-thumbtack"},c.descriptionKey=function(){return this.attrs.post.content().sticky?"flarum-sticky.forum.post_stream.discussion_stickied_text":"flarum-sticky.forum.post_stream.discussion_unstickied_text"},n}(t.n(u)());const f=flarum.core.compat["common/extend"],l=flarum.core.compat["common/components/Badge"];var d=t.n(l);const y=flarum.core.compat["forum/utils/DiscussionControls"];var k=t.n(y);const v=flarum.core.compat["forum/components/DiscussionPage"];var b=t.n(v);const h=flarum.core.compat["common/components/Button"];var _=t.n(h);const S=flarum.core.compat["forum/states/DiscussionListState"];var P=t.n(S);const g=flarum.core.compat["forum/components/DiscussionListItem"];var x=t.n(g);const O=flarum.core.compat["forum/components/IndexPage"];var j=t.n(O);const D=flarum.core.compat["common/utils/string"],I=flarum.core.compat["common/utils/classList"];var L=t.n(I);n().initializers.add("flarum-sticky",(function(){n().postComponents.discussionStickied=p,i().prototype.isSticky=r().attribute("isSticky"),i().prototype.canSticky=r().attribute("canSticky"),(0,f.extend)(i().prototype,"badges",(function(t){this.isSticky()&&t.add("sticky",d().component({type:"sticky",label:n().translator.trans("flarum-sticky.forum.badge.sticky_tooltip"),icon:"fas fa-thumbtack"}),10)})),(0,f.extend)(k(),"moderationControls",(function(t,o){o.canSticky()&&t.add("sticky",_().component({icon:"fas fa-thumbtack",onclick:this.stickyAction.bind(o)},n().translator.trans(o.isSticky()?"flarum-sticky.forum.discussion_controls.unsticky_button":"flarum-sticky.forum.discussion_controls.sticky_button")))})),k().stickyAction=function(){this.save({isSticky:!this.isSticky()}).then((function(){n().current.matches(b())&&n().current.get("stream").update(),m.redraw()}))},(0,f.extend)(P().prototype,"requestParams",(function(t){(n().current.matches(j())||n().current.matches(b()))&&t.include.push("firstPost")})),(0,f.extend)(x().prototype,"infoItems",(function(t){var o=this.attrs.discussion;if(o.isSticky()&&!this.attrs.params.q&&!o.lastReadPostNumber()){var s=o.firstPost();if(s){var n=(0,D.truncate)(s.contentPlain(),175);t.add("excerpt",m("div",null,n),-100)}}})),(0,f.extend)(x().prototype,"elementAttrs",(function(t){this.attrs.discussion.isSticky()&&(t.className=L()(t.className,"DiscussionListItem--sticky"))}))}))})(),module.exports=o})(); +(()=>{var t={n:o=>{var n=o&&o.__esModule?()=>o.default:()=>o;return t.d(n,{a:n}),n},d:(o,n)=>{for(var s in n)t.o(n,s)&&!t.o(o,s)&&Object.defineProperty(o,s,{enumerable:!0,get:n[s]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};(()=>{"use strict";t.r(o),t.d(o,{extend:()=>A});const n=flarum.core.compat["forum/app"];var s=t.n(n);const c=flarum.core.compat["common/Model"];var r=t.n(c);const e=flarum.core.compat["common/models/Discussion"];var i=t.n(e);const a=flarum.core.compat["common/extend"],u=flarum.core.compat["common/components/Badge"];var p=t.n(u);const f=flarum.core.compat["forum/utils/DiscussionControls"];var l=t.n(f);const d=flarum.core.compat["forum/components/DiscussionPage"];var y=t.n(d);const k=flarum.core.compat["common/components/Button"];var v=t.n(k);const b=flarum.core.compat["forum/states/DiscussionListState"];var h=t.n(b);const _=flarum.core.compat["forum/components/DiscussionListItem"];var S=t.n(_);const P=flarum.core.compat["forum/components/IndexPage"];var x=t.n(P);const g=flarum.core.compat["common/utils/string"],O=flarum.core.compat["common/utils/classList"];var j=t.n(O);const D=flarum.core.compat["common/extenders"];var I=t.n(D);function L(t,o){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,o){return t.__proto__=o,t},L(t,o)}const M=flarum.core.compat["forum/components/EventPost"];var w=function(t){var o,n;function s(){return t.apply(this,arguments)||this}n=t,(o=s).prototype=Object.create(n.prototype),o.prototype.constructor=o,L(o,n);var c=s.prototype;return c.icon=function(){return"fas fa-thumbtack"},c.descriptionKey=function(){return this.attrs.post.content().sticky?"flarum-sticky.forum.post_stream.discussion_stickied_text":"flarum-sticky.forum.post_stream.discussion_unstickied_text"},s}(t.n(M)());const A=[(new(I().PostTypes)).add("discussionStickied",w)];s().initializers.add("flarum-sticky",(function(){i().prototype.isSticky=r().attribute("isSticky"),i().prototype.canSticky=r().attribute("canSticky"),(0,a.extend)(i().prototype,"badges",(function(t){this.isSticky()&&t.add("sticky",p().component({type:"sticky",label:s().translator.trans("flarum-sticky.forum.badge.sticky_tooltip"),icon:"fas fa-thumbtack"}),10)})),(0,a.extend)(l(),"moderationControls",(function(t,o){o.canSticky()&&t.add("sticky",v().component({icon:"fas fa-thumbtack",onclick:this.stickyAction.bind(o)},s().translator.trans(o.isSticky()?"flarum-sticky.forum.discussion_controls.unsticky_button":"flarum-sticky.forum.discussion_controls.sticky_button")))})),l().stickyAction=function(){this.save({isSticky:!this.isSticky()}).then((function(){s().current.matches(y())&&s().current.get("stream").update(),m.redraw()}))},(0,a.extend)(h().prototype,"requestParams",(function(t){(s().current.matches(x())||s().current.matches(y()))&&t.include.push("firstPost")})),(0,a.extend)(S().prototype,"infoItems",(function(t){var o=this.attrs.discussion;if(o.isSticky()&&!this.attrs.params.q&&!o.lastReadPostNumber()){var n=o.firstPost();if(n){var s=(0,g.truncate)(n.contentPlain(),175);t.add("excerpt",m("div",null,s),-100)}}})),(0,a.extend)(S().prototype,"elementAttrs",(function(t){this.attrs.discussion.isSticky()&&(t.className=j()(t.className,"DiscussionListItem--sticky"))}))}))})(),module.exports=o})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/sticky/js/dist/forum.js.map b/extensions/sticky/js/dist/forum.js.map index d6b7936b4..1e1f313a5 100644 --- a/extensions/sticky/js/dist/forum.js.map +++ b/extensions/sticky/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/sticky/webpack/bootstrap","webpack://@flarum/sticky/webpack/runtime/compat get default export","webpack://@flarum/sticky/webpack/runtime/define property getters","webpack://@flarum/sticky/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/sticky/webpack/runtime/make namespace object","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/sticky/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/sticky/./src/forum/components/DiscussionStickiedPost.js","webpack://@flarum/sticky/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/sticky/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/sticky/./src/forum/index.js","webpack://@flarum/sticky/./src/forum/addStickyBadge.js","webpack://@flarum/sticky/./src/forum/addStickyControl.js","webpack://@flarum/sticky/./src/forum/addStickyExcerpt.js","webpack://@flarum/sticky/./src/forum/addStickyClass.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['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\n\nexport default class DiscussionStickiedPost extends EventPost {\n icon() {\n return 'fas fa-thumbtack';\n }\n\n descriptionKey() {\n return this.attrs.post.content().sticky\n ? 'flarum-sticky.forum.post_stream.discussion_stickied_text'\n : 'flarum-sticky.forum.post_stream.discussion_unstickied_text';\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\n\nimport DiscussionStickiedPost from './components/DiscussionStickiedPost';\nimport addStickyBadge from './addStickyBadge';\nimport addStickyControl from './addStickyControl';\nimport addStickyExcerpt from './addStickyExcerpt';\nimport addStickyClass from './addStickyClass';\n\napp.initializers.add('flarum-sticky', () => {\n app.postComponents.discussionStickied = DiscussionStickiedPost;\n\n Discussion.prototype.isSticky = Model.attribute('isSticky');\n Discussion.prototype.canSticky = Model.attribute('canSticky');\n\n addStickyBadge();\n addStickyControl();\n addStickyExcerpt();\n addStickyClass();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addStickyBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isSticky()) {\n badges.add(\n 'sticky',\n Badge.component({\n type: 'sticky',\n label: app.translator.trans('flarum-sticky.forum.badge.sticky_tooltip'),\n icon: 'fas fa-thumbtack',\n }),\n 10\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\n\nexport default function addStickyControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canSticky()) {\n items.add(\n 'sticky',\n Button.component(\n {\n icon: 'fas fa-thumbtack',\n onclick: this.stickyAction.bind(discussion),\n },\n app.translator.trans(\n discussion.isSticky()\n ? 'flarum-sticky.forum.discussion_controls.unsticky_button'\n : 'flarum-sticky.forum.discussion_controls.sticky_button'\n )\n )\n );\n }\n });\n\n DiscussionControls.stickyAction = function () {\n this.save({ isSticky: !this.isSticky() }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n };\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default function addStickyControl() {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.current.matches(IndexPage) || app.current.matches(DiscussionPage)) {\n params.include.push('firstPost');\n }\n });\n\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const discussion = this.attrs.discussion;\n\n if (discussion.isSticky() && !this.attrs.params.q && !discussion.lastReadPostNumber()) {\n const firstPost = discussion.firstPost();\n\n if (firstPost) {\n const excerpt = truncate(firstPost.contentPlain(), 175);\n\n // Wrapping in
          because ItemList entries need to be vnodes\n items.add('excerpt',
          {excerpt}
          , -100);\n }\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\n\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\n\nexport default function addStickyClass() {\n extend(DiscussionListItem.prototype, 'elementAttrs', function (attrs) {\n if (this.attrs.discussion.isSticky()) {\n attrs.className = classList(attrs.className, 'DiscussionListItem--sticky');\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","DiscussionStickiedPost","subClass","superClass","create","constructor","icon","descriptionKey","this","attrs","post","content","sticky","EventPost","app","Discussion","Model","extend","badges","isSticky","add","Badge","type","label","DiscussionControls","items","discussion","canSticky","Button","onclick","stickyAction","save","then","DiscussionPage","update","m","redraw","DiscussionListState","params","IndexPage","include","push","DiscussionListItem","q","lastReadPostNumber","firstPost","excerpt","truncate","contentPlain","className","classList"],"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,qDCL9D,MAAM,EAA+BC,OAAOC,KAAKC,OAAO,a,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,gB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,iBCAlD,EAA+BF,OAAOC,KAAKC,OAAO,2B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,mC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,oC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,8B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uBCAlD,EAA+BF,OAAOC,KAAKC,OAAO,0B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,oB,aCAzC,SAASC,EAAgBhB,EAAGiB,GAKzC,OAJAD,EAAkBf,OAAOiB,eAAiBjB,OAAOiB,eAAeC,OAAS,SAAyBnB,EAAGiB,GAEnG,OADAjB,EAAEoB,UAAYH,EACPjB,CACT,EACOgB,EAAgBhB,EAAGiB,EAC5B,CCNA,MAAM,EAA+BJ,OAAOC,KAAKC,OAAO,8B,ICEnCM,EAAsB,YCD5B,IAAwBC,EAAUC,EDCN,kDCDMA,EDCN,GCDJD,EDCI,GCAhCf,UAAYN,OAAOuB,OAAOD,EAAWhB,WAC9Ce,EAASf,UAAUkB,YAAcH,EACjCJ,EAAeI,EAAUC,GDFgB,kBASxC,OATwC,EACzCG,KAAA,WACE,MAAO,kBACT,EAAC,EAEDC,eAAA,WACE,OAAOC,KAAKC,MAAMC,KAAKC,UAAUC,OAC7B,2DACA,4DACN,EAAC,EATwC,C,MAASC,IECpD,UAAgB,IAAIC,IAAAA,YAAmBC,IAAI,qBAAsBd,ICQjEe,IAAAA,aAAAA,IAAqB,iBAAiB,WACpCC,IAAAA,UAAAA,SAAgCC,IAAAA,UAAgB,YAChDD,IAAAA,UAAAA,UAAiCC,IAAAA,UAAgB,cCPjDC,EAAAA,EAAAA,QAAOF,IAAAA,UAAsB,UAAU,SAAUG,GAC3CZ,KAAKa,YACPD,EAAOL,IACL,SACAO,IAAAA,UAAgB,CACdC,KAAM,SACNC,MAAOR,IAAAA,WAAAA,MAAqB,4CAC5BV,KAAM,qBAER,GAGN,KCXAa,EAAAA,EAAAA,QAAOM,IAAoB,sBAAsB,SAAUC,EAAOC,GAC5DA,EAAWC,aACbF,EAAMX,IACJ,SACAc,IAAAA,UACE,CACEvB,KAAM,mBACNwB,QAAStB,KAAKuB,aAAahC,KAAK4B,IAElCX,IAAAA,WAAAA,MACEW,EAAWN,WACP,0DACA,0DAKd,IAEAI,IAAAA,aAAkC,WAChCjB,KAAKwB,KAAK,CAAEX,UAAWb,KAAKa,aAAcY,MAAK,WACzCjB,IAAAA,QAAAA,QAAoBkB,MACtBlB,IAAAA,QAAAA,IAAgB,UAAUmB,SAG5BC,EAAEC,QACJ,GACF,GCzBAlB,EAAAA,EAAAA,QAAOmB,IAAAA,UAA+B,iBAAiB,SAAUC,IAC3DvB,IAAAA,QAAAA,QAAoBwB,MAAcxB,IAAAA,QAAAA,QAAoBkB,OACxDK,EAAOE,QAAQC,KAAK,YAExB,KAEAvB,EAAAA,EAAAA,QAAOwB,IAAAA,UAA8B,aAAa,SAAUjB,GAC1D,IAAMC,EAAanB,KAAKC,MAAMkB,WAE9B,GAAIA,EAAWN,aAAeb,KAAKC,MAAM8B,OAAOK,IAAMjB,EAAWkB,qBAAsB,CACrF,IAAMC,EAAYnB,EAAWmB,YAE7B,GAAIA,EAAW,CACb,IAAMC,GAAUC,EAAAA,EAAAA,UAASF,EAAUG,eAAgB,KAGnDvB,EAAMX,IAAI,UAAW,aAAMgC,IAAiB,IAC9C,CACF,CACF,KCtBA5B,EAAAA,EAAAA,QAAOwB,IAAAA,UAA8B,gBAAgB,SAAUlC,GACzDD,KAAKC,MAAMkB,WAAWN,aACxBZ,EAAMyC,UAAYC,IAAU1C,EAAMyC,UAAW,8BAEjD,GJSF,G","sources":["webpack://@flarum/sticky/webpack/bootstrap","webpack://@flarum/sticky/webpack/runtime/compat get default export","webpack://@flarum/sticky/webpack/runtime/define property getters","webpack://@flarum/sticky/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/sticky/webpack/runtime/make namespace object","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/sticky/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/sticky/./src/forum/components/DiscussionStickiedPost.js","webpack://@flarum/sticky/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/sticky/./src/forum/extend.ts","webpack://@flarum/sticky/./src/forum/index.js","webpack://@flarum/sticky/./src/forum/addStickyBadge.js","webpack://@flarum/sticky/./src/forum/addStickyControl.js","webpack://@flarum/sticky/./src/forum/addStickyExcerpt.js","webpack://@flarum/sticky/./src/forum/addStickyClass.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['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\n\nexport default class DiscussionStickiedPost extends EventPost {\n icon() {\n return 'fas fa-thumbtack';\n }\n\n descriptionKey() {\n return this.attrs.post.content().sticky\n ? 'flarum-sticky.forum.post_stream.discussion_stickied_text'\n : 'flarum-sticky.forum.post_stream.discussion_unstickied_text';\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Extend from 'flarum/common/extenders';\nimport DiscussionStickiedPost from './components/DiscussionStickiedPost';\n\nexport default [new Extend.PostTypes().add('discussionStickied', DiscussionStickiedPost)];\n","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\n\nimport addStickyBadge from './addStickyBadge';\nimport addStickyControl from './addStickyControl';\nimport addStickyExcerpt from './addStickyExcerpt';\nimport addStickyClass from './addStickyClass';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-sticky', () => {\n Discussion.prototype.isSticky = Model.attribute('isSticky');\n Discussion.prototype.canSticky = Model.attribute('canSticky');\n\n addStickyBadge();\n addStickyControl();\n addStickyExcerpt();\n addStickyClass();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addStickyBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isSticky()) {\n badges.add(\n 'sticky',\n Badge.component({\n type: 'sticky',\n label: app.translator.trans('flarum-sticky.forum.badge.sticky_tooltip'),\n icon: 'fas fa-thumbtack',\n }),\n 10\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\n\nexport default function addStickyControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canSticky()) {\n items.add(\n 'sticky',\n Button.component(\n {\n icon: 'fas fa-thumbtack',\n onclick: this.stickyAction.bind(discussion),\n },\n app.translator.trans(\n discussion.isSticky()\n ? 'flarum-sticky.forum.discussion_controls.unsticky_button'\n : 'flarum-sticky.forum.discussion_controls.sticky_button'\n )\n )\n );\n }\n });\n\n DiscussionControls.stickyAction = function () {\n this.save({ isSticky: !this.isSticky() }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n };\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default function addStickyControl() {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.current.matches(IndexPage) || app.current.matches(DiscussionPage)) {\n params.include.push('firstPost');\n }\n });\n\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const discussion = this.attrs.discussion;\n\n if (discussion.isSticky() && !this.attrs.params.q && !discussion.lastReadPostNumber()) {\n const firstPost = discussion.firstPost();\n\n if (firstPost) {\n const excerpt = truncate(firstPost.contentPlain(), 175);\n\n // Wrapping in
          because ItemList entries need to be vnodes\n items.add('excerpt',
          {excerpt}
          , -100);\n }\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\n\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\n\nexport default function addStickyClass() {\n extend(DiscussionListItem.prototype, 'elementAttrs', function (attrs) {\n if (this.attrs.discussion.isSticky()) {\n attrs.className = classList(attrs.className, 'DiscussionListItem--sticky');\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","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","DiscussionStickiedPost","subClass","superClass","create","constructor","icon","descriptionKey","this","attrs","post","content","sticky","EventPost","Extend","add","app","Discussion","Model","extend","badges","isSticky","Badge","type","label","DiscussionControls","items","discussion","canSticky","Button","onclick","stickyAction","save","then","DiscussionPage","update","m","redraw","DiscussionListState","params","IndexPage","include","push","DiscussionListItem","q","lastReadPostNumber","firstPost","excerpt","truncate","contentPlain","className","classList"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/subscriptions/js/dist/forum.js b/extensions/subscriptions/js/dist/forum.js index 09e05fe37..c751a65b2 100644 --- a/extensions/subscriptions/js/dist/forum.js +++ b/extensions/subscriptions/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var o={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return o.d(n,{a:n}),n},d:(t,n)=>{for(var s in n)o.o(n,s)&&!o.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(o,t)=>Object.prototype.hasOwnProperty.call(o,t),r:o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},t={};(()=>{"use strict";o.r(t);const n=flarum.core.compat["common/extend"],s=flarum.core.compat["forum/app"];var r=o.n(s);const i=flarum.core.compat["common/Model"];var a=o.n(i);const e=flarum.core.compat["common/models/Discussion"];var c=o.n(e);const l=flarum.core.compat["forum/components/IndexPage"];var u=o.n(l);const f=flarum.core.compat["forum/components/NotificationGrid"];var p=o.n(f);const b=flarum.core.compat["common/components/Badge"];var d=o.n(b);const _=flarum.core.compat["common/components/Button"];var g=o.n(_);const w=flarum.core.compat["forum/components/DiscussionPage"];var y=o.n(w);const v=flarum.core.compat["forum/utils/DiscussionControls"];var h=o.n(v);function x(){return x=Object.assign?Object.assign.bind():function(o){for(var t=1;t{var o={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return o.d(n,{a:n}),n},d:(t,n)=>{for(var s in n)o.o(n,s)&&!o.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(o,t)=>Object.prototype.hasOwnProperty.call(o,t),r:o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},t={};(()=>{"use strict";o.r(t),o.d(t,{extend:()=>X});const n=flarum.core.compat["common/extend"],s=flarum.core.compat["forum/app"];var r=o.n(s);const i=flarum.core.compat["common/Model"];var e=o.n(i);const a=flarum.core.compat["common/models/Discussion"];var c=o.n(a);const l=flarum.core.compat["forum/components/NotificationGrid"];var u=o.n(l);const f=flarum.core.compat["common/components/Badge"];var p=o.n(f);const b=flarum.core.compat["common/components/Button"];var d=o.n(b);const _=flarum.core.compat["forum/components/DiscussionPage"];var g=o.n(_);const w=flarum.core.compat["forum/utils/DiscussionControls"];var y=o.n(w);function v(){return v=Object.assign?Object.assign.bind():function(o){for(var t=1;t {\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['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default class SubscriptionMenuItem extends Component {\n view() {\n return (\n \n );\n }\n}\n","import app from 'flarum/forum/app';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport icon from 'flarum/common/helpers/icon';\nimport extractText from 'flarum/common/utils/extractText';\nimport classList from 'flarum/common/utils/classList';\n\nimport SubscriptionMenuItem from './SubscriptionMenuItem';\n\nexport default class SubscriptionMenu extends Dropdown {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.options = [\n {\n subscription: null,\n icon: 'far fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.not_following_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.not_following_text'),\n },\n {\n subscription: 'follow',\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_text'),\n },\n {\n subscription: 'ignore',\n icon: 'far fa-eye-slash',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_text'),\n },\n ];\n }\n\n view() {\n const discussion = this.attrs.discussion;\n const subscription = discussion.subscription();\n\n let buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.follow_button');\n let buttonIcon = 'far fa-star';\n const buttonClass = 'SubscriptionMenu-button--' + subscription;\n\n switch (subscription) {\n case 'follow':\n buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button');\n buttonIcon = 'fas fa-star';\n break;\n\n case 'ignore':\n buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button');\n buttonIcon = 'far fa-eye-slash';\n break;\n\n default:\n // no default\n }\n\n const preferences = app.session.user.preferences();\n const notifyEmail = preferences['notify_newPost_email'];\n const notifyAlert = preferences['notify_newPost_alert'];\n const tooltipText = extractText(\n app.translator.trans(\n notifyEmail ? 'flarum-subscriptions.forum.sub_controls.notify_email_tooltip' : 'flarum-subscriptions.forum.sub_controls.notify_alert_tooltip'\n )\n );\n\n const shouldShowTooltip = (notifyEmail || notifyAlert) && subscription === null;\n\n const button = (\n \n {buttonLabel}\n \n );\n\n return (\n
          \n {shouldShowTooltip ? (\n \n {button}\n \n ) : (\n button\n )}\n\n \n\n
            \n {this.options.map((attrs) => (\n
          • \n {SubscriptionMenuItem.component({\n ...attrs,\n onclick: this.saveSubscription.bind(this, discussion, attrs.subscription),\n active: subscription === attrs.subscription,\n })}\n
          • \n ))}\n
          \n
          \n );\n }\n\n saveSubscription(discussion, subscription) {\n discussion.save({ subscription });\n\n this.$('.SubscriptionMenu-button').tooltip('hide');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewPostNotification extends Notification {\n icon() {\n return 'fas fa-star';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n\n return app.route.discussion(discussion, content.postNumber);\n }\n\n content() {\n return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', { user: this.attrs.notification.fromUser() });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addSubscriptionBadge from './addSubscriptionBadge';\nimport addSubscriptionControls from './addSubscriptionControls';\nimport addSubscriptionFilter from './addSubscriptionFilter';\nimport addSubscriptionSettings from './addSubscriptionSettings';\n\nimport NewPostNotification from './components/NewPostNotification';\n\napp.initializers.add('subscriptions', function () {\n app.routes.following = { path: '/following', component: IndexPage };\n app.notificationComponents.newPost = NewPostNotification;\n\n Discussion.prototype.subscription = Model.attribute('subscription');\n\n addSubscriptionBadge();\n addSubscriptionControls();\n addSubscriptionFilter();\n addSubscriptionSettings();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('newPost', {\n name: 'newPost',\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.settings.notify_new_post_label'),\n });\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n let badge;\n\n switch (this.subscription()) {\n case 'follow':\n badge = Badge.component({\n label: app.translator.trans('flarum-subscriptions.forum.badge.following_tooltip'),\n icon: 'fas fa-star',\n type: 'following',\n });\n break;\n\n case 'ignore':\n badge = Badge.component({\n label: app.translator.trans('flarum-subscriptions.forum.badge.ignoring_tooltip'),\n icon: 'far fa-eye-slash',\n type: 'ignoring',\n });\n break;\n\n default:\n // no default\n }\n\n if (badge) {\n badges.add('subscription', badge);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\n\nimport SubscriptionMenu from './components/SubscriptionMenu';\n\nexport default function addSubscriptionControls() {\n extend(DiscussionControls, 'userControls', function (items, discussion, context) {\n if (app.session.user && !(context instanceof DiscussionPage)) {\n const states = {\n none: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.follow_button'), icon: 'fas fa-star', save: 'follow' },\n follow: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unfollow_button'), icon: 'far fa-star', save: null },\n ignore: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unignore_button'), icon: 'fas fa-eye', save: null },\n };\n\n const subscription = discussion.subscription() || 'none';\n\n items.add(\n 'subscription',\n Button.component(\n {\n icon: states[subscription].icon,\n onclick: discussion.save.bind(discussion, { subscription: states[subscription].save }),\n },\n states[subscription].label\n )\n );\n }\n });\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (app.session.user) {\n const discussion = this.discussion;\n\n items.add('subscription', SubscriptionMenu.component({ discussion }), 80);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\n\nexport default function addSubscriptionFilter() {\n extend(IndexPage.prototype, 'navItems', function (items) {\n if (app.session.user) {\n const params = app.search.stickyParams();\n\n items.add(\n 'following',\n LinkButton.component(\n {\n href: app.route('following', params),\n icon: 'fas fa-star',\n },\n app.translator.trans('flarum-subscriptions.forum.index.following_link')\n ),\n 50\n );\n }\n });\n\n extend(IndexPage.prototype, 'setTitle', function () {\n if (app.current.get('routeName') === 'following') {\n app.setTitle(app.translator.trans('flarum-subscriptions.forum.following.meta_title_text'));\n }\n });\n\n extend(GlobalSearchState.prototype, 'params', function (params) {\n // We can't set `q` here directly, as that would make the search bar\n // think that text has been entered, and display the \"clear\" button.\n params.onFollowing = app.current.get('routeName') === 'following';\n });\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (this.params.onFollowing) {\n params.filter ||= {};\n\n if (params.filter.q) {\n params.filter.q += ' is:following';\n } else {\n params.filter.subscription = 'following';\n }\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport Switch from 'flarum/common/components/Switch';\n\nexport default function () {\n extend(SettingsPage.prototype, 'notificationsItems', function (this: SettingsPage, items) {\n items.add(\n 'followAfterReply',\n Switch.component(\n {\n state: this.user.preferences().followAfterReply,\n onchange: (value) => {\n this.followAfterReplyLoading = true;\n\n this.user.savePreferences({ followAfterReply: value }).then(() => {\n this.followAfterReplyLoading = false;\n m.redraw();\n });\n },\n loading: this.followAfterReplyLoading,\n },\n app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label')\n )\n );\n\n items.add(\n 'notifyForAllPosts',\n {\n this.user!.savePreferences({ 'flarum-subscriptions.notify_for_all_posts': val });\n }}\n >\n {app.translator.trans('flarum-subscriptions.forum.settings.notify_for_all_posts_label')}\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","_extends","assign","bind","target","i","arguments","length","source","apply","this","_setPrototypeOf","p","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","SubscriptionMenuItem","view","className","onclick","attrs","active","icon","label","description","Component","SubscriptionMenu","oninit","vnode","options","subscription","app","discussion","buttonLabel","buttonIcon","buttonClass","preferences","notifyEmail","notifyAlert","tooltipText","extractText","shouldShowTooltip","button","classList","saveSubscription","indexOf","text","position","map","component","save","$","tooltip","Dropdown","NewPostNotification","href","notification","subject","content","postNumber","user","fromUser","Notification","path","IndexPage","Discussion","Model","extend","badges","badge","Badge","type","add","DiscussionControls","items","context","DiscussionPage","states","none","follow","ignore","Button","params","LinkButton","GlobalSearchState","onFollowing","DiscussionListState","filter","q","SettingsPage","Switch","state","followAfterReply","onchange","followAfterReplyLoading","savePreferences","then","m","redraw","loading","id","val","NotificationGrid","name"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/subscriptions/webpack/bootstrap","webpack://@flarum/subscriptions/webpack/runtime/compat get default export","webpack://@flarum/subscriptions/webpack/runtime/define property getters","webpack://@flarum/subscriptions/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/subscriptions/webpack/runtime/make namespace object","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/subscriptions/./src/forum/components/SubscriptionMenuItem.js","webpack://@flarum/subscriptions/./src/forum/components/SubscriptionMenu.js","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/subscriptions/./src/forum/components/NewPostNotification.js","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/subscriptions/./src/forum/extend.ts","webpack://@flarum/subscriptions/./src/forum/index.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionBadge.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionControls.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionFilter.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionSettings.tsx"],"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['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default class SubscriptionMenuItem extends Component {\n view() {\n return (\n \n );\n }\n}\n","import app from 'flarum/forum/app';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport icon from 'flarum/common/helpers/icon';\nimport extractText from 'flarum/common/utils/extractText';\nimport classList from 'flarum/common/utils/classList';\n\nimport SubscriptionMenuItem from './SubscriptionMenuItem';\n\nexport default class SubscriptionMenu extends Dropdown {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.options = [\n {\n subscription: null,\n icon: 'far fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.not_following_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.not_following_text'),\n },\n {\n subscription: 'follow',\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_text'),\n },\n {\n subscription: 'ignore',\n icon: 'far fa-eye-slash',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_text'),\n },\n ];\n }\n\n view() {\n const discussion = this.attrs.discussion;\n const subscription = discussion.subscription();\n\n let buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.follow_button');\n let buttonIcon = 'far fa-star';\n const buttonClass = 'SubscriptionMenu-button--' + subscription;\n\n switch (subscription) {\n case 'follow':\n buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button');\n buttonIcon = 'fas fa-star';\n break;\n\n case 'ignore':\n buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button');\n buttonIcon = 'far fa-eye-slash';\n break;\n\n default:\n // no default\n }\n\n const preferences = app.session.user.preferences();\n const notifyEmail = preferences['notify_newPost_email'];\n const notifyAlert = preferences['notify_newPost_alert'];\n const tooltipText = extractText(\n app.translator.trans(\n notifyEmail ? 'flarum-subscriptions.forum.sub_controls.notify_email_tooltip' : 'flarum-subscriptions.forum.sub_controls.notify_alert_tooltip'\n )\n );\n\n const shouldShowTooltip = (notifyEmail || notifyAlert) && subscription === null;\n\n const button = (\n \n {buttonLabel}\n \n );\n\n return (\n
          \n {shouldShowTooltip ? (\n \n {button}\n \n ) : (\n button\n )}\n\n \n\n
            \n {this.options.map((attrs) => (\n
          • \n {SubscriptionMenuItem.component({\n ...attrs,\n onclick: this.saveSubscription.bind(this, discussion, attrs.subscription),\n active: subscription === attrs.subscription,\n })}\n
          • \n ))}\n
          \n
          \n );\n }\n\n saveSubscription(discussion, subscription) {\n discussion.save({ subscription });\n\n this.$('.SubscriptionMenu-button').tooltip('hide');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewPostNotification extends Notification {\n icon() {\n return 'fas fa-star';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n\n return app.route.discussion(discussion, content.postNumber);\n }\n\n content() {\n return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', { user: this.attrs.notification.fromUser() });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","import Extend from 'flarum/common/extenders';\nimport IndexPage from 'flarum/forum/components/IndexPage';\n\nexport default [new Extend.Routes().add('following', '/following', IndexPage)];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addSubscriptionBadge from './addSubscriptionBadge';\nimport addSubscriptionControls from './addSubscriptionControls';\nimport addSubscriptionFilter from './addSubscriptionFilter';\nimport addSubscriptionSettings from './addSubscriptionSettings';\n\nimport NewPostNotification from './components/NewPostNotification';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('subscriptions', function () {\n app.notificationComponents.newPost = NewPostNotification;\n\n Discussion.prototype.subscription = Model.attribute('subscription');\n\n addSubscriptionBadge();\n addSubscriptionControls();\n addSubscriptionFilter();\n addSubscriptionSettings();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('newPost', {\n name: 'newPost',\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.settings.notify_new_post_label'),\n });\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n let badge;\n\n switch (this.subscription()) {\n case 'follow':\n badge = Badge.component({\n label: app.translator.trans('flarum-subscriptions.forum.badge.following_tooltip'),\n icon: 'fas fa-star',\n type: 'following',\n });\n break;\n\n case 'ignore':\n badge = Badge.component({\n label: app.translator.trans('flarum-subscriptions.forum.badge.ignoring_tooltip'),\n icon: 'far fa-eye-slash',\n type: 'ignoring',\n });\n break;\n\n default:\n // no default\n }\n\n if (badge) {\n badges.add('subscription', badge);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\n\nimport SubscriptionMenu from './components/SubscriptionMenu';\n\nexport default function addSubscriptionControls() {\n extend(DiscussionControls, 'userControls', function (items, discussion, context) {\n if (app.session.user && !(context instanceof DiscussionPage)) {\n const states = {\n none: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.follow_button'), icon: 'fas fa-star', save: 'follow' },\n follow: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unfollow_button'), icon: 'far fa-star', save: null },\n ignore: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unignore_button'), icon: 'fas fa-eye', save: null },\n };\n\n const subscription = discussion.subscription() || 'none';\n\n items.add(\n 'subscription',\n Button.component(\n {\n icon: states[subscription].icon,\n onclick: discussion.save.bind(discussion, { subscription: states[subscription].save }),\n },\n states[subscription].label\n )\n );\n }\n });\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (app.session.user) {\n const discussion = this.discussion;\n\n items.add('subscription', SubscriptionMenu.component({ discussion }), 80);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\n\nexport default function addSubscriptionFilter() {\n extend(IndexPage.prototype, 'navItems', function (items) {\n if (app.session.user) {\n const params = app.search.stickyParams();\n\n items.add(\n 'following',\n LinkButton.component(\n {\n href: app.route('following', params),\n icon: 'fas fa-star',\n },\n app.translator.trans('flarum-subscriptions.forum.index.following_link')\n ),\n 50\n );\n }\n });\n\n extend(IndexPage.prototype, 'setTitle', function () {\n if (app.current.get('routeName') === 'following') {\n app.setTitle(app.translator.trans('flarum-subscriptions.forum.following.meta_title_text'));\n }\n });\n\n extend(GlobalSearchState.prototype, 'params', function (params) {\n // We can't set `q` here directly, as that would make the search bar\n // think that text has been entered, and display the \"clear\" button.\n params.onFollowing = app.current.get('routeName') === 'following';\n });\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (this.params.onFollowing) {\n params.filter ||= {};\n\n if (params.filter.q) {\n params.filter.q += ' is:following';\n } else {\n params.filter.subscription = 'following';\n }\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport Switch from 'flarum/common/components/Switch';\n\nexport default function () {\n extend(SettingsPage.prototype, 'notificationsItems', function (this: SettingsPage, items) {\n items.add(\n 'followAfterReply',\n Switch.component(\n {\n state: this.user.preferences().followAfterReply,\n onchange: (value) => {\n this.followAfterReplyLoading = true;\n\n this.user.savePreferences({ followAfterReply: value }).then(() => {\n this.followAfterReplyLoading = false;\n m.redraw();\n });\n },\n loading: this.followAfterReplyLoading,\n },\n app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label')\n )\n );\n\n items.add(\n 'notifyForAllPosts',\n {\n this.user!.savePreferences({ 'flarum-subscriptions.notify_for_all_posts': val });\n }}\n >\n {app.translator.trans('flarum-subscriptions.forum.settings.notify_for_all_posts_label')}\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","_extends","assign","bind","target","i","arguments","length","source","apply","this","_setPrototypeOf","p","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","SubscriptionMenuItem","view","className","onclick","attrs","active","icon","label","description","Component","SubscriptionMenu","oninit","vnode","options","subscription","app","discussion","buttonLabel","buttonIcon","buttonClass","preferences","notifyEmail","notifyAlert","tooltipText","extractText","shouldShowTooltip","button","classList","saveSubscription","indexOf","text","position","map","component","save","$","tooltip","Dropdown","NewPostNotification","href","notification","subject","content","postNumber","user","fromUser","Notification","Extend","add","IndexPage","Discussion","Model","extend","badges","badge","Badge","type","DiscussionControls","items","context","DiscussionPage","states","none","follow","ignore","Button","params","LinkButton","GlobalSearchState","onFollowing","DiscussionListState","filter","q","SettingsPage","Switch","state","followAfterReply","onchange","followAfterReplyLoading","savePreferences","then","m","redraw","loading","id","val","NotificationGrid","name"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/tags/js/dist-typings/forum/extend.d.ts b/extensions/tags/js/dist-typings/forum/extend.d.ts new file mode 100644 index 000000000..f83ce3204 --- /dev/null +++ b/extensions/tags/js/dist-typings/forum/extend.d.ts @@ -0,0 +1,2 @@ +declare const _default: any[]; +export default _default; diff --git a/extensions/tags/js/dist-typings/forum/index.d.ts b/extensions/tags/js/dist-typings/forum/index.d.ts index cb0ff5c3b..6d2293da0 100644 --- a/extensions/tags/js/dist-typings/forum/index.d.ts +++ b/extensions/tags/js/dist-typings/forum/index.d.ts @@ -1 +1 @@ -export {}; +export { default as extend } from './extend'; diff --git a/extensions/tags/js/dist/forum.js b/extensions/tags/js/dist/forum.js index 5030c3f44..7fcfb98de 100644 --- a/extensions/tags/js/dist/forum.js +++ b/extensions/tags/js/dist/forum.js @@ -1,3 +1,3 @@ /*! For license information please see forum.js.LICENSE.txt */ -(()=>{var t={810:()=>{},841:(t,e,n)=>{"use strict";const r=flarum.core.compat["forum/app"];var a=n.n(r);const o=flarum.core.compat["common/Model"];var s=n.n(o);const i=flarum.core.compat["common/models/Discussion"];var c=n.n(i);const l=flarum.core.compat["forum/components/IndexPage"];var u=n.n(l);function d(t,e,n,r,a,o,s){try{var i=t[o](s),c=i.value}catch(t){return void n(t)}i.done?e(c):Promise.resolve(c).then(r,a)}var f=n(507),p=n.n(f);const h=flarum.core.compat["common/app"];var g=n.n(h),v=function(){function t(){this.loadedIncludes=new Set}return t.prototype.load=function(){var t,e=(t=p().mark((function t(e){var n,r=this;return p().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=[]),0!==(n=e.filter((function(t){return!r.loadedIncludes.has(t)}))).length){t.next=4;break}return t.abrupt("return",Promise.resolve(g().store.all("tags")));case 4:return t.abrupt("return",g().store.find("tags",{include:n.join(",")}).then((function(t){return n.forEach((function(t){return r.loadedIncludes.add(t)})),t})));case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(r,a){var o=t.apply(e,n);function s(t){d(o,r,a,s,i,"next",t)}function i(t){d(o,r,a,s,i,"throw",t)}s(void 0)}))});return function(t){return e.apply(this,arguments)}}(),t}();function y(t,e){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},y(t,e)}function b(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,y(t,e)}const T=flarum.core.compat["common/utils/computed"];var x=n.n(T),w=function(t){function e(){return t.apply(this,arguments)||this}b(e,t);var n=e.prototype;return n.name=function(){return s().attribute("name").call(this)},n.slug=function(){return s().attribute("slug").call(this)},n.description=function(){return s().attribute("description").call(this)},n.color=function(){return s().attribute("color").call(this)},n.backgroundUrl=function(){return s().attribute("backgroundUrl").call(this)},n.backgroundMode=function(){return s().attribute("backgroundMode").call(this)},n.icon=function(){return s().attribute("icon").call(this)},n.position=function(){return s().attribute("position").call(this)},n.parent=function(){return s().hasOne("parent").call(this)},n.children=function(){return s().hasMany("children").call(this)},n.defaultSort=function(){return s().attribute("defaultSort").call(this)},n.isChild=function(){return s().attribute("isChild").call(this)},n.isHidden=function(){return s().attribute("isHidden").call(this)},n.discussionCount=function(){return s().attribute("discussionCount").call(this)},n.lastPostedAt=function(){return s().attribute("lastPostedAt",s().transformDate).call(this)},n.lastPostedDiscussion=function(){return s().hasOne("lastPostedDiscussion").call(this)},n.isRestricted=function(){return s().attribute("isRestricted").call(this)},n.canStartDiscussion=function(){return s().attribute("canStartDiscussion").call(this)},n.canAddToDiscussion=function(){return s().attribute("canAddToDiscussion").call(this)},n.isPrimary=function(){return x()("position","parent",(function(t,e){return null!==t&&!1===e})).call(this)},e}(s());const _=flarum.core.compat["common/components/Page"];var N=n.n(_);const L=flarum.core.compat["common/components/Link"];var S=n.n(L);const P=flarum.core.compat["common/components/LoadingIndicator"];var I=n.n(P);const C=flarum.core.compat["common/helpers/listItems"];var k=n.n(C);const D=flarum.core.compat["common/helpers/humanTime"];var E=n.n(D);const O=flarum.core.compat["common/utils/classList"];var A=n.n(O);function j(t,e,n){void 0===e&&(e={}),void 0===n&&(n={});var r=t&&t.icon(),a=n.useColor,o=void 0===a||a;return e.className=A()([e.className,"icon",r?t.icon():"TagIcon"]),t&&o?(e.style=e.style||{},e.style["--color"]=t.color(),r&&(e.style.color=t.color())):t||(e.className+=" untagged"),r?m("i",e):m("span",e)}const M=flarum.core.compat["common/utils/extract"];var R=n.n(M);function q(t,e){void 0===e&&(e={}),e.style=e.style||{},e.className="TagLabel "+(e.className||"");var n=R()(e,"link"),r=t?t.name():app.translator.trans("flarum-tags.lib.deleted_tag_text");if(t){var a=t.color();a&&(e.style["--tag-bg"]=a,e.className+=" colored"),n&&(e.title=t.description()||"",e.href=app.route("tag",{tags:t.slug()})),t.isChild()&&(e.className+=" TagLabel--child")}else e.className+=" untagged";return m(n?S():"span",e,m("span",{className:"TagLabel-text"},t&&t.icon()&&j(t,{},{useColor:!1})," ",r))}function B(t){return t.slice(0).sort((function(t,e){var n=t.position(),r=e.position();if(null===n&&null===r)return e.discussionCount()-t.discussionCount();if(null===r)return-1;if(null===n)return 1;var a=t.parent(),o=e.parent();return a===o?n-r:a&&o?a.position()-o.position():a?a===e?1:a.position()-r:o?o===t?-1:n-o.position():0}))}var H=function(t){function e(){return t.apply(this,arguments)||this}b(e,t);var n=e.prototype;return n.oninit=function(e){var n=this;t.prototype.oninit.call(this,e),app.history.push("tags",app.translator.trans("flarum-tags.forum.header.back_to_tags_tooltip")),this.tags=[];var r=app.preloadedApiDocument();r?this.tags=B(r.filter((function(t){return!t.isChild()}))):(this.loading=!0,app.tagList.load(["children","lastPostedDiscussion","parent"]).then((function(){n.tags=B(app.store.all("tags").filter((function(t){return!t.isChild()}))),n.loading=!1,m.redraw()})))},n.view=function(){if(this.loading)return m(I(),null);var t=this.tags.filter((function(t){return null!==t.position()})),e=this.tags.filter((function(t){return null===t.position()}));return m("div",{className:"TagsPage"},u().prototype.hero(),m("div",{className:"container"},m("nav",{className:"TagsPage-nav IndexPage-nav sideNav"},m("ul",null,k()(u().prototype.sidebarItems().toArray()))),m("div",{className:"TagsPage-content sideNavOffset"},m("ul",{className:"TagTiles"},t.map((function(t){var e=t.lastPostedDiscussion(),n=B(t.children()||[]);return m("li",{className:"TagTile "+(t.color()?"colored":""),style:{"--tag-bg":t.color()}},m(S(),{className:"TagTile-info",href:app.route.tag(t)},t.icon()&&j(t,{},{useColor:!1}),m("h3",{className:"TagTile-name"},t.name()),m("p",{className:"TagTile-description"},t.description()),n?m("div",{className:"TagTile-children"},n.map((function(t){return[m(S(),{href:app.route.tag(t)},t.name())," "]}))):""),e?m(S(),{className:"TagTile-lastPostedDiscussion",href:app.route.discussion(e,e.lastPostNumber())},m("span",{className:"TagTile-lastPostedDiscussion-title"},e.title()),E()(e.lastPostedAt())):m("span",{className:"TagTile-lastPostedDiscussion"}))}))),e.length?m("div",{className:"TagCloud"},e.map((function(t){return[q(t,{link:!0})," "]}))):"")))},n.oncreate=function(e){t.prototype.oncreate.call(this,e),app.setTitle(app.translator.trans("flarum-tags.forum.all_tags.meta_title_text")),app.setTitleCount(0)},e}(N());const F=flarum.core.compat["forum/components/EventPost"];function G(t,e){void 0===e&&(e={});var n=[],r=R()(e,"link");return e.className="TagsLabel "+(e.className||""),t?B(t).forEach((function(e){(e||1===t.length)&&n.push(q(e,{link:r}))})):n.push(q()),m("span",e,n)}var K=function(t){function e(){return t.apply(this,arguments)||this}b(e,t),e.initAttrs=function(e){t.initAttrs.call(this,e);var n=e.post.content()[0],r=e.post.content()[1];function a(t,e){return t.filter((function(t){return-1===e.indexOf(t)})).map((function(t){return app.store.getById("tags",t)}))}e.tagsAdded=a(r,n),e.tagsRemoved=a(n,r)};var n=e.prototype;return n.icon=function(){return"fas fa-tag"},n.descriptionKey=function(){return this.attrs.tagsAdded.length?this.attrs.tagsRemoved.length?"flarum-tags.forum.post_stream.added_and_removed_tags_text":"flarum-tags.forum.post_stream.added_tags_text":"flarum-tags.forum.post_stream.removed_tags_text"},n.descriptionData=function(){var t={};return this.attrs.tagsAdded.length&&(t.tagsAdded=app.translator.trans("flarum-tags.forum.post_stream.tags_text",{tags:G(this.attrs.tagsAdded,{link:!0}),count:this.attrs.tagsAdded.length})),this.attrs.tagsRemoved.length&&(t.tagsRemoved=app.translator.trans("flarum-tags.forum.post_stream.tags_text",{tags:G(this.attrs.tagsRemoved,{link:!0}),count:this.attrs.tagsRemoved.length})),t},e}(n.n(F)());const $=flarum.core.compat["common/extend"],U=flarum.core.compat["common/components/Separator"];var Y=n.n(U);const z=flarum.core.compat["common/components/LinkButton"];var J=n.n(z),Q=function(t){function e(){return t.apply(this,arguments)||this}return b(e,t),e.prototype.view=function(t){var e=this.attrs.model,n=(this.constructor.isActive(this.attrs),e&&e.description()),r=A()(["TagLinkButton","hasIcon",this.attrs.className,e.isChild()&&"child"]);return m(S(),{className:r,href:this.attrs.route,style:e?{"--color":e.color()}:"",title:n||""},j(e,{className:"Button-icon"}),m("span",{className:"Button-label"},e?e.name():app.translator.trans("flarum-tags.forum.index.untagged_link")))},e.initAttrs=function(e){t.initAttrs.call(this,e);var n=e.model;e.params.tags=n?n.slug():"untagged",e.route=app.route("tag",e.params)},e}(J());function V(){(0,$.extend)(u().prototype,"navItems",(function(t){if(t.add("tags",m(J(),{icon:"fas fa-th-large",href:app.route("tags")},app.translator.trans("flarum-tags.forum.index.tags_link")),-10),!app.current.matches(H)){t.add("separator",Y().component(),-12);var e=app.search.stickyParams(),n=app.store.all("tags"),r=this.currentTag(),a=function(n){var a=r===n;!a&&r&&(a=r.parent()===n),t.add("tag"+n.id(),Q.component({model:n,params:e,active:a},null==n?void 0:n.name()),-14)};B(n).filter((function(t){return null!==t.position()&&(!t.isChild()||r&&(t.parent()===r||t.parent()===r.parent()))})).forEach(a);var o=n.filter((function(t){return null===t.position()})).sort((function(t,e){return e.discussionCount()-t.discussionCount()}));o.splice(0,3).forEach(a),o.length&&t.add("moreTags",m(J(),{href:app.route("tags")},app.translator.trans("flarum-tags.forum.index.more_link")),-16)}}))}const W=flarum.core.compat["forum/states/DiscussionListState"];var X=n.n(W);const Z=flarum.core.compat["forum/states/GlobalSearchState"];var tt=n.n(Z);const et=flarum.core.compat["common/Component"];var nt=n.n(et),rt=function(t){function e(){return t.apply(this,arguments)||this}return b(e,t),e.prototype.view=function(){var t=this.attrs.model,e=t.color();return m("header",{className:"Hero TagHero"+(e?" TagHero--colored":""),style:e?{"--hero-bg":e}:""},m("div",{className:"container"},m("div",{className:"containerNarrow"},m("h2",{className:"Hero-title"},t.icon()&&j(t,{},{useColor:!1})," ",t.name()),m("div",{className:"Hero-subtitle"},t.description()))))},e}(nt()),at=function(t){return a().store.all("tags").find((function(e){return 0===e.slug().localeCompare(t,void 0,{sensitivity:"base"})}))};function ot(){u().prototype.currentTag=function(){var t=this;if(this.currentActiveTag)return this.currentActiveTag;var e=a().search.params().tags,n=null;if(e&&(n=at(e)),e&&!n||n&&!n.isChild()&&!n.children()){if(this.currentTagLoading)return;this.currentTagLoading=!0,a().store.find("tags",e,{include:"children,children.parent,parent,state"}).then((function(){t.currentActiveTag=at(e),m.redraw()})).finally((function(){t.currentTagLoading=!1}))}return n?(this.currentActiveTag=n,this.currentActiveTag):void 0},(0,$.override)(u().prototype,"hero",(function(t){var e=this.currentTag();return e?m(rt,{model:e}):t()})),(0,$.extend)(u().prototype,"view",(function(t){var e=this.currentTag();e&&(t.attrs.className+=" IndexPage--tag"+e.id())})),(0,$.extend)(u().prototype,"setTitle",(function(){var t=this.currentTag();t&&a().setTitle(t.name())})),(0,$.extend)(u().prototype,"sidebarItems",(function(t){var e=this.currentTag();if(e){var n=e.color(),r=e.canStartDiscussion()||!a().session.user,o=t.get("newDiscussion");n&&(o.attrs.className=A()([o.attrs.className,"Button--tagColored"]),o.attrs.style={"--color":n}),o.attrs.disabled=!r,o.children=a().translator.trans(r?"core.forum.index.start_discussion_button":"core.forum.index.cannot_start_discussion_button")}})),(0,$.extend)(tt().prototype,"params",(function(t){t.tags=m.route.param("tags")})),(0,$.extend)(X().prototype,"requestParams",(function(t){var e;if("string"==typeof t.include?t.include=[t.include]:null==(e=t.include)||e.push("tags","tags.parent"),this.params.tags){var n,r=null!=(n=t.filter)?n:{};r.tag=this.params.tags;var a=r.q;a&&(r.q=a+" tag:"+this.params.tags),t.filter=r}}))}const st=flarum.core.compat["forum/components/DiscussionListItem"];var it=n.n(st);const ct=flarum.core.compat["forum/components/DiscussionHero"];var lt=n.n(ct);function ut(){(0,$.extend)(it().prototype,"infoItems",(function(t){var e=this.attrs.discussion.tags();e&&e.length&&t.add("tags",G(e),10)})),(0,$.extend)(lt().prototype,"view",(function(t){var e=B(this.attrs.discussion.tags());if(e&&e.length){var n=e[0].color();n&&(t.attrs.style={"--hero-bg":n},t.attrs.className+=" DiscussionHero--colored")}})),(0,$.extend)(lt().prototype,"items",(function(t){var e=this.attrs.discussion.tags();e&&e.length&&t.add("tags",G(e,{link:!0}),5)}))}const mt=flarum.core.compat["forum/utils/DiscussionControls"];var dt=n.n(mt);const ft=flarum.core.compat["common/components/Button"];var pt=n.n(ft);const ht=flarum.core.compat["forum/components/DiscussionPage"];var gt=n.n(ht);const vt=flarum.core.compat["common/utils/extractText"];var yt=n.n(vt);function bt(t){var e=app.store.all("tags");return t?e.filter((function(e){return e.canAddToDiscussion()||-1!==t.tags().indexOf(e)})):e.filter((function(t){return t.canStartDiscussion()}))}const Tt=flarum.core.compat["common/helpers/highlight"];var xt=n.n(Tt);const wt=flarum.core.compat["common/utils/KeyboardNavigatable"];var _t=n.n(wt);const Nt=flarum.core.compat["common/components/Modal"];var Lt=n.n(Nt);const St=flarum.core.compat["common/utils/Stream"];var Pt=n.n(St),It=["className","isToggled"],Ct=function(t){function e(){return t.apply(this,arguments)||this}return b(e,t),e.prototype.view=function(t){var e=this.attrs,n=e.className,r=e.isToggled,a=function(t,e){if(null==t)return{};var n,r,a={},o=Object.keys(t);for(r=0;r=0||(a[n]=t[n]);return a}(e,It),o=r?"far fa-check-circle":"far fa-circle";return m(pt(),Object.assign({},a,{icon:o,className:A()([n,r&&"Button--toggled"])}),t.children)},e}(nt()),kt=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;at.max.primary)throw new Error("The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.");if(t.min.secondary>t.max.secondary)throw new Error("The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.");if(t.min.total>t.max.primary+t.max.secondary)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.");if(t.max.totalt.max.total)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of tags allowed.")}(e.limits)};var n=e.prototype;return n.oninit=function(e){var n=this;t.prototype.oninit.call(this,e),this.navigator.onUp((function(){return n.setIndex(n.getCurrentNumericIndex()-1,!0)})).onDown((function(){return n.setIndex(n.getCurrentNumericIndex()+1,!0)})).onSelect(this.select.bind(this)).onRemove((function(){return n.selected.splice(n.selected.length-1,1)})),g().tagList.load(["parent"]).then((function(t){n.loading=!1,n.attrs.selectableTags&&(t=n.attrs.selectableTags(t)),n.tags=B(t),n.attrs.selectedTags&&n.attrs.selectedTags.map(n.addTag.bind(n)),n.indexTag=t[0],m.redraw()}))},n.className=function(){return A()("TagSelectionModal",this.attrs.className)},n.title=function(){return this.attrs.title},n.content=function(){var t=this;if(this.loading||!this.tags)return m(I(),null);var e=this.filter().toLowerCase(),n=this.primaryCount(),r=this.secondaryCount(),a=this.getFilteredTags(),o=Math.max(yt()(this.getInstruction(n,r)).length,this.filter().length);return[m("div",{className:"Modal-body"},m("div",{className:"TagSelectionModal-form"},m("div",{className:"TagSelectionModal-form-input"},m("div",{className:"TagsInput FormControl "+(this.focused?"focus":""),onclick:function(){return t.$(".TagsInput input").focus()}},m("span",{className:"TagsInput-selected"},this.selected.map((function(e){return m("span",{className:"TagsInput-tag",onclick:function(){t.removeTag(e),t.onready()}},q(e))}))),m("input",{className:"FormControl",placeholder:yt()(this.getInstruction(n,r)),bidi:this.filter,style:{width:o+"ch"},onkeydown:this.navigator.navigate.bind(this.navigator),onfocus:function(){return t.focused=!0},onblur:function(){return t.focused=!1}}))),m("div",{className:"TagSelectionModal-form-submit App-primaryControl"},m(pt(),{type:"submit",className:"Button Button--primary",disabled:!this.meetsRequirements(n,r),icon:"fas fa-check"},g().translator.trans("flarum-tags.lib.tag_selection_modal.submit_button"))))),m("div",{className:"Modal-footer"},m("ul",{className:"TagSelectionModal-list SelectTagList"},a.map((function(n){return m("li",{"data-index":n.id(),className:A()({pinned:null!==n.position(),child:!!n.parent(),colored:!!n.color(),selected:t.selected.includes(n),active:t.indexTag===n}),style:{color:n.color()},onmouseover:function(){return t.indexTag=n},onclick:t.toggleTag.bind(t,n)},j(n),m("span",{className:"SelectTagListItem-name"},xt()(n.name(),e)),n.description()?m("span",{className:"SelectTagListItem-description"},n.description()):"")}))),this.attrs.limits.allowBypassing&&m("div",{className:"TagSelectionModal-controls"},m(Ct,{className:"Button",onclick:function(){return t.bypassReqs=!t.bypassReqs},isToggled:this.bypassReqs},g().translator.trans("flarum-tags.lib.tag_selection_modal.bypass_requirements"))))]},n.getFilteredTags=function(){var t=this,e=this.filter().toLowerCase(),n=this.primaryCount(),r=this.secondaryCount(),a=this.tags;return this.attrs.requireParentTag&&(a=a.filter((function(e){var n=e.parent();return null!==n&&(!1===n||t.selected.includes(n))}))),this.bypassReqs||(this.selected.length>=this.attrs.limits.max.total?a=a.filter((function(e){return t.selected.includes(e)})):(n>=this.attrs.limits.max.primary&&(a=a.filter((function(e){return!e.isPrimary()||t.selected.includes(e)}))),r>=this.attrs.limits.max.secondary&&(a=a.filter((function(e){return e.isPrimary()||t.selected.includes(e)}))))),e&&(a=a.filter((function(t){return t.name().substring(0,e.length).toLowerCase()===e}))),this.indexTag&&a.includes(this.indexTag)||(this.indexTag=a[0]),a},n.primaryCount=function(){return this.selected.filter((function(t){return t.isPrimary()})).length},n.secondaryCount=function(){return this.selected.filter((function(t){return!t.isPrimary()})).length},n.meetsRequirements=function(t,e){return!!(this.bypassReqs||this.attrs.allowResetting&&0===this.selected.length)||!(this.selected.length=this.attrs.limits.min.primary&&e>=this.attrs.limits.min.secondary},n.addTag=function(t){if(t&&this.attrs.canSelect(t)){if(this.attrs.onSelect&&this.attrs.onSelect(t,this.selected),this.attrs.requireParentTag){var e=t.parent();e&&!this.selected.includes(e)&&this.selected.push(e)}this.selected.includes(t)||this.selected.push(t)}},n.removeTag=function(t){var e=this.selected.indexOf(t);-1!==e&&(this.selected.splice(e,1),this.attrs.requireParentTag&&this.selected.filter((function(e){return e.parent()===t})).forEach(this.removeTag.bind(this)),this.attrs.onDeselect&&this.attrs.onDeselect(t,this.selected))},n.toggleTag=function(t){this.tags&&(this.selected.includes(t)?this.removeTag(t):this.addTag(t),this.filter()&&(this.filter(""),this.indexTag=this.tags[0]),this.onready())},n.getInstruction=function(t,e){if(this.bypassReqs)return"";if(t li")},n.getCurrentNumericIndex=function(){return this.indexTag?this.selectableItems().index(this.getItem(this.indexTag)):-1},n.getItem=function(t){return this.selectableItems().filter('[data-index="'+t.id()+'"]')},n.setIndex=function(t,e){var n=this.selectableItems(),r=n.parent();t<0?t=n.length-1:t>=n.length&&(t=0);var a=n.eq(t);if(this.indexTag=g().store.getById("tags",a.attr("data-index")),m.redraw(),e&&this.indexTag){var o,s=r.scrollTop(),i=r.offset().top,c=i+r.outerHeight(),l=a.offset().top,u=l+a.outerHeight();lc&&(o=s-c+u+parseInt(r.css("padding-bottom"),10)),void 0!==o&&r.stop(!0).animate({scrollTop:o},100)}},e}(Lt()),Dt=function(t){function e(){return t.apply(this,arguments)||this}return b(e,t),e.initAttrs=function(e){var n;t.initAttrs.call(this,e);var r=e.discussion?a().translator.trans("flarum-tags.forum.choose_tags.edit_title",{title:m("em",null,e.discussion.title())}):a().translator.trans("flarum-tags.forum.choose_tags.title");e.className=A()(e.className,"TagDiscussionModal"),e.title=yt()(r),e.allowResetting=!!a().forum.attribute("canBypassTagCounts"),e.limits={allowBypassing:e.allowResetting,max:{primary:a().forum.attribute("minPrimaryTags"),secondary:a().forum.attribute("maxSecondaryTags")},min:{primary:a().forum.attribute("maxPrimaryTags"),secondary:a().forum.attribute("minSecondaryTags")}},e.requireParentTag=!0,e.selectableTags=function(){return bt(e.discussion)},null!=e.selectedTags||(e.selectedTags=(null==(n=e.discussion)?void 0:n.tags())||[]),e.canSelect=function(t){return t.canStartDiscussion()};var o=e.onsubmit||null;e.onsubmit=function(t){var n=e.discussion;n&&n.save({relationships:{tags:t}}).then((function(){a().current.matches(gt())&&a().current.get("stream").update(),m.redraw()})),o&&o(t)}},e}(kt);function Et(){(0,$.extend)(dt(),"moderationControls",(function(t,e){e.canTag()&&t.add("tags",m(pt(),{icon:"fas fa-tag",onclick:function(){return app.modal.show(Dt,{discussion:e})}},app.translator.trans("flarum-tags.forum.discussion_controls.edit_tags_button")))}))}const Ot=flarum.core.compat["forum/components/DiscussionComposer"];var At=n.n(Ot);function jt(){(0,$.extend)(u().prototype,"newDiscussionAction",(function(t){var e=this.currentTag();if(e){var n=e.parent(),r=n?[n,e]:[e];t.then((function(t){return t.fields.tags=r}))}else app.composer.fields.tags=[]})),(0,$.extend)(At().prototype,"oninit",(function(){app.tagList.load(["parent"]).then((function(){return m.redraw()}))})),At().prototype.chooseTags=function(){var t=this;bt().length&&app.modal.show(Dt,{selectedTags:(this.composer.fields.tags||[]).slice(0),onsubmit:function(e){t.composer.fields.tags=e,t.$("textarea").focus()}})},(0,$.extend)(At().prototype,"headerItems",(function(t){var e=this.composer.fields.tags||[],n=bt();t.add("tags",m("a",{className:A()(["DiscussionComposer-changeTags",!n.length&&"disabled"]),onclick:this.chooseTags.bind(this)},e.length?G(e):m("span",{className:"TagLabel untagged"},app.translator.trans("flarum-tags.forum.composer_discussion.choose_tags_link"))),10)})),(0,$.override)(At().prototype,"onsubmit",(function(t){var e=this,n=this.composer.fields.tags||[],r=n.filter((function(t){return null!==t.position()&&!t.isChild()})),a=n.filter((function(t){return null===t.position()})),o=bt(),s=parseInt(app.forum.attribute("minPrimaryTags")),i=parseInt(app.forum.attribute("minSecondaryTags")),c=parseInt(app.forum.attribute("maxPrimaryTags")),l=parseInt(app.forum.attribute("maxSecondaryTags"));(!n.length&&0!==c&&0!==l||r.length{var r=n(75).default;function a(){"use strict";t.exports=a=function(){return e},t.exports.__esModule=!0,t.exports.default=t.exports;var e={},n=Object.prototype,o=n.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},c=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function m(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{m({},"")}catch(t){m=function(t,e,n){return t[e]=n}}function d(t,e,n,r){var a=e&&e.prototype instanceof h?e:h,o=Object.create(a.prototype),i=new I(r||[]);return s(o,"_invoke",{value:N(t,n,i)}),o}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=d;var p={};function h(){}function g(){}function v(){}var y={};m(y,c,(function(){return this}));var b=Object.getPrototypeOf,T=b&&b(b(C([])));T&&T!==n&&o.call(T,c)&&(y=T);var x=v.prototype=h.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){m(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function n(a,s,i,c){var l=f(t[a],t,s);if("throw"!==l.type){var u=l.arg,m=u.value;return m&&"object"==r(m)&&o.call(m,"__await")?e.resolve(m.__await).then((function(t){n("next",t,i,c)}),(function(t){n("throw",t,i,c)})):e.resolve(m).then((function(t){u.value=t,i(u)}),(function(t){return n("throw",t,i,c)}))}c(l.arg)}var a;s(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,a){n(t,r,e,a)}))}return a=a?a.then(o,o):o()}})}function N(t,e,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var s=n.delegate;if(s){var i=L(s,n);if(i){if(i===p)continue;return i}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=f(t,e,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function L(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,L(t,e),"throw"===e.method))return p;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=f(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,p;var a=r.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function C(t){if(t){var e=t[c];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n=0;--r){var a=this.tryEntries[r],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var i=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(i&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var a=r.arg;P(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:C(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}t.exports=a,t.exports.__esModule=!0,t.exports.default=t.exports},75:t=>{function e(n){return t.exports=e="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},t.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},507:(t,e,n)=>{var r=n(440)();t.exports=r;try{regeneratorRuntime=r}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},e={};function n(r){var a=e[r];if(void 0!==a)return a.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r);var t=n(810),e={};for(const n in t)"default"!==n&&(e[n]=()=>t[n]);n.d(r,e),n(841)})(),module.exports=r})(); +(()=>{var t={810:()=>{},930:(t,e,n)=>{"use strict";n.d(e,{l:()=>qt});const r=flarum.core.compat["forum/app"];var a=n.n(r);const o=flarum.core.compat["common/Model"];var s=n.n(o);const i=flarum.core.compat["common/models/Discussion"];var c=n.n(i);function l(t,e,n,r,a,o,s){try{var i=t[o](s),c=i.value}catch(t){return void n(t)}i.done?e(c):Promise.resolve(c).then(r,a)}var u=n(507),d=n.n(u);const f=flarum.core.compat["common/app"];var p=n.n(f),h=function(){function t(){this.loadedIncludes=new Set}return t.prototype.load=function(){var t,e=(t=d().mark((function t(e){var n,r=this;return d().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=[]),0!==(n=e.filter((function(t){return!r.loadedIncludes.has(t)}))).length){t.next=4;break}return t.abrupt("return",Promise.resolve(p().store.all("tags")));case 4:return t.abrupt("return",p().store.find("tags",{include:n.join(",")}).then((function(t){return n.forEach((function(t){return r.loadedIncludes.add(t)})),t})));case 5:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(r,a){var o=t.apply(e,n);function s(t){l(o,r,a,s,i,"next",t)}function i(t){l(o,r,a,s,i,"throw",t)}s(void 0)}))});return function(t){return e.apply(this,arguments)}}(),t}();function g(t,e){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},g(t,e)}function v(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,g(t,e)}const y=flarum.core.compat["common/utils/computed"];var b=n.n(y),T=function(t){function e(){return t.apply(this,arguments)||this}v(e,t);var n=e.prototype;return n.name=function(){return s().attribute("name").call(this)},n.slug=function(){return s().attribute("slug").call(this)},n.description=function(){return s().attribute("description").call(this)},n.color=function(){return s().attribute("color").call(this)},n.backgroundUrl=function(){return s().attribute("backgroundUrl").call(this)},n.backgroundMode=function(){return s().attribute("backgroundMode").call(this)},n.icon=function(){return s().attribute("icon").call(this)},n.position=function(){return s().attribute("position").call(this)},n.parent=function(){return s().hasOne("parent").call(this)},n.children=function(){return s().hasMany("children").call(this)},n.defaultSort=function(){return s().attribute("defaultSort").call(this)},n.isChild=function(){return s().attribute("isChild").call(this)},n.isHidden=function(){return s().attribute("isHidden").call(this)},n.discussionCount=function(){return s().attribute("discussionCount").call(this)},n.lastPostedAt=function(){return s().attribute("lastPostedAt",s().transformDate).call(this)},n.lastPostedDiscussion=function(){return s().hasOne("lastPostedDiscussion").call(this)},n.isRestricted=function(){return s().attribute("isRestricted").call(this)},n.canStartDiscussion=function(){return s().attribute("canStartDiscussion").call(this)},n.canAddToDiscussion=function(){return s().attribute("canAddToDiscussion").call(this)},n.isPrimary=function(){return b()("position","parent",(function(t,e){return null!==t&&!1===e})).call(this)},e}(s());const x=flarum.core.compat["common/extend"],w=flarum.core.compat["forum/components/IndexPage"];var _=n.n(w);const N=flarum.core.compat["common/components/Separator"];var L=n.n(N);const P=flarum.core.compat["common/components/LinkButton"];var S=n.n(P);const I=flarum.core.compat["common/components/Link"];var C=n.n(I);const k=flarum.core.compat["common/utils/classList"];var D=n.n(k);function E(t,e,n){void 0===e&&(e={}),void 0===n&&(n={});var r=t&&t.icon(),a=n.useColor,o=void 0===a||a;return e.className=D()([e.className,"icon",r?t.icon():"TagIcon"]),t&&o?(e.style=e.style||{},e.style["--color"]=t.color(),r&&(e.style.color=t.color())):t||(e.className+=" untagged"),r?m("i",e):m("span",e)}var O=function(t){function e(){return t.apply(this,arguments)||this}return v(e,t),e.prototype.view=function(t){var e=this.attrs.model,n=(this.constructor.isActive(this.attrs),e&&e.description()),r=D()(["TagLinkButton","hasIcon",this.attrs.className,e.isChild()&&"child"]);return m(C(),{className:r,href:this.attrs.route,style:e?{"--color":e.color()}:"",title:n||""},E(e,{className:"Button-icon"}),m("span",{className:"Button-label"},e?e.name():app.translator.trans("flarum-tags.forum.index.untagged_link")))},e.initAttrs=function(e){t.initAttrs.call(this,e);var n=e.model;e.params.tags=n?n.slug():"untagged",e.route=app.route("tag",e.params)},e}(S());const A=flarum.core.compat["common/components/Page"];var R=n.n(A);const j=flarum.core.compat["common/components/LoadingIndicator"];var M=n.n(j);const q=flarum.core.compat["common/helpers/listItems"];var B=n.n(q);const H=flarum.core.compat["common/helpers/humanTime"];var F=n.n(H);const G=flarum.core.compat["common/utils/extract"];var K=n.n(G);function $(t,e){void 0===e&&(e={}),e.style=e.style||{},e.className="TagLabel "+(e.className||"");var n=K()(e,"link"),r=t?t.name():app.translator.trans("flarum-tags.lib.deleted_tag_text");if(t){var a=t.color();a&&(e.style["--tag-bg"]=a,e.className+=" colored"),n&&(e.title=t.description()||"",e.href=app.route("tag",{tags:t.slug()})),t.isChild()&&(e.className+=" TagLabel--child")}else e.className+=" untagged";return m(n?C():"span",e,m("span",{className:"TagLabel-text"},t&&t.icon()&&E(t,{},{useColor:!1})," ",r))}function U(t){return t.slice(0).sort((function(t,e){var n=t.position(),r=e.position();if(null===n&&null===r)return e.discussionCount()-t.discussionCount();if(null===r)return-1;if(null===n)return 1;var a=t.parent(),o=e.parent();return a===o?n-r:a&&o?a.position()-o.position():a?a===e?1:a.position()-r:o?o===t?-1:n-o.position():0}))}var Y=function(t){function e(){return t.apply(this,arguments)||this}v(e,t);var n=e.prototype;return n.oninit=function(e){var n=this;t.prototype.oninit.call(this,e),app.history.push("tags",app.translator.trans("flarum-tags.forum.header.back_to_tags_tooltip")),this.tags=[];var r=app.preloadedApiDocument();r?this.tags=U(r.filter((function(t){return!t.isChild()}))):(this.loading=!0,app.tagList.load(["children","lastPostedDiscussion","parent"]).then((function(){n.tags=U(app.store.all("tags").filter((function(t){return!t.isChild()}))),n.loading=!1,m.redraw()})))},n.view=function(){if(this.loading)return m(M(),null);var t=this.tags.filter((function(t){return null!==t.position()})),e=this.tags.filter((function(t){return null===t.position()}));return m("div",{className:"TagsPage"},_().prototype.hero(),m("div",{className:"container"},m("nav",{className:"TagsPage-nav IndexPage-nav sideNav"},m("ul",null,B()(_().prototype.sidebarItems().toArray()))),m("div",{className:"TagsPage-content sideNavOffset"},m("ul",{className:"TagTiles"},t.map((function(t){var e=t.lastPostedDiscussion(),n=U(t.children()||[]);return m("li",{className:"TagTile "+(t.color()?"colored":""),style:{"--tag-bg":t.color()}},m(C(),{className:"TagTile-info",href:app.route.tag(t)},t.icon()&&E(t,{},{useColor:!1}),m("h3",{className:"TagTile-name"},t.name()),m("p",{className:"TagTile-description"},t.description()),n?m("div",{className:"TagTile-children"},n.map((function(t){return[m(C(),{href:app.route.tag(t)},t.name())," "]}))):""),e?m(C(),{className:"TagTile-lastPostedDiscussion",href:app.route.discussion(e,e.lastPostNumber())},m("span",{className:"TagTile-lastPostedDiscussion-title"},e.title()),F()(e.lastPostedAt())):m("span",{className:"TagTile-lastPostedDiscussion"}))}))),e.length?m("div",{className:"TagCloud"},e.map((function(t){return[$(t,{link:!0})," "]}))):"")))},n.oncreate=function(e){t.prototype.oncreate.call(this,e),app.setTitle(app.translator.trans("flarum-tags.forum.all_tags.meta_title_text")),app.setTitleCount(0)},e}(R());function z(){(0,x.extend)(_().prototype,"navItems",(function(t){if(t.add("tags",m(S(),{icon:"fas fa-th-large",href:app.route("tags")},app.translator.trans("flarum-tags.forum.index.tags_link")),-10),!app.current.matches(Y)){t.add("separator",L().component(),-12);var e=app.search.stickyParams(),n=app.store.all("tags"),r=this.currentTag(),a=function(n){var a=r===n;!a&&r&&(a=r.parent()===n),t.add("tag"+n.id(),O.component({model:n,params:e,active:a},null==n?void 0:n.name()),-14)};U(n).filter((function(t){return null!==t.position()&&(!t.isChild()||r&&(t.parent()===r||t.parent()===r.parent()))})).forEach(a);var o=n.filter((function(t){return null===t.position()})).sort((function(t,e){return e.discussionCount()-t.discussionCount()}));o.splice(0,3).forEach(a),o.length&&t.add("moreTags",m(S(),{href:app.route("tags")},app.translator.trans("flarum-tags.forum.index.more_link")),-16)}}))}const J=flarum.core.compat["forum/states/DiscussionListState"];var Q=n.n(J);const V=flarum.core.compat["forum/states/GlobalSearchState"];var W=n.n(V);const X=flarum.core.compat["common/Component"];var Z=n.n(X),tt=function(t){function e(){return t.apply(this,arguments)||this}return v(e,t),e.prototype.view=function(){var t=this.attrs.model,e=t.color();return m("header",{className:"Hero TagHero"+(e?" TagHero--colored":""),style:e?{"--hero-bg":e}:""},m("div",{className:"container"},m("div",{className:"containerNarrow"},m("h2",{className:"Hero-title"},t.icon()&&E(t,{},{useColor:!1})," ",t.name()),m("div",{className:"Hero-subtitle"},t.description()))))},e}(Z()),et=function(t){return a().store.all("tags").find((function(e){return 0===e.slug().localeCompare(t,void 0,{sensitivity:"base"})}))};function nt(){_().prototype.currentTag=function(){var t=this;if(this.currentActiveTag)return this.currentActiveTag;var e=a().search.params().tags,n=null;if(e&&(n=et(e)),e&&!n||n&&!n.isChild()&&!n.children()){if(this.currentTagLoading)return;this.currentTagLoading=!0,a().store.find("tags",e,{include:"children,children.parent,parent,state"}).then((function(){t.currentActiveTag=et(e),m.redraw()})).finally((function(){t.currentTagLoading=!1}))}return n?(this.currentActiveTag=n,this.currentActiveTag):void 0},(0,x.override)(_().prototype,"hero",(function(t){var e=this.currentTag();return e?m(tt,{model:e}):t()})),(0,x.extend)(_().prototype,"view",(function(t){var e=this.currentTag();e&&(t.attrs.className+=" IndexPage--tag"+e.id())})),(0,x.extend)(_().prototype,"setTitle",(function(){var t=this.currentTag();t&&a().setTitle(t.name())})),(0,x.extend)(_().prototype,"sidebarItems",(function(t){var e=this.currentTag();if(e){var n=e.color(),r=e.canStartDiscussion()||!a().session.user,o=t.get("newDiscussion");n&&(o.attrs.className=D()([o.attrs.className,"Button--tagColored"]),o.attrs.style={"--color":n}),o.attrs.disabled=!r,o.children=a().translator.trans(r?"core.forum.index.start_discussion_button":"core.forum.index.cannot_start_discussion_button")}})),(0,x.extend)(W().prototype,"params",(function(t){t.tags=m.route.param("tags")})),(0,x.extend)(Q().prototype,"requestParams",(function(t){var e;if("string"==typeof t.include?t.include=[t.include]:null==(e=t.include)||e.push("tags","tags.parent"),this.params.tags){var n,r=null!=(n=t.filter)?n:{};r.tag=this.params.tags;var a=r.q;a&&(r.q=a+" tag:"+this.params.tags),t.filter=r}}))}const rt=flarum.core.compat["forum/components/DiscussionListItem"];var at=n.n(rt);const ot=flarum.core.compat["forum/components/DiscussionHero"];var st=n.n(ot);function it(t,e){void 0===e&&(e={});var n=[],r=K()(e,"link");return e.className="TagsLabel "+(e.className||""),t?U(t).forEach((function(e){(e||1===t.length)&&n.push($(e,{link:r}))})):n.push($()),m("span",e,n)}function ct(){(0,x.extend)(at().prototype,"infoItems",(function(t){var e=this.attrs.discussion.tags();e&&e.length&&t.add("tags",it(e),10)})),(0,x.extend)(st().prototype,"view",(function(t){var e=U(this.attrs.discussion.tags());if(e&&e.length){var n=e[0].color();n&&(t.attrs.style={"--hero-bg":n},t.attrs.className+=" DiscussionHero--colored")}})),(0,x.extend)(st().prototype,"items",(function(t){var e=this.attrs.discussion.tags();e&&e.length&&t.add("tags",it(e,{link:!0}),5)}))}const lt=flarum.core.compat["forum/utils/DiscussionControls"];var ut=n.n(lt);const mt=flarum.core.compat["common/components/Button"];var dt=n.n(mt);const ft=flarum.core.compat["forum/components/DiscussionPage"];var pt=n.n(ft);const ht=flarum.core.compat["common/utils/extractText"];var gt=n.n(ht);function vt(t){var e=app.store.all("tags");return t?e.filter((function(e){return e.canAddToDiscussion()||-1!==t.tags().indexOf(e)})):e.filter((function(t){return t.canStartDiscussion()}))}const yt=flarum.core.compat["common/helpers/highlight"];var bt=n.n(yt);const Tt=flarum.core.compat["common/utils/KeyboardNavigatable"];var xt=n.n(Tt);const wt=flarum.core.compat["common/components/Modal"];var _t=n.n(wt);const Nt=flarum.core.compat["common/utils/Stream"];var Lt=n.n(Nt),Pt=["className","isToggled"],St=function(t){function e(){return t.apply(this,arguments)||this}return v(e,t),e.prototype.view=function(t){var e=this.attrs,n=e.className,r=e.isToggled,a=function(t,e){if(null==t)return{};var n,r,a={},o=Object.keys(t);for(r=0;r=0||(a[n]=t[n]);return a}(e,Pt),o=r?"far fa-check-circle":"far fa-circle";return m(dt(),Object.assign({},a,{icon:o,className:D()([n,r&&"Button--toggled"])}),t.children)},e}(Z()),It=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),a=0;at.max.primary)throw new Error("The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.");if(t.min.secondary>t.max.secondary)throw new Error("The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.");if(t.min.total>t.max.primary+t.max.secondary)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.");if(t.max.totalt.max.total)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of tags allowed.")}(e.limits)};var n=e.prototype;return n.oninit=function(e){var n=this;t.prototype.oninit.call(this,e),this.navigator.onUp((function(){return n.setIndex(n.getCurrentNumericIndex()-1,!0)})).onDown((function(){return n.setIndex(n.getCurrentNumericIndex()+1,!0)})).onSelect(this.select.bind(this)).onRemove((function(){return n.selected.splice(n.selected.length-1,1)})),p().tagList.load(["parent"]).then((function(t){n.loading=!1,n.attrs.selectableTags&&(t=n.attrs.selectableTags(t)),n.tags=U(t),n.attrs.selectedTags&&n.attrs.selectedTags.map(n.addTag.bind(n)),n.indexTag=t[0],m.redraw()}))},n.className=function(){return D()("TagSelectionModal",this.attrs.className)},n.title=function(){return this.attrs.title},n.content=function(){var t=this;if(this.loading||!this.tags)return m(M(),null);var e=this.filter().toLowerCase(),n=this.primaryCount(),r=this.secondaryCount(),a=this.getFilteredTags(),o=Math.max(gt()(this.getInstruction(n,r)).length,this.filter().length);return[m("div",{className:"Modal-body"},m("div",{className:"TagSelectionModal-form"},m("div",{className:"TagSelectionModal-form-input"},m("div",{className:"TagsInput FormControl "+(this.focused?"focus":""),onclick:function(){return t.$(".TagsInput input").focus()}},m("span",{className:"TagsInput-selected"},this.selected.map((function(e){return m("span",{className:"TagsInput-tag",onclick:function(){t.removeTag(e),t.onready()}},$(e))}))),m("input",{className:"FormControl",placeholder:gt()(this.getInstruction(n,r)),bidi:this.filter,style:{width:o+"ch"},onkeydown:this.navigator.navigate.bind(this.navigator),onfocus:function(){return t.focused=!0},onblur:function(){return t.focused=!1}}))),m("div",{className:"TagSelectionModal-form-submit App-primaryControl"},m(dt(),{type:"submit",className:"Button Button--primary",disabled:!this.meetsRequirements(n,r),icon:"fas fa-check"},p().translator.trans("flarum-tags.lib.tag_selection_modal.submit_button"))))),m("div",{className:"Modal-footer"},m("ul",{className:"TagSelectionModal-list SelectTagList"},a.map((function(n){return m("li",{"data-index":n.id(),className:D()({pinned:null!==n.position(),child:!!n.parent(),colored:!!n.color(),selected:t.selected.includes(n),active:t.indexTag===n}),style:{color:n.color()},onmouseover:function(){return t.indexTag=n},onclick:t.toggleTag.bind(t,n)},E(n),m("span",{className:"SelectTagListItem-name"},bt()(n.name(),e)),n.description()?m("span",{className:"SelectTagListItem-description"},n.description()):"")}))),this.attrs.limits.allowBypassing&&m("div",{className:"TagSelectionModal-controls"},m(St,{className:"Button",onclick:function(){return t.bypassReqs=!t.bypassReqs},isToggled:this.bypassReqs},p().translator.trans("flarum-tags.lib.tag_selection_modal.bypass_requirements"))))]},n.getFilteredTags=function(){var t=this,e=this.filter().toLowerCase(),n=this.primaryCount(),r=this.secondaryCount(),a=this.tags;return this.attrs.requireParentTag&&(a=a.filter((function(e){var n=e.parent();return null!==n&&(!1===n||t.selected.includes(n))}))),this.bypassReqs||(this.selected.length>=this.attrs.limits.max.total?a=a.filter((function(e){return t.selected.includes(e)})):(n>=this.attrs.limits.max.primary&&(a=a.filter((function(e){return!e.isPrimary()||t.selected.includes(e)}))),r>=this.attrs.limits.max.secondary&&(a=a.filter((function(e){return e.isPrimary()||t.selected.includes(e)}))))),e&&(a=a.filter((function(t){return t.name().substring(0,e.length).toLowerCase()===e}))),this.indexTag&&a.includes(this.indexTag)||(this.indexTag=a[0]),a},n.primaryCount=function(){return this.selected.filter((function(t){return t.isPrimary()})).length},n.secondaryCount=function(){return this.selected.filter((function(t){return!t.isPrimary()})).length},n.meetsRequirements=function(t,e){return!!(this.bypassReqs||this.attrs.allowResetting&&0===this.selected.length)||!(this.selected.length=this.attrs.limits.min.primary&&e>=this.attrs.limits.min.secondary},n.addTag=function(t){if(t&&this.attrs.canSelect(t)){if(this.attrs.onSelect&&this.attrs.onSelect(t,this.selected),this.attrs.requireParentTag){var e=t.parent();e&&!this.selected.includes(e)&&this.selected.push(e)}this.selected.includes(t)||this.selected.push(t)}},n.removeTag=function(t){var e=this.selected.indexOf(t);-1!==e&&(this.selected.splice(e,1),this.attrs.requireParentTag&&this.selected.filter((function(e){return e.parent()===t})).forEach(this.removeTag.bind(this)),this.attrs.onDeselect&&this.attrs.onDeselect(t,this.selected))},n.toggleTag=function(t){this.tags&&(this.selected.includes(t)?this.removeTag(t):this.addTag(t),this.filter()&&(this.filter(""),this.indexTag=this.tags[0]),this.onready())},n.getInstruction=function(t,e){if(this.bypassReqs)return"";if(t li")},n.getCurrentNumericIndex=function(){return this.indexTag?this.selectableItems().index(this.getItem(this.indexTag)):-1},n.getItem=function(t){return this.selectableItems().filter('[data-index="'+t.id()+'"]')},n.setIndex=function(t,e){var n=this.selectableItems(),r=n.parent();t<0?t=n.length-1:t>=n.length&&(t=0);var a=n.eq(t);if(this.indexTag=p().store.getById("tags",a.attr("data-index")),m.redraw(),e&&this.indexTag){var o,s=r.scrollTop(),i=r.offset().top,c=i+r.outerHeight(),l=a.offset().top,u=l+a.outerHeight();lc&&(o=s-c+u+parseInt(r.css("padding-bottom"),10)),void 0!==o&&r.stop(!0).animate({scrollTop:o},100)}},e}(_t()),Ct=function(t){function e(){return t.apply(this,arguments)||this}return v(e,t),e.initAttrs=function(e){var n;t.initAttrs.call(this,e);var r=e.discussion?a().translator.trans("flarum-tags.forum.choose_tags.edit_title",{title:m("em",null,e.discussion.title())}):a().translator.trans("flarum-tags.forum.choose_tags.title");e.className=D()(e.className,"TagDiscussionModal"),e.title=gt()(r),e.allowResetting=!!a().forum.attribute("canBypassTagCounts"),e.limits={allowBypassing:e.allowResetting,max:{primary:a().forum.attribute("minPrimaryTags"),secondary:a().forum.attribute("maxSecondaryTags")},min:{primary:a().forum.attribute("maxPrimaryTags"),secondary:a().forum.attribute("minSecondaryTags")}},e.requireParentTag=!0,e.selectableTags=function(){return vt(e.discussion)},null!=e.selectedTags||(e.selectedTags=(null==(n=e.discussion)?void 0:n.tags())||[]),e.canSelect=function(t){return t.canStartDiscussion()};var o=e.onsubmit||null;e.onsubmit=function(t){var n=e.discussion;n&&n.save({relationships:{tags:t}}).then((function(){a().current.matches(pt())&&a().current.get("stream").update(),m.redraw()})),o&&o(t)}},e}(It);function kt(){(0,x.extend)(ut(),"moderationControls",(function(t,e){e.canTag()&&t.add("tags",m(dt(),{icon:"fas fa-tag",onclick:function(){return app.modal.show(Ct,{discussion:e})}},app.translator.trans("flarum-tags.forum.discussion_controls.edit_tags_button")))}))}const Dt=flarum.core.compat["forum/components/DiscussionComposer"];var Et=n.n(Dt);function Ot(){(0,x.extend)(_().prototype,"newDiscussionAction",(function(t){var e=this.currentTag();if(e){var n=e.parent(),r=n?[n,e]:[e];t.then((function(t){return t.fields.tags=r}))}else app.composer.fields.tags=[]})),(0,x.extend)(Et().prototype,"oninit",(function(){app.tagList.load(["parent"]).then((function(){return m.redraw()}))})),Et().prototype.chooseTags=function(){var t=this;vt().length&&app.modal.show(Ct,{selectedTags:(this.composer.fields.tags||[]).slice(0),onsubmit:function(e){t.composer.fields.tags=e,t.$("textarea").focus()}})},(0,x.extend)(Et().prototype,"headerItems",(function(t){var e=this.composer.fields.tags||[],n=vt();t.add("tags",m("a",{className:D()(["DiscussionComposer-changeTags",!n.length&&"disabled"]),onclick:this.chooseTags.bind(this)},e.length?it(e):m("span",{className:"TagLabel untagged"},app.translator.trans("flarum-tags.forum.composer_discussion.choose_tags_link"))),10)})),(0,x.override)(Et().prototype,"onsubmit",(function(t){var e=this,n=this.composer.fields.tags||[],r=n.filter((function(t){return null!==t.position()&&!t.isChild()})),a=n.filter((function(t){return null===t.position()})),o=vt(),s=parseInt(app.forum.attribute("minPrimaryTags")),i=parseInt(app.forum.attribute("minSecondaryTags")),c=parseInt(app.forum.attribute("maxPrimaryTags")),l=parseInt(app.forum.attribute("maxSecondaryTags"));(!n.length&&0!==c&&0!==l||r.length{var r=n(75).default;function a(){"use strict";t.exports=a=function(){return e},t.exports.__esModule=!0,t.exports.default=t.exports;var e={},n=Object.prototype,o=n.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},c=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function m(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{m({},"")}catch(t){m=function(t,e,n){return t[e]=n}}function d(t,e,n,r){var a=e&&e.prototype instanceof h?e:h,o=Object.create(a.prototype),i=new I(r||[]);return s(o,"_invoke",{value:N(t,n,i)}),o}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=d;var p={};function h(){}function g(){}function v(){}var y={};m(y,c,(function(){return this}));var b=Object.getPrototypeOf,T=b&&b(b(C([])));T&&T!==n&&o.call(T,c)&&(y=T);var x=v.prototype=h.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){m(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function n(a,s,i,c){var l=f(t[a],t,s);if("throw"!==l.type){var u=l.arg,m=u.value;return m&&"object"==r(m)&&o.call(m,"__await")?e.resolve(m.__await).then((function(t){n("next",t,i,c)}),(function(t){n("throw",t,i,c)})):e.resolve(m).then((function(t){u.value=t,i(u)}),(function(t){return n("throw",t,i,c)}))}c(l.arg)}var a;s(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,a){n(t,r,e,a)}))}return a=a?a.then(o,o):o()}})}function N(t,e,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var s=n.delegate;if(s){var i=L(s,n);if(i){if(i===p)continue;return i}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=f(t,e,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function L(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,L(t,e),"throw"===e.method))return p;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=f(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,p;var a=r.arg;return a?a.done?(e[t.resultName]=a.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function C(t){if(t){var e=t[c];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n=0;--r){var a=this.tryEntries[r],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var i=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(i&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),S(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var a=r.arg;S(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:C(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}t.exports=a,t.exports.__esModule=!0,t.exports.default=t.exports},75:t=>{function e(n){return t.exports=e="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},t.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},507:(t,e,n)=>{var r=n(440)();t.exports=r;try{regeneratorRuntime=r}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},e={};function n(r){var a=e[r];if(void 0!==a)return a.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{extend:()=>a.l});var t=n(810),e={};for(const n in t)"default"!==n&&(e[n]=()=>t[n]);n.d(r,e);var a=n(930)})(),module.exports=r})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/tags/js/dist/forum.js.map b/extensions/tags/js/dist/forum.js.map index ae2ea2861..accc303b5 100644 --- a/extensions/tags/js/dist/forum.js.map +++ b/extensions/tags/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/tags/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/app']\"","webpack://@flarum/tags/./src/common/states/TagListState.ts","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@flarum/tags/./src/common/models/Tag.ts","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Page']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/tags/./src/common/helpers/tagIcon.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extract']\"","webpack://@flarum/tags/./src/common/helpers/tagLabel.js","webpack://@flarum/tags/./src/common/utils/sortTags.tsx","webpack://@flarum/tags/./src/forum/components/TagsPage.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/tags/./src/common/helpers/tagsLabel.js","webpack://@flarum/tags/./src/forum/components/DiscussionTaggedPost.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Separator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/tags/./src/forum/components/TagLinkButton.js","webpack://@flarum/tags/./src/forum/addTagList.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/tags/./src/forum/components/TagHero.js","webpack://@flarum/tags/./src/forum/addTagFilter.tsx","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionHero']\"","webpack://@flarum/tags/./src/forum/addTagLabels.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/tags/./src/forum/utils/getSelectableTags.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/tags/./src/forum/components/ToggleButton.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/tags/./src/common/components/TagSelectionModal.tsx","webpack://@flarum/tags/./src/forum/components/TagDiscussionModal.tsx","webpack://@flarum/tags/./src/forum/addTagControl.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@flarum/tags/./src/forum/addTagComposer.js","webpack://@flarum/tags/./src/common/compat.js","webpack://@flarum/tags/./src/forum/compat.js","webpack://@flarum/tags/external assign \"flarum.core\"","webpack://@flarum/tags/./src/forum/index.ts","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/regenerator/index.js","webpack://@flarum/tags/webpack/bootstrap","webpack://@flarum/tags/webpack/runtime/compat get default export","webpack://@flarum/tags/webpack/runtime/define property getters","webpack://@flarum/tags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/tags/webpack/runtime/make namespace object"],"sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\nimport type Tag from '../../common/models/Tag';\n\nexport default class TagListState {\n loadedIncludes = new Set();\n\n async load(includes: string[] = []): Promise {\n const unloadedIncludes = includes.filter((include) => !this.loadedIncludes.has(include));\n\n if (unloadedIncludes.length === 0) {\n return Promise.resolve(app.store.all('tags'));\n }\n\n return app.store.find('tags', { include: unloadedIncludes.join(',') }).then((val) => {\n unloadedIncludes.forEach((include) => this.loadedIncludes.add(include));\n return val;\n });\n }\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import computed from 'flarum/common/utils/computed';\nimport Model from 'flarum/common/Model';\nimport type Discussion from 'flarum/common/models/Discussion';\n\nexport default class Tag extends Model {\n name() {\n return Model.attribute('name').call(this);\n }\n slug() {\n return Model.attribute('slug').call(this);\n }\n description() {\n return Model.attribute('description').call(this);\n }\n\n color() {\n return Model.attribute('color').call(this);\n }\n backgroundUrl() {\n return Model.attribute('backgroundUrl').call(this);\n }\n backgroundMode() {\n return Model.attribute('backgroundMode').call(this);\n }\n icon() {\n return Model.attribute('icon').call(this);\n }\n\n position() {\n return Model.attribute('position').call(this);\n }\n parent() {\n return Model.hasOne('parent').call(this);\n }\n children() {\n return Model.hasMany('children').call(this);\n }\n defaultSort() {\n return Model.attribute('defaultSort').call(this);\n }\n isChild() {\n return Model.attribute('isChild').call(this);\n }\n isHidden() {\n return Model.attribute('isHidden').call(this);\n }\n\n discussionCount() {\n return Model.attribute('discussionCount').call(this);\n }\n lastPostedAt() {\n return Model.attribute('lastPostedAt', Model.transformDate).call(this);\n }\n lastPostedDiscussion() {\n return Model.hasOne('lastPostedDiscussion').call(this);\n }\n\n isRestricted() {\n return Model.attribute('isRestricted').call(this);\n }\n canStartDiscussion() {\n return Model.attribute('canStartDiscussion').call(this);\n }\n canAddToDiscussion() {\n return Model.attribute('canAddToDiscussion').call(this);\n }\n\n isPrimary() {\n return computed('position', 'parent', (position, parent) => position !== null && parent === false).call(this);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import classList from 'flarum/common/utils/classList';\n\nexport default function tagIcon(tag, attrs = {}, settings = {}) {\n const hasIcon = tag && tag.icon();\n const { useColor = true } = settings;\n\n attrs.className = classList([attrs.className, 'icon', hasIcon ? tag.icon() : 'TagIcon']);\n\n if (tag && useColor) {\n attrs.style = attrs.style || {};\n attrs.style['--color'] = tag.color();\n\n if (hasIcon) {\n attrs.style.color = tag.color();\n }\n } else if (!tag) {\n attrs.className += ' untagged';\n }\n\n return hasIcon ? : ;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extract'];","import extract from 'flarum/common/utils/extract';\nimport Link from 'flarum/common/components/Link';\nimport tagIcon from './tagIcon';\n\nexport default function tagLabel(tag, attrs = {}) {\n attrs.style = attrs.style || {};\n attrs.className = 'TagLabel ' + (attrs.className || '');\n\n const link = extract(attrs, 'link');\n const tagText = tag ? tag.name() : app.translator.trans('flarum-tags.lib.deleted_tag_text');\n\n if (tag) {\n const color = tag.color();\n if (color) {\n attrs.style['--tag-bg'] = color;\n attrs.className += ' colored';\n }\n\n if (link) {\n attrs.title = tag.description() || '';\n attrs.href = app.route('tag', { tags: tag.slug() });\n }\n\n if (tag.isChild()) {\n attrs.className += ' TagLabel--child';\n }\n } else {\n attrs.className += ' untagged';\n }\n\n return m(\n link ? Link : 'span',\n attrs,\n \n {tag && tag.icon() && tagIcon(tag, {}, { useColor: false })} {tagText}\n \n );\n}\n","import Tag from '../models/Tag';\n\nexport default function sortTags(tags: Tag[]) {\n return tags.slice(0).sort((a, b) => {\n const aPos = a.position();\n const bPos = b.position();\n\n // If they're both secondary tags, sort them by their discussions count,\n // descending.\n if (aPos === null && bPos === null) return b.discussionCount() - a.discussionCount();\n\n // If just one is a secondary tag, then the primary tag should\n // come first.\n if (bPos === null) return -1;\n if (aPos === null) return 1;\n\n // If we've made it this far, we know they're both primary tags. So we'll\n // need to see if they have parents.\n const aParent = a.parent();\n const bParent = b.parent();\n\n // If they both have the same parent, then their positions are local,\n // so we can compare them directly.\n if (aParent === bParent) return aPos - bPos;\n // If they are both child tags, then we will compare the positions of their\n // parents.\n else if (aParent && bParent) return aParent.position()! - bParent.position()!;\n // If we are comparing a child tag with its parent, then we let the parent\n // come first. If we are comparing an unrelated parent/child, then we\n // compare both of the parents.\n else if (aParent) return aParent === b ? 1 : aParent.position()! - bPos;\n else if (bParent) return bParent === a ? -1 : aPos - bParent.position()!;\n\n return 0;\n });\n}\n","import Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Link from 'flarum/common/components/Link';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport listItems from 'flarum/common/helpers/listItems';\nimport humanTime from 'flarum/common/helpers/humanTime';\n\nimport tagIcon from '../../common/helpers/tagIcon';\nimport tagLabel from '../../common/helpers/tagLabel';\nimport sortTags from '../../common/utils/sortTags';\n\nexport default class TagsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('tags', app.translator.trans('flarum-tags.forum.header.back_to_tags_tooltip'));\n\n this.tags = [];\n\n const preloaded = app.preloadedApiDocument();\n\n if (preloaded) {\n this.tags = sortTags(preloaded.filter((tag) => !tag.isChild()));\n return;\n }\n\n this.loading = true;\n\n app.tagList.load(['children', 'lastPostedDiscussion', 'parent']).then(() => {\n this.tags = sortTags(app.store.all('tags').filter((tag) => !tag.isChild()));\n\n this.loading = false;\n\n m.redraw();\n });\n }\n\n view() {\n if (this.loading) {\n return ;\n }\n\n const pinned = this.tags.filter((tag) => tag.position() !== null);\n const cloud = this.tags.filter((tag) => tag.position() === null);\n\n return (\n
          \n {IndexPage.prototype.hero()}\n
          \n \n\n
          \n
            \n {pinned.map((tag) => {\n const lastPostedDiscussion = tag.lastPostedDiscussion();\n const children = sortTags(tag.children() || []);\n\n return (\n
          • \n \n {tag.icon() && tagIcon(tag, {}, { useColor: false })}\n

            {tag.name()}

            \n

            {tag.description()}

            \n {children ? (\n
            \n {children.map((child) => [{child.name()}, ' '])}\n
            \n ) : (\n ''\n )}\n \n {lastPostedDiscussion ? (\n \n {lastPostedDiscussion.title()}\n {humanTime(lastPostedDiscussion.lastPostedAt())}\n \n ) : (\n \n )}\n
          • \n );\n })}\n
          \n\n {cloud.length ?
          {cloud.map((tag) => [tagLabel(tag, { link: true }), ' '])}
          : ''}\n
          \n
          \n
          \n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n app.setTitle(app.translator.trans('flarum-tags.forum.all_tags.meta_title_text'));\n app.setTitleCount(0);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import extract from 'flarum/common/utils/extract';\nimport tagLabel from './tagLabel';\nimport sortTags from '../utils/sortTags';\n\nexport default function tagsLabel(tags, attrs = {}) {\n const children = [];\n const link = extract(attrs, 'link');\n\n attrs.className = 'TagsLabel ' + (attrs.className || '');\n\n if (tags) {\n sortTags(tags).forEach((tag) => {\n if (tag || tags.length === 1) {\n children.push(tagLabel(tag, { link }));\n }\n });\n } else {\n children.push(tagLabel());\n }\n\n return {children};\n}\n","import EventPost from 'flarum/forum/components/EventPost';\nimport tagsLabel from '../../common/helpers/tagsLabel';\n\nexport default class DiscussionTaggedPost extends EventPost {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n const oldTags = attrs.post.content()[0];\n const newTags = attrs.post.content()[1];\n\n function diffTags(tags1, tags2) {\n return tags1.filter((tag) => tags2.indexOf(tag) === -1).map((id) => app.store.getById('tags', id));\n }\n\n attrs.tagsAdded = diffTags(newTags, oldTags);\n attrs.tagsRemoved = diffTags(oldTags, newTags);\n }\n\n icon() {\n return 'fas fa-tag';\n }\n\n descriptionKey() {\n if (this.attrs.tagsAdded.length) {\n if (this.attrs.tagsRemoved.length) {\n return 'flarum-tags.forum.post_stream.added_and_removed_tags_text';\n }\n\n return 'flarum-tags.forum.post_stream.added_tags_text';\n }\n\n return 'flarum-tags.forum.post_stream.removed_tags_text';\n }\n\n descriptionData() {\n const data = {};\n\n if (this.attrs.tagsAdded.length) {\n data.tagsAdded = app.translator.trans('flarum-tags.forum.post_stream.tags_text', {\n tags: tagsLabel(this.attrs.tagsAdded, { link: true }),\n count: this.attrs.tagsAdded.length,\n });\n }\n\n if (this.attrs.tagsRemoved.length) {\n data.tagsRemoved = app.translator.trans('flarum-tags.forum.post_stream.tags_text', {\n tags: tagsLabel(this.attrs.tagsRemoved, { link: true }),\n count: this.attrs.tagsRemoved.length,\n });\n }\n\n return data;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Separator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","import Link from 'flarum/common/components/Link';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport classList from 'flarum/common/utils/classList';\nimport tagIcon from '../../common/helpers/tagIcon';\n\nexport default class TagLinkButton extends LinkButton {\n view(vnode) {\n const tag = this.attrs.model;\n const active = this.constructor.isActive(this.attrs);\n const description = tag && tag.description();\n const className = classList(['TagLinkButton', 'hasIcon', this.attrs.className, tag.isChild() && 'child']);\n\n return (\n \n {tagIcon(tag, { className: 'Button-icon' })}\n {tag ? tag.name() : app.translator.trans('flarum-tags.forum.index.untagged_link')}\n \n );\n }\n\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n const tag = attrs.model;\n\n attrs.params.tags = tag ? tag.slug() : 'untagged';\n attrs.route = app.route('tag', attrs.params);\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Separator from 'flarum/common/components/Separator';\nimport LinkButton from 'flarum/common/components/LinkButton';\n\nimport TagLinkButton from './components/TagLinkButton';\nimport TagsPage from './components/TagsPage';\nimport sortTags from '../common/utils/sortTags';\n\nexport default function () {\n // Add a link to the tags page, as well as a list of all the tags,\n // to the index page's sidebar.\n extend(IndexPage.prototype, 'navItems', function (items) {\n items.add(\n 'tags',\n \n {app.translator.trans('flarum-tags.forum.index.tags_link')}\n ,\n -10\n );\n\n if (app.current.matches(TagsPage)) return;\n\n items.add('separator', Separator.component(), -12);\n\n const params = app.search.stickyParams();\n const tags = app.store.all('tags');\n const currentTag = this.currentTag();\n\n const addTag = (tag) => {\n let active = currentTag === tag;\n\n if (!active && currentTag) {\n active = currentTag.parent() === tag;\n }\n\n // tag.name() is passed here as children even though it isn't used directly\n // because when we need to get the active child in SelectDropdown, we need to\n // use its children to populate the dropdown. The problem here is that `view`\n // on TagLinkButton is only called AFTER SelectDropdown, so no children are available\n // for SelectDropdown to use at the time.\n items.add('tag' + tag.id(), TagLinkButton.component({ model: tag, params, active }, tag?.name()), -14);\n };\n\n sortTags(tags)\n .filter(\n (tag) => tag.position() !== null && (!tag.isChild() || (currentTag && (tag.parent() === currentTag || tag.parent() === currentTag.parent())))\n )\n .forEach(addTag);\n\n const more = tags.filter((tag) => tag.position() === null).sort((a, b) => b.discussionCount() - a.discussionCount());\n\n more.splice(0, 3).forEach(addTag);\n\n if (more.length) {\n items.add('moreTags', {app.translator.trans('flarum-tags.forum.index.more_link')}, -16);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport tagIcon from '../../common/helpers/tagIcon';\n\nexport default class TagHero extends Component {\n view() {\n const tag = this.attrs.model;\n const color = tag.color();\n\n return (\n
          \n
          \n
          \n

          \n {tag.icon() && tagIcon(tag, {}, { useColor: false })} {tag.name()}\n

          \n
          {tag.description()}
          \n
          \n
          \n
          \n );\n }\n}\n","import app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nimport classList from 'flarum/common/utils/classList';\n\nimport TagHero from './components/TagHero';\nimport Tag from '../common/models/Tag';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nconst findTag = (slug: string) => app.store.all('tags').find((tag) => tag.slug().localeCompare(slug, undefined, { sensitivity: 'base' }) === 0);\n\nexport default function () {\n IndexPage.prototype.currentTag = function () {\n if (this.currentActiveTag) {\n return this.currentActiveTag;\n }\n\n const slug = app.search.params().tags;\n let tag = null;\n\n if (slug) {\n tag = findTag(slug);\n }\n\n if ((slug && !tag) || (tag && !tag.isChild() && !tag.children())) {\n if (this.currentTagLoading) {\n return;\n }\n\n this.currentTagLoading = true;\n\n // Unlike the backend, no need to fetch parent.children because if we're on\n // a child tag page, then either:\n // - We loaded in that child tag (and its siblings) in the API document\n // - We first navigated to the current tag's parent, which would have loaded in the current tag's siblings.\n app.store\n .find('tags', slug, { include: 'children,children.parent,parent,state' })\n .then(() => {\n this.currentActiveTag = findTag(slug);\n\n m.redraw();\n })\n .finally(() => {\n this.currentTagLoading = false;\n });\n }\n\n if (tag) {\n this.currentActiveTag = tag;\n return this.currentActiveTag;\n }\n\n return;\n };\n\n // If currently viewing a tag, insert a tag hero at the top of the view.\n override(IndexPage.prototype, 'hero', function (original) {\n const tag = this.currentTag();\n\n if (tag) return ;\n\n return original();\n });\n\n extend(IndexPage.prototype, 'view', function (vdom: Mithril.Vnode) {\n const tag = this.currentTag();\n\n if (tag) vdom.attrs.className += ' IndexPage--tag' + tag.id();\n });\n\n extend(IndexPage.prototype, 'setTitle', function () {\n const tag = this.currentTag();\n\n if (tag) {\n app.setTitle(tag.name());\n }\n });\n\n // If currently viewing a tag, restyle the 'new discussion' button to use\n // the tag's color, and disable if the user isn't allowed to edit.\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n const tag = this.currentTag();\n\n if (tag) {\n const color = tag.color();\n const canStartDiscussion = tag.canStartDiscussion() || !app.session.user;\n const newDiscussion = items.get('newDiscussion') as Mithril.Vnode;\n\n if (color) {\n newDiscussion.attrs.className = classList([newDiscussion.attrs.className, 'Button--tagColored']);\n newDiscussion.attrs.style = { '--color': color };\n }\n\n newDiscussion.attrs.disabled = !canStartDiscussion;\n newDiscussion.children = app.translator.trans(\n canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'\n );\n }\n });\n\n // Add a parameter for the global search state to pass on to the\n // DiscussionListState that will let us filter discussions by tag.\n extend(GlobalSearchState.prototype, 'params', function (params) {\n params.tags = m.route.param('tags');\n });\n\n // Translate that parameter into a gambit appended to the search query.\n extend(DiscussionListState.prototype, 'requestParams', function (this: DiscussionListState, params) {\n if (typeof params.include === 'string') {\n params.include = [params.include];\n } else {\n params.include?.push('tags', 'tags.parent');\n }\n\n if (this.params.tags) {\n const filter = params.filter ?? {};\n filter.tag = this.params.tags;\n // TODO: replace this with a more robust system.\n const q = filter.q;\n if (q) {\n filter.q = `${q} tag:${this.params.tags}`;\n }\n params.filter = filter;\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionHero'];","import { extend } from 'flarum/common/extend';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport DiscussionHero from 'flarum/forum/components/DiscussionHero';\n\nimport tagsLabel from '../common/helpers/tagsLabel';\nimport sortTags from '../common/utils/sortTags';\n\nexport default function () {\n // Add tag labels to each discussion in the discussion list.\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const tags = this.attrs.discussion.tags();\n\n if (tags && tags.length) {\n items.add('tags', tagsLabel(tags), 10);\n }\n });\n\n // Restyle a discussion's hero to use its first tag's color.\n extend(DiscussionHero.prototype, 'view', function (view) {\n const tags = sortTags(this.attrs.discussion.tags());\n\n if (tags && tags.length) {\n const color = tags[0].color();\n if (color) {\n view.attrs.style = { '--hero-bg': color };\n view.attrs.className += ' DiscussionHero--colored';\n }\n }\n });\n\n // Add a list of a discussion's tags to the discussion hero, displayed\n // before the title. Put the title on its own line.\n extend(DiscussionHero.prototype, 'items', function (items) {\n const tags = this.attrs.discussion.tags();\n\n if (tags && tags.length) {\n items.add('tags', tagsLabel(tags, { link: true }), 5);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","export default function getSelectableTags(discussion) {\n let tags = app.store.all('tags');\n\n if (discussion) {\n tags = tags.filter((tag) => tag.canAddToDiscussion() || discussion.tags().indexOf(tag) !== -1);\n } else {\n tags = tags.filter((tag) => tag.canStartDiscussion());\n }\n\n return tags;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\n\n/**\n * @TODO move to core\n */\nexport default class ToggleButton extends Component {\n view(vnode) {\n const { className, isToggled, ...attrs } = this.attrs;\n const icon = isToggled ? 'far fa-check-circle' : 'far fa-circle';\n\n return (\n \n );\n }\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import app from 'flarum/common/app';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\nimport highlight from 'flarum/common/helpers/highlight';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Modal from 'flarum/common/components/Modal';\nimport Stream from 'flarum/common/utils/Stream';\n\nimport sortTags from '../utils/sortTags';\nimport tagLabel from '../helpers/tagLabel';\nimport tagIcon from '../helpers/tagIcon';\nimport ToggleButton from '../../forum/components/ToggleButton';\n\nimport type Tag from '../models/Tag';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\n\nexport interface ITagSelectionModalLimits {\n /** Whether to allow bypassing the limits set here. This will show a toggle button to bypass limits. */\n allowBypassing?: boolean;\n /** Maximum number of primary/secondary tags allowed. */\n max?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n /** Minimum number of primary/secondary tags to be selected. */\n min?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n}\n\nexport interface ITagSelectionModalAttrs extends IInternalModalAttrs {\n /** Custom modal className to use. */\n className?: string;\n /** Modal title, defaults to 'Choose Tags'. */\n title?: string;\n /** Initial tag selection value. */\n selectedTags?: Tag[];\n /** Limits set based on minimum and maximum number of primary/secondary tags that can be selected. */\n limits?: ITagSelectionModalLimits;\n /** Whether to allow resetting the value. Defaults to true. */\n allowResetting?: boolean;\n /** Whether to require the parent tag of a selected tag to be selected as well. */\n requireParentTag?: boolean;\n /** Filter tags that can be selected. */\n selectableTags?: (tags: Tag[]) => Tag[];\n /** Whether a tag can be selected. */\n canSelect: (tag: Tag) => boolean;\n /** Callback for when a tag is selected. */\n onSelect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when a tag is deselected. */\n onDeselect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when the selection is submitted. */\n onsubmit?: (selected: Tag[]) => void;\n}\n\nexport type ITagSelectionModalState = undefined;\n\nexport default class TagSelectionModal<\n CustomAttrs extends ITagSelectionModalAttrs = ITagSelectionModalAttrs,\n CustomState extends ITagSelectionModalState = ITagSelectionModalState\n> extends Modal {\n protected loading = true;\n protected tags!: Tag[];\n protected selected: Tag[] = [];\n protected bypassReqs: boolean = false;\n\n protected filter = Stream('');\n protected focused = false;\n protected navigator = new KeyboardNavigatable();\n protected indexTag?: Tag;\n\n static initAttrs(attrs: ITagSelectionModalAttrs) {\n super.initAttrs(attrs);\n\n // Default values for optional attributes.\n attrs.title ||= extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.title'));\n attrs.canSelect ||= () => true;\n attrs.allowResetting ??= true;\n attrs.limits = {\n min: {\n total: attrs.limits?.min?.total ?? -Infinity,\n primary: attrs.limits?.min?.primary ?? -Infinity,\n secondary: attrs.limits?.min?.secondary ?? -Infinity,\n },\n max: {\n total: attrs.limits?.max?.total ?? Infinity,\n primary: attrs.limits?.max?.primary ?? Infinity,\n secondary: attrs.limits?.max?.secondary ?? Infinity,\n },\n };\n\n // Prevent illogical limits from being provided.\n catchInvalidLimits(attrs.limits);\n }\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.navigator\n .onUp(() => this.setIndex(this.getCurrentNumericIndex() - 1, true))\n .onDown(() => this.setIndex(this.getCurrentNumericIndex() + 1, true))\n .onSelect(this.select.bind(this))\n .onRemove(() => this.selected.splice(this.selected.length - 1, 1));\n\n app.tagList.load(['parent']).then((tags) => {\n this.loading = false;\n\n if (this.attrs.selectableTags) {\n tags = this.attrs.selectableTags(tags);\n }\n\n this.tags = sortTags(tags);\n\n if (this.attrs.selectedTags) {\n this.attrs.selectedTags.map(this.addTag.bind(this));\n }\n\n this.indexTag = tags[0];\n\n m.redraw();\n });\n }\n\n className() {\n return classList('TagSelectionModal', this.attrs.className);\n }\n\n title() {\n return this.attrs.title;\n }\n\n content() {\n if (this.loading || !this.tags) {\n return ;\n }\n\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n const tags = this.getFilteredTags();\n\n const inputWidth = Math.max(extractText(this.getInstruction(primaryCount, secondaryCount)).length, this.filter().length);\n\n return [\n
          \n
          \n
          \n
          this.$('.TagsInput input').focus()}>\n \n {this.selected.map((tag) => (\n {\n this.removeTag(tag);\n this.onready();\n }}\n >\n {tagLabel(tag)}\n \n ))}\n \n (this.focused = true)}\n onblur={() => (this.focused = false)}\n />\n
          \n
          \n
          \n \n {app.translator.trans('flarum-tags.lib.tag_selection_modal.submit_button')}\n \n
          \n
          \n
          ,\n\n
          \n
            \n {tags.map((tag) => (\n (this.indexTag = tag)}\n onclick={this.toggleTag.bind(this, tag)}\n >\n {tagIcon(tag)}\n {highlight(tag.name(), filter)}\n {tag.description() ? {tag.description()} : ''}\n \n ))}\n
          \n {this.attrs.limits!.allowBypassing && (\n
          \n (this.bypassReqs = !this.bypassReqs)} isToggled={this.bypassReqs}>\n {app.translator.trans('flarum-tags.lib.tag_selection_modal.bypass_requirements')}\n \n
          \n )}\n
          ,\n ];\n }\n\n /**\n * Filters the available tags on every state change.\n */\n private getFilteredTags(): Tag[] {\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n let tags = this.tags;\n\n if (this.attrs.requireParentTag) {\n // Filter out all child tags whose parents have not been selected. This\n // makes it impossible to select a child if its parent hasn't been selected.\n tags = tags.filter((tag) => {\n const parent = tag.parent();\n return parent !== null && (parent === false || this.selected.includes(parent));\n });\n }\n\n if (!this.bypassReqs) {\n // If we reached the total maximum number of tags, we can't select anymore.\n if (this.selected.length >= this.attrs.limits!.max!.total!) {\n tags = tags.filter((tag) => this.selected.includes(tag));\n }\n // If the number of selected primary/secondary tags is at the maximum, then\n // we'll filter out all other tags of that type.\n else {\n if (primaryCount >= this.attrs.limits!.max!.primary!) {\n tags = tags.filter((tag) => !tag.isPrimary() || this.selected.includes(tag));\n }\n if (secondaryCount >= this.attrs.limits!.max!.secondary!) {\n tags = tags.filter((tag) => tag.isPrimary() || this.selected.includes(tag));\n }\n }\n }\n\n // If the user has entered text in the filter input, then filter by tags\n // whose name matches what they've entered.\n if (filter) {\n tags = tags.filter((tag) => tag.name().substring(0, filter.length).toLowerCase() === filter);\n }\n\n if (!this.indexTag || !tags.includes(this.indexTag)) this.indexTag = tags[0];\n\n return tags;\n }\n\n /**\n * Counts the number of selected primary tags.\n */\n protected primaryCount(): number {\n return this.selected.filter((tag) => tag.isPrimary()).length;\n }\n\n /**\n * Counts the number of selected secondary tags.\n */\n protected secondaryCount(): number {\n return this.selected.filter((tag) => !tag.isPrimary()).length;\n }\n\n /**\n * Validates the number of selected primary/secondary tags against the set min max limits.\n */\n protected meetsRequirements(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs || (this.attrs.allowResetting && this.selected.length === 0)) {\n return true;\n }\n\n if (this.selected.length < this.attrs.limits!.min!.total!) {\n return false;\n }\n\n return primaryCount >= this.attrs.limits!.min!.primary! && secondaryCount >= this.attrs.limits!.min!.secondary!;\n }\n\n /**\n * Add the given tag to the list of selected tags.\n */\n protected addTag(tag: Tag | undefined) {\n if (!tag || !this.attrs.canSelect(tag)) return;\n\n if (this.attrs.onSelect) {\n this.attrs.onSelect(tag, this.selected);\n }\n\n // If this tag has a parent, we'll also need to add the parent tag to the\n // selected list if it's not already in there.\n if (this.attrs.requireParentTag) {\n const parent = tag.parent();\n if (parent && !this.selected.includes(parent)) {\n this.selected.push(parent);\n }\n }\n\n if (!this.selected.includes(tag)) {\n this.selected.push(tag);\n }\n }\n\n /**\n * Remove the given tag from the list of selected tags.\n */\n protected removeTag(tag: Tag) {\n const index = this.selected.indexOf(tag);\n\n if (index !== -1) {\n this.selected.splice(index, 1);\n\n // Look through the list of selected tags for any tags which have the tag\n // we just removed as their parent. We'll need to remove them too.\n if (this.attrs.requireParentTag) {\n this.selected.filter((t) => t.parent() === tag).forEach(this.removeTag.bind(this));\n }\n\n if (this.attrs.onDeselect) {\n this.attrs.onDeselect(tag, this.selected);\n }\n }\n }\n\n protected toggleTag(tag: Tag) {\n // Won't happen, needed for type safety.\n if (!this.tags) return;\n\n if (this.selected.includes(tag)) {\n this.removeTag(tag);\n } else {\n this.addTag(tag);\n }\n\n if (this.filter()) {\n this.filter('');\n this.indexTag = this.tags[0];\n }\n\n this.onready();\n }\n\n /**\n * Gives human text instructions based on the current number of selected tags and set limits.\n */\n protected getInstruction(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs) {\n return '';\n }\n\n if (primaryCount < this.attrs.limits!.min!.primary!) {\n const remaining = this.attrs.limits!.min!.primary! - primaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_primary_placeholder', { count: remaining }));\n } else if (secondaryCount < this.attrs.limits!.min!.secondary!) {\n const remaining = this.attrs.limits!.min!.secondary! - secondaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_secondary_placeholder', { count: remaining }));\n } else if (this.selected.length < this.attrs.limits!.min!.total!) {\n const remaining = this.attrs.limits!.min!.total! - this.selected.length;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_tags_placeholder', { count: remaining }));\n }\n\n return '';\n }\n\n /**\n * Submit tag selection.\n */\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n if (this.attrs.onsubmit) this.attrs.onsubmit(this.selected);\n\n this.hide();\n }\n\n protected select(e: KeyboardEvent) {\n // Ctrl + Enter submits the selection, just Enter completes the current entry\n if (e.metaKey || e.ctrlKey || (this.indexTag && this.selected.includes(this.indexTag))) {\n if (this.selected.length) {\n // The DOM submit method doesn't emit a `submit event, so we\n // simulate a manual submission so our `onsubmit` logic is run.\n this.$('button[type=\"submit\"]').click();\n }\n } else if (this.indexTag) {\n this.getItem(this.indexTag)[0].dispatchEvent(new Event('click'));\n }\n }\n\n protected selectableItems() {\n return this.$('.TagSelectionModal-list > li');\n }\n\n protected getCurrentNumericIndex() {\n if (!this.indexTag) return -1;\n\n return this.selectableItems().index(this.getItem(this.indexTag));\n }\n\n protected getItem(selectedTag: Tag) {\n return this.selectableItems().filter(`[data-index=\"${selectedTag.id()}\"]`);\n }\n\n protected setIndex(index: number, scrollToItem: boolean) {\n const $items = this.selectableItems();\n const $dropdown = $items.parent();\n\n if (index < 0) {\n index = $items.length - 1;\n } else if (index >= $items.length) {\n index = 0;\n }\n\n const $item = $items.eq(index);\n\n this.indexTag = app.store.getById('tags', $item.attr('data-index')!);\n\n m.redraw();\n\n if (scrollToItem && this.indexTag) {\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\n/**\n * Catch invalid limits provided to the tag selection modal.\n */\nfunction catchInvalidLimits(limits: ITagSelectionModalLimits) {\n if (limits.min!.primary! > limits.max!.primary!) {\n throw new Error('The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.');\n }\n\n if (limits.min!.secondary! > limits.max!.secondary!) {\n throw new Error('The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.');\n }\n\n if (limits.min!.total! > limits.max!.primary! + limits.max!.secondary!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.');\n }\n\n if (limits.max!.total! < limits.min!.primary! + limits.min!.secondary!) {\n throw new Error('The maximum number of tags allowed cannot be less than the minimum number of primary and secondary tags allowed together.');\n }\n\n if (limits.min!.total! > limits.max!.total!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of tags allowed.');\n }\n}\n","import app from 'flarum/forum/app';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\n\nimport getSelectableTags from '../utils/getSelectableTags';\nimport TagSelectionModal, { ITagSelectionModalAttrs } from '../../common/components/TagSelectionModal';\n\nimport type Discussion from 'flarum/common/models/Discussion';\nimport type Tag from '../../common/models/Tag';\n\nexport interface TagDiscussionModalAttrs extends ITagSelectionModalAttrs {\n discussion?: Discussion;\n}\n\nexport default class TagDiscussionModal extends TagSelectionModal {\n static initAttrs(attrs: TagDiscussionModalAttrs) {\n super.initAttrs(attrs);\n\n const title = attrs.discussion\n ? app.translator.trans('flarum-tags.forum.choose_tags.edit_title', { title: {attrs.discussion.title()} })\n : app.translator.trans('flarum-tags.forum.choose_tags.title');\n\n attrs.className = classList(attrs.className, 'TagDiscussionModal');\n attrs.title = extractText(title);\n attrs.allowResetting = !!app.forum.attribute('canBypassTagCounts');\n attrs.limits = {\n allowBypassing: attrs.allowResetting,\n max: {\n primary: app.forum.attribute('minPrimaryTags'),\n secondary: app.forum.attribute('maxSecondaryTags'),\n },\n min: {\n primary: app.forum.attribute('maxPrimaryTags'),\n secondary: app.forum.attribute('minSecondaryTags'),\n },\n };\n attrs.requireParentTag = true;\n attrs.selectableTags = () => getSelectableTags(attrs.discussion);\n attrs.selectedTags ??= (attrs.discussion?.tags() as Tag[]) || [];\n attrs.canSelect = (tag) => tag.canStartDiscussion();\n\n const suppliedOnsubmit = attrs.onsubmit || null;\n\n // Save changes.\n attrs.onsubmit = function (tags) {\n const discussion = attrs.discussion;\n\n if (discussion) {\n discussion.save({ relationships: { tags } }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n }\n\n if (suppliedOnsubmit) suppliedOnsubmit(tags);\n };\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport Button from 'flarum/common/components/Button';\n\nimport TagDiscussionModal from './components/TagDiscussionModal';\n\nexport default function () {\n // Add a control allowing the discussion to be moved to another category.\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canTag()) {\n items.add(\n 'tags',\n \n );\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","import { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\nimport classList from 'flarum/common/utils/classList';\n\nimport TagDiscussionModal from './components/TagDiscussionModal';\nimport tagsLabel from '../common/helpers/tagsLabel';\nimport getSelectableTags from './utils/getSelectableTags';\n\nexport default function () {\n extend(IndexPage.prototype, 'newDiscussionAction', function (promise) {\n // From `addTagFilter\n const tag = this.currentTag();\n\n if (tag) {\n const parent = tag.parent();\n const tags = parent ? [parent, tag] : [tag];\n promise.then((composer) => (composer.fields.tags = tags));\n } else {\n app.composer.fields.tags = [];\n }\n });\n\n extend(DiscussionComposer.prototype, 'oninit', function () {\n app.tagList.load(['parent']).then(() => m.redraw());\n });\n\n // Add tag-selection abilities to the discussion composer.\n DiscussionComposer.prototype.chooseTags = function () {\n const selectableTags = getSelectableTags();\n\n if (!selectableTags.length) return;\n\n app.modal.show(TagDiscussionModal, {\n selectedTags: (this.composer.fields.tags || []).slice(0),\n onsubmit: (tags) => {\n this.composer.fields.tags = tags;\n this.$('textarea').focus();\n },\n });\n };\n\n // Add a tag-selection menu to the discussion composer's header, after the\n // title.\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n const tags = this.composer.fields.tags || [];\n const selectableTags = getSelectableTags();\n\n items.add(\n 'tags',\n \n {tags.length ? (\n tagsLabel(tags)\n ) : (\n {app.translator.trans('flarum-tags.forum.composer_discussion.choose_tags_link')}\n )}\n ,\n 10\n );\n });\n\n override(DiscussionComposer.prototype, 'onsubmit', function (original) {\n const chosenTags = this.composer.fields.tags || [];\n const chosenPrimaryTags = chosenTags.filter((tag) => tag.position() !== null && !tag.isChild());\n const chosenSecondaryTags = chosenTags.filter((tag) => tag.position() === null);\n const selectableTags = getSelectableTags();\n\n const minPrimaryTags = parseInt(app.forum.attribute('minPrimaryTags'));\n const minSecondaryTags = parseInt(app.forum.attribute('minSecondaryTags'));\n const maxPrimaryTags = parseInt(app.forum.attribute('maxPrimaryTags'));\n const maxSecondaryTags = parseInt(app.forum.attribute('maxSecondaryTags'));\n\n if (\n ((!chosenTags.length && maxPrimaryTags !== 0 && maxSecondaryTags !== 0) ||\n chosenPrimaryTags.length < minPrimaryTags ||\n chosenSecondaryTags.length < minSecondaryTags) &&\n selectableTags.length\n ) {\n app.modal.show(TagDiscussionModal, {\n selectedTags: chosenTags,\n onsubmit: (tags) => {\n this.composer.fields.tags = tags;\n original();\n },\n });\n } else {\n original();\n }\n });\n\n // Add the selected tags as data to submit to the server.\n extend(DiscussionComposer.prototype, 'data', function (data) {\n data.relationships = data.relationships || {};\n data.relationships.tags = this.composer.fields.tags;\n });\n}\n","import sortTags from './utils/sortTags';\nimport Tag from './models/Tag';\nimport tagsLabel from './helpers/tagsLabel';\nimport tagIcon from './helpers/tagIcon';\nimport tagLabel from './helpers/tagLabel';\nimport TagSelectionModal from './components/TagSelectionModal';\nimport TagListState from './states/TagListState';\n\nexport default {\n 'tags/utils/sortTags': sortTags,\n 'tags/models/Tag': Tag,\n 'tags/helpers/tagsLabel': tagsLabel,\n 'tags/helpers/tagIcon': tagIcon,\n 'tags/helpers/tagLabel': tagLabel,\n 'tags/components/TagSelectionModal': TagSelectionModal,\n 'tags/states/TagListState': TagListState,\n};\n","import compat from '../common/compat';\n\nimport addTagFilter from './addTagFilter';\nimport addTagControl from './addTagControl';\nimport TagHero from './components/TagHero';\nimport TagDiscussionModal from './components/TagDiscussionModal';\nimport TagsPage from './components/TagsPage';\nimport DiscussionTaggedPost from './components/DiscussionTaggedPost';\nimport TagLinkButton from './components/TagLinkButton';\nimport addTagList from './addTagList';\nimport addTagLabels from './addTagLabels';\nimport addTagComposer from './addTagComposer';\nimport getSelectableTags from './utils/getSelectableTags';\n\nexport default Object.assign(compat, {\n 'tags/addTagFilter': addTagFilter,\n 'tags/addTagControl': addTagControl,\n 'tags/components/TagHero': TagHero,\n 'tags/components/TagDiscussionModal': TagDiscussionModal,\n 'tags/components/TagsPage': TagsPage,\n 'tags/components/DiscussionTaggedPost': DiscussionTaggedPost,\n 'tags/components/TagLinkButton': TagLinkButton,\n 'tags/addTagList': addTagList,\n 'tags/addTagLabels': addTagLabels,\n 'tags/addTagComposer': addTagComposer,\n 'tags/utils/getSelectableTags': getSelectableTags,\n});\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport IndexPage from 'flarum/forum/components/IndexPage';\n\nimport TagListState from '../common/states/TagListState';\nimport Tag from '../common/models/Tag';\nimport TagsPage from './components/TagsPage';\nimport DiscussionTaggedPost from './components/DiscussionTaggedPost';\n\nimport addTagList from './addTagList';\nimport addTagFilter from './addTagFilter';\nimport addTagLabels from './addTagLabels';\nimport addTagControl from './addTagControl';\nimport addTagComposer from './addTagComposer';\n\napp.initializers.add('flarum-tags', function () {\n app.routes.tags = { path: '/tags', component: TagsPage };\n app.routes.tag = { path: '/t/:tags', component: IndexPage };\n\n app.route.tag = (tag: Tag) => app.route('tag', { tags: tag.slug() });\n\n app.postComponents.discussionTagged = DiscussionTaggedPost;\n\n app.store.models.tags = Tag;\n\n app.tagList = new TagListState();\n\n Discussion.prototype.tags = Model.hasMany('tags');\n Discussion.prototype.canTag = Model.attribute('canTag');\n\n addTagList();\n addTagFilter();\n addTagLabels();\n addTagControl();\n addTagComposer();\n});\n\n// Expose compat API\nimport tagsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, tagsCompat);\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\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};"],"names":["flarum","core","compat","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","TagListState","loadedIncludes","Set","load","fn","includes","unloadedIncludes","filter","include","has","length","app","join","val","forEach","add","self","this","args","arguments","apply","err","undefined","_setPrototypeOf","o","p","Object","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","prototype","create","constructor","Tag","name","Model","call","slug","description","color","backgroundUrl","backgroundMode","icon","position","parent","children","defaultSort","isChild","isHidden","discussionCount","lastPostedAt","lastPostedDiscussion","isRestricted","canStartDiscussion","canAddToDiscussion","isPrimary","computed","tagIcon","tag","attrs","settings","hasIcon","useColor","className","classList","style","tagLabel","link","extract","tagText","translator","trans","title","href","route","tags","m","Link","sortTags","slice","sort","a","b","aPos","bPos","aParent","bParent","TagsPage","oninit","vnode","history","push","preloaded","preloadedApiDocument","loading","tagList","store","all","redraw","view","pinned","cloud","IndexPage","listItems","toArray","map","child","discussion","lastPostNumber","humanTime","oncreate","setTitle","setTitleCount","Page","tagsLabel","DiscussionTaggedPost","initAttrs","oldTags","post","content","newTags","diffTags","tags1","tags2","indexOf","id","getById","tagsAdded","tagsRemoved","descriptionKey","descriptionData","data","count","EventPost","TagLinkButton","model","isActive","params","LinkButton","extend","items","current","matches","Separator","search","stickyParams","currentTag","addTag","active","component","more","splice","TagHero","Component","findTag","find","localeCompare","sensitivity","currentActiveTag","currentTagLoading","override","original","vdom","newDiscussion","get","disabled","GlobalSearchState","param","DiscussionListState","q","DiscussionListItem","DiscussionHero","getSelectableTags","ToggleButton","isToggled","source","excluded","i","target","sourceKeys","keys","TagSelectionModal","selected","bypassReqs","Stream","focused","navigator","KeyboardNavigatable","indexTag","extractText","canSelect","allowResetting","limits","min","total","primary","secondary","max","Infinity","Error","catchInvalidLimits","onUp","setIndex","getCurrentNumericIndex","onDown","onSelect","select","onRemove","selectableTags","selectedTags","toLowerCase","primaryCount","secondaryCount","getFilteredTags","inputWidth","Math","getInstruction","onclick","$","focus","removeTag","onready","placeholder","bidi","width","onkeydown","navigate","onfocus","onblur","type","meetsRequirements","colored","onmouseover","toggleTag","highlight","allowBypassing","requireParentTag","substring","index","t","onDeselect","remaining","onsubmit","e","preventDefault","hide","metaKey","ctrlKey","click","getItem","dispatchEvent","Event","selectableItems","selectedTag","scrollToItem","$items","$dropdown","$item","eq","attr","scrollTop","dropdownScroll","dropdownTop","offset","top","dropdownBottom","outerHeight","itemTop","itemBottom","parseInt","css","stop","animate","Modal","TagDiscussionModal","suppliedOnsubmit","save","relationships","DiscussionPage","update","DiscussionControls","canTag","modal","show","promise","composer","fields","DiscussionComposer","chooseTags","chosenTags","chosenPrimaryTags","chosenSecondaryTags","minPrimaryTags","forum","attribute","minSecondaryTags","maxPrimaryTags","maxSecondaryTags","assign","addTagFilter","addTagControl","addTagList","addTagLabels","addTagComposer","path","Discussion","tagsCompat","_typeof","require","_regeneratorRuntime","module","exports","__esModule","Op","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","object","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","d","definition","prop","r"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/tags/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/app']\"","webpack://@flarum/tags/./src/common/states/TagListState.ts","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@flarum/tags/./src/common/models/Tag.ts","webpack://@flarum/tags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Separator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/tags/./src/common/helpers/tagIcon.js","webpack://@flarum/tags/./src/forum/components/TagLinkButton.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Page']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extract']\"","webpack://@flarum/tags/./src/common/helpers/tagLabel.js","webpack://@flarum/tags/./src/common/utils/sortTags.tsx","webpack://@flarum/tags/./src/forum/components/TagsPage.js","webpack://@flarum/tags/./src/forum/addTagList.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/tags/./src/forum/components/TagHero.js","webpack://@flarum/tags/./src/forum/addTagFilter.tsx","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionHero']\"","webpack://@flarum/tags/./src/common/helpers/tagsLabel.js","webpack://@flarum/tags/./src/forum/addTagLabels.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/tags/./src/forum/utils/getSelectableTags.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/tags/./src/forum/components/ToggleButton.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/tags/./src/common/components/TagSelectionModal.tsx","webpack://@flarum/tags/./src/forum/components/TagDiscussionModal.tsx","webpack://@flarum/tags/./src/forum/addTagControl.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@flarum/tags/./src/forum/addTagComposer.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/tags/./src/forum/components/DiscussionTaggedPost.js","webpack://@flarum/tags/./src/forum/extend.ts","webpack://@flarum/tags/./src/common/compat.js","webpack://@flarum/tags/./src/forum/compat.js","webpack://@flarum/tags/external assign \"flarum.core\"","webpack://@flarum/tags/./src/forum/index.ts","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/regenerator/index.js","webpack://@flarum/tags/webpack/bootstrap","webpack://@flarum/tags/webpack/runtime/compat get default export","webpack://@flarum/tags/webpack/runtime/define property getters","webpack://@flarum/tags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/tags/webpack/runtime/make namespace object"],"sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\nimport type Tag from '../../common/models/Tag';\n\nexport default class TagListState {\n loadedIncludes = new Set();\n\n async load(includes: string[] = []): Promise {\n const unloadedIncludes = includes.filter((include) => !this.loadedIncludes.has(include));\n\n if (unloadedIncludes.length === 0) {\n return Promise.resolve(app.store.all('tags'));\n }\n\n return app.store.find('tags', { include: unloadedIncludes.join(',') }).then((val) => {\n unloadedIncludes.forEach((include) => this.loadedIncludes.add(include));\n return val;\n });\n }\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import computed from 'flarum/common/utils/computed';\nimport Model from 'flarum/common/Model';\nimport type Discussion from 'flarum/common/models/Discussion';\n\nexport default class Tag extends Model {\n name() {\n return Model.attribute('name').call(this);\n }\n slug() {\n return Model.attribute('slug').call(this);\n }\n description() {\n return Model.attribute('description').call(this);\n }\n\n color() {\n return Model.attribute('color').call(this);\n }\n backgroundUrl() {\n return Model.attribute('backgroundUrl').call(this);\n }\n backgroundMode() {\n return Model.attribute('backgroundMode').call(this);\n }\n icon() {\n return Model.attribute('icon').call(this);\n }\n\n position() {\n return Model.attribute('position').call(this);\n }\n parent() {\n return Model.hasOne('parent').call(this);\n }\n children() {\n return Model.hasMany('children').call(this);\n }\n defaultSort() {\n return Model.attribute('defaultSort').call(this);\n }\n isChild() {\n return Model.attribute('isChild').call(this);\n }\n isHidden() {\n return Model.attribute('isHidden').call(this);\n }\n\n discussionCount() {\n return Model.attribute('discussionCount').call(this);\n }\n lastPostedAt() {\n return Model.attribute('lastPostedAt', Model.transformDate).call(this);\n }\n lastPostedDiscussion() {\n return Model.hasOne('lastPostedDiscussion').call(this);\n }\n\n isRestricted() {\n return Model.attribute('isRestricted').call(this);\n }\n canStartDiscussion() {\n return Model.attribute('canStartDiscussion').call(this);\n }\n canAddToDiscussion() {\n return Model.attribute('canAddToDiscussion').call(this);\n }\n\n isPrimary() {\n return computed('position', 'parent', (position, parent) => position !== null && parent === false).call(this);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Separator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import classList from 'flarum/common/utils/classList';\n\nexport default function tagIcon(tag, attrs = {}, settings = {}) {\n const hasIcon = tag && tag.icon();\n const { useColor = true } = settings;\n\n attrs.className = classList([attrs.className, 'icon', hasIcon ? tag.icon() : 'TagIcon']);\n\n if (tag && useColor) {\n attrs.style = attrs.style || {};\n attrs.style['--color'] = tag.color();\n\n if (hasIcon) {\n attrs.style.color = tag.color();\n }\n } else if (!tag) {\n attrs.className += ' untagged';\n }\n\n return hasIcon ? : ;\n}\n","import Link from 'flarum/common/components/Link';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport classList from 'flarum/common/utils/classList';\nimport tagIcon from '../../common/helpers/tagIcon';\n\nexport default class TagLinkButton extends LinkButton {\n view(vnode) {\n const tag = this.attrs.model;\n const active = this.constructor.isActive(this.attrs);\n const description = tag && tag.description();\n const className = classList(['TagLinkButton', 'hasIcon', this.attrs.className, tag.isChild() && 'child']);\n\n return (\n \n {tagIcon(tag, { className: 'Button-icon' })}\n {tag ? tag.name() : app.translator.trans('flarum-tags.forum.index.untagged_link')}\n \n );\n }\n\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n const tag = attrs.model;\n\n attrs.params.tags = tag ? tag.slug() : 'untagged';\n attrs.route = app.route('tag', attrs.params);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extract'];","import extract from 'flarum/common/utils/extract';\nimport Link from 'flarum/common/components/Link';\nimport tagIcon from './tagIcon';\n\nexport default function tagLabel(tag, attrs = {}) {\n attrs.style = attrs.style || {};\n attrs.className = 'TagLabel ' + (attrs.className || '');\n\n const link = extract(attrs, 'link');\n const tagText = tag ? tag.name() : app.translator.trans('flarum-tags.lib.deleted_tag_text');\n\n if (tag) {\n const color = tag.color();\n if (color) {\n attrs.style['--tag-bg'] = color;\n attrs.className += ' colored';\n }\n\n if (link) {\n attrs.title = tag.description() || '';\n attrs.href = app.route('tag', { tags: tag.slug() });\n }\n\n if (tag.isChild()) {\n attrs.className += ' TagLabel--child';\n }\n } else {\n attrs.className += ' untagged';\n }\n\n return m(\n link ? Link : 'span',\n attrs,\n \n {tag && tag.icon() && tagIcon(tag, {}, { useColor: false })} {tagText}\n \n );\n}\n","import Tag from '../models/Tag';\n\nexport default function sortTags(tags: Tag[]) {\n return tags.slice(0).sort((a, b) => {\n const aPos = a.position();\n const bPos = b.position();\n\n // If they're both secondary tags, sort them by their discussions count,\n // descending.\n if (aPos === null && bPos === null) return b.discussionCount() - a.discussionCount();\n\n // If just one is a secondary tag, then the primary tag should\n // come first.\n if (bPos === null) return -1;\n if (aPos === null) return 1;\n\n // If we've made it this far, we know they're both primary tags. So we'll\n // need to see if they have parents.\n const aParent = a.parent();\n const bParent = b.parent();\n\n // If they both have the same parent, then their positions are local,\n // so we can compare them directly.\n if (aParent === bParent) return aPos - bPos;\n // If they are both child tags, then we will compare the positions of their\n // parents.\n else if (aParent && bParent) return aParent.position()! - bParent.position()!;\n // If we are comparing a child tag with its parent, then we let the parent\n // come first. If we are comparing an unrelated parent/child, then we\n // compare both of the parents.\n else if (aParent) return aParent === b ? 1 : aParent.position()! - bPos;\n else if (bParent) return bParent === a ? -1 : aPos - bParent.position()!;\n\n return 0;\n });\n}\n","import Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Link from 'flarum/common/components/Link';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport listItems from 'flarum/common/helpers/listItems';\nimport humanTime from 'flarum/common/helpers/humanTime';\n\nimport tagIcon from '../../common/helpers/tagIcon';\nimport tagLabel from '../../common/helpers/tagLabel';\nimport sortTags from '../../common/utils/sortTags';\n\nexport default class TagsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('tags', app.translator.trans('flarum-tags.forum.header.back_to_tags_tooltip'));\n\n this.tags = [];\n\n const preloaded = app.preloadedApiDocument();\n\n if (preloaded) {\n this.tags = sortTags(preloaded.filter((tag) => !tag.isChild()));\n return;\n }\n\n this.loading = true;\n\n app.tagList.load(['children', 'lastPostedDiscussion', 'parent']).then(() => {\n this.tags = sortTags(app.store.all('tags').filter((tag) => !tag.isChild()));\n\n this.loading = false;\n\n m.redraw();\n });\n }\n\n view() {\n if (this.loading) {\n return ;\n }\n\n const pinned = this.tags.filter((tag) => tag.position() !== null);\n const cloud = this.tags.filter((tag) => tag.position() === null);\n\n return (\n
          \n {IndexPage.prototype.hero()}\n
          \n \n\n
          \n
            \n {pinned.map((tag) => {\n const lastPostedDiscussion = tag.lastPostedDiscussion();\n const children = sortTags(tag.children() || []);\n\n return (\n
          • \n \n {tag.icon() && tagIcon(tag, {}, { useColor: false })}\n

            {tag.name()}

            \n

            {tag.description()}

            \n {children ? (\n
            \n {children.map((child) => [{child.name()}, ' '])}\n
            \n ) : (\n ''\n )}\n \n {lastPostedDiscussion ? (\n \n {lastPostedDiscussion.title()}\n {humanTime(lastPostedDiscussion.lastPostedAt())}\n \n ) : (\n \n )}\n
          • \n );\n })}\n
          \n\n {cloud.length ?
          {cloud.map((tag) => [tagLabel(tag, { link: true }), ' '])}
          : ''}\n
          \n
          \n
          \n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n app.setTitle(app.translator.trans('flarum-tags.forum.all_tags.meta_title_text'));\n app.setTitleCount(0);\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Separator from 'flarum/common/components/Separator';\nimport LinkButton from 'flarum/common/components/LinkButton';\n\nimport TagLinkButton from './components/TagLinkButton';\nimport TagsPage from './components/TagsPage';\nimport sortTags from '../common/utils/sortTags';\n\nexport default function () {\n // Add a link to the tags page, as well as a list of all the tags,\n // to the index page's sidebar.\n extend(IndexPage.prototype, 'navItems', function (items) {\n items.add(\n 'tags',\n \n {app.translator.trans('flarum-tags.forum.index.tags_link')}\n ,\n -10\n );\n\n if (app.current.matches(TagsPage)) return;\n\n items.add('separator', Separator.component(), -12);\n\n const params = app.search.stickyParams();\n const tags = app.store.all('tags');\n const currentTag = this.currentTag();\n\n const addTag = (tag) => {\n let active = currentTag === tag;\n\n if (!active && currentTag) {\n active = currentTag.parent() === tag;\n }\n\n // tag.name() is passed here as children even though it isn't used directly\n // because when we need to get the active child in SelectDropdown, we need to\n // use its children to populate the dropdown. The problem here is that `view`\n // on TagLinkButton is only called AFTER SelectDropdown, so no children are available\n // for SelectDropdown to use at the time.\n items.add('tag' + tag.id(), TagLinkButton.component({ model: tag, params, active }, tag?.name()), -14);\n };\n\n sortTags(tags)\n .filter(\n (tag) => tag.position() !== null && (!tag.isChild() || (currentTag && (tag.parent() === currentTag || tag.parent() === currentTag.parent())))\n )\n .forEach(addTag);\n\n const more = tags.filter((tag) => tag.position() === null).sort((a, b) => b.discussionCount() - a.discussionCount());\n\n more.splice(0, 3).forEach(addTag);\n\n if (more.length) {\n items.add('moreTags', {app.translator.trans('flarum-tags.forum.index.more_link')}, -16);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport tagIcon from '../../common/helpers/tagIcon';\n\nexport default class TagHero extends Component {\n view() {\n const tag = this.attrs.model;\n const color = tag.color();\n\n return (\n
          \n
          \n
          \n

          \n {tag.icon() && tagIcon(tag, {}, { useColor: false })} {tag.name()}\n

          \n
          {tag.description()}
          \n
          \n
          \n
          \n );\n }\n}\n","import app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nimport classList from 'flarum/common/utils/classList';\n\nimport TagHero from './components/TagHero';\nimport Tag from '../common/models/Tag';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nconst findTag = (slug: string) => app.store.all('tags').find((tag) => tag.slug().localeCompare(slug, undefined, { sensitivity: 'base' }) === 0);\n\nexport default function () {\n IndexPage.prototype.currentTag = function () {\n if (this.currentActiveTag) {\n return this.currentActiveTag;\n }\n\n const slug = app.search.params().tags;\n let tag = null;\n\n if (slug) {\n tag = findTag(slug);\n }\n\n if ((slug && !tag) || (tag && !tag.isChild() && !tag.children())) {\n if (this.currentTagLoading) {\n return;\n }\n\n this.currentTagLoading = true;\n\n // Unlike the backend, no need to fetch parent.children because if we're on\n // a child tag page, then either:\n // - We loaded in that child tag (and its siblings) in the API document\n // - We first navigated to the current tag's parent, which would have loaded in the current tag's siblings.\n app.store\n .find('tags', slug, { include: 'children,children.parent,parent,state' })\n .then(() => {\n this.currentActiveTag = findTag(slug);\n\n m.redraw();\n })\n .finally(() => {\n this.currentTagLoading = false;\n });\n }\n\n if (tag) {\n this.currentActiveTag = tag;\n return this.currentActiveTag;\n }\n\n return;\n };\n\n // If currently viewing a tag, insert a tag hero at the top of the view.\n override(IndexPage.prototype, 'hero', function (original) {\n const tag = this.currentTag();\n\n if (tag) return ;\n\n return original();\n });\n\n extend(IndexPage.prototype, 'view', function (vdom: Mithril.Vnode) {\n const tag = this.currentTag();\n\n if (tag) vdom.attrs.className += ' IndexPage--tag' + tag.id();\n });\n\n extend(IndexPage.prototype, 'setTitle', function () {\n const tag = this.currentTag();\n\n if (tag) {\n app.setTitle(tag.name());\n }\n });\n\n // If currently viewing a tag, restyle the 'new discussion' button to use\n // the tag's color, and disable if the user isn't allowed to edit.\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n const tag = this.currentTag();\n\n if (tag) {\n const color = tag.color();\n const canStartDiscussion = tag.canStartDiscussion() || !app.session.user;\n const newDiscussion = items.get('newDiscussion') as Mithril.Vnode;\n\n if (color) {\n newDiscussion.attrs.className = classList([newDiscussion.attrs.className, 'Button--tagColored']);\n newDiscussion.attrs.style = { '--color': color };\n }\n\n newDiscussion.attrs.disabled = !canStartDiscussion;\n newDiscussion.children = app.translator.trans(\n canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'\n );\n }\n });\n\n // Add a parameter for the global search state to pass on to the\n // DiscussionListState that will let us filter discussions by tag.\n extend(GlobalSearchState.prototype, 'params', function (params) {\n params.tags = m.route.param('tags');\n });\n\n // Translate that parameter into a gambit appended to the search query.\n extend(DiscussionListState.prototype, 'requestParams', function (this: DiscussionListState, params) {\n if (typeof params.include === 'string') {\n params.include = [params.include];\n } else {\n params.include?.push('tags', 'tags.parent');\n }\n\n if (this.params.tags) {\n const filter = params.filter ?? {};\n filter.tag = this.params.tags;\n // TODO: replace this with a more robust system.\n const q = filter.q;\n if (q) {\n filter.q = `${q} tag:${this.params.tags}`;\n }\n params.filter = filter;\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionHero'];","import extract from 'flarum/common/utils/extract';\nimport tagLabel from './tagLabel';\nimport sortTags from '../utils/sortTags';\n\nexport default function tagsLabel(tags, attrs = {}) {\n const children = [];\n const link = extract(attrs, 'link');\n\n attrs.className = 'TagsLabel ' + (attrs.className || '');\n\n if (tags) {\n sortTags(tags).forEach((tag) => {\n if (tag || tags.length === 1) {\n children.push(tagLabel(tag, { link }));\n }\n });\n } else {\n children.push(tagLabel());\n }\n\n return {children};\n}\n","import { extend } from 'flarum/common/extend';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport DiscussionHero from 'flarum/forum/components/DiscussionHero';\n\nimport tagsLabel from '../common/helpers/tagsLabel';\nimport sortTags from '../common/utils/sortTags';\n\nexport default function () {\n // Add tag labels to each discussion in the discussion list.\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const tags = this.attrs.discussion.tags();\n\n if (tags && tags.length) {\n items.add('tags', tagsLabel(tags), 10);\n }\n });\n\n // Restyle a discussion's hero to use its first tag's color.\n extend(DiscussionHero.prototype, 'view', function (view) {\n const tags = sortTags(this.attrs.discussion.tags());\n\n if (tags && tags.length) {\n const color = tags[0].color();\n if (color) {\n view.attrs.style = { '--hero-bg': color };\n view.attrs.className += ' DiscussionHero--colored';\n }\n }\n });\n\n // Add a list of a discussion's tags to the discussion hero, displayed\n // before the title. Put the title on its own line.\n extend(DiscussionHero.prototype, 'items', function (items) {\n const tags = this.attrs.discussion.tags();\n\n if (tags && tags.length) {\n items.add('tags', tagsLabel(tags, { link: true }), 5);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","export default function getSelectableTags(discussion) {\n let tags = app.store.all('tags');\n\n if (discussion) {\n tags = tags.filter((tag) => tag.canAddToDiscussion() || discussion.tags().indexOf(tag) !== -1);\n } else {\n tags = tags.filter((tag) => tag.canStartDiscussion());\n }\n\n return tags;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\n\n/**\n * @TODO move to core\n */\nexport default class ToggleButton extends Component {\n view(vnode) {\n const { className, isToggled, ...attrs } = this.attrs;\n const icon = isToggled ? 'far fa-check-circle' : 'far fa-circle';\n\n return (\n \n );\n }\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import app from 'flarum/common/app';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\nimport highlight from 'flarum/common/helpers/highlight';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Modal from 'flarum/common/components/Modal';\nimport Stream from 'flarum/common/utils/Stream';\n\nimport sortTags from '../utils/sortTags';\nimport tagLabel from '../helpers/tagLabel';\nimport tagIcon from '../helpers/tagIcon';\nimport ToggleButton from '../../forum/components/ToggleButton';\n\nimport type Tag from '../models/Tag';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\n\nexport interface ITagSelectionModalLimits {\n /** Whether to allow bypassing the limits set here. This will show a toggle button to bypass limits. */\n allowBypassing?: boolean;\n /** Maximum number of primary/secondary tags allowed. */\n max?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n /** Minimum number of primary/secondary tags to be selected. */\n min?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n}\n\nexport interface ITagSelectionModalAttrs extends IInternalModalAttrs {\n /** Custom modal className to use. */\n className?: string;\n /** Modal title, defaults to 'Choose Tags'. */\n title?: string;\n /** Initial tag selection value. */\n selectedTags?: Tag[];\n /** Limits set based on minimum and maximum number of primary/secondary tags that can be selected. */\n limits?: ITagSelectionModalLimits;\n /** Whether to allow resetting the value. Defaults to true. */\n allowResetting?: boolean;\n /** Whether to require the parent tag of a selected tag to be selected as well. */\n requireParentTag?: boolean;\n /** Filter tags that can be selected. */\n selectableTags?: (tags: Tag[]) => Tag[];\n /** Whether a tag can be selected. */\n canSelect: (tag: Tag) => boolean;\n /** Callback for when a tag is selected. */\n onSelect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when a tag is deselected. */\n onDeselect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when the selection is submitted. */\n onsubmit?: (selected: Tag[]) => void;\n}\n\nexport type ITagSelectionModalState = undefined;\n\nexport default class TagSelectionModal<\n CustomAttrs extends ITagSelectionModalAttrs = ITagSelectionModalAttrs,\n CustomState extends ITagSelectionModalState = ITagSelectionModalState\n> extends Modal {\n protected loading = true;\n protected tags!: Tag[];\n protected selected: Tag[] = [];\n protected bypassReqs: boolean = false;\n\n protected filter = Stream('');\n protected focused = false;\n protected navigator = new KeyboardNavigatable();\n protected indexTag?: Tag;\n\n static initAttrs(attrs: ITagSelectionModalAttrs) {\n super.initAttrs(attrs);\n\n // Default values for optional attributes.\n attrs.title ||= extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.title'));\n attrs.canSelect ||= () => true;\n attrs.allowResetting ??= true;\n attrs.limits = {\n min: {\n total: attrs.limits?.min?.total ?? -Infinity,\n primary: attrs.limits?.min?.primary ?? -Infinity,\n secondary: attrs.limits?.min?.secondary ?? -Infinity,\n },\n max: {\n total: attrs.limits?.max?.total ?? Infinity,\n primary: attrs.limits?.max?.primary ?? Infinity,\n secondary: attrs.limits?.max?.secondary ?? Infinity,\n },\n };\n\n // Prevent illogical limits from being provided.\n catchInvalidLimits(attrs.limits);\n }\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.navigator\n .onUp(() => this.setIndex(this.getCurrentNumericIndex() - 1, true))\n .onDown(() => this.setIndex(this.getCurrentNumericIndex() + 1, true))\n .onSelect(this.select.bind(this))\n .onRemove(() => this.selected.splice(this.selected.length - 1, 1));\n\n app.tagList.load(['parent']).then((tags) => {\n this.loading = false;\n\n if (this.attrs.selectableTags) {\n tags = this.attrs.selectableTags(tags);\n }\n\n this.tags = sortTags(tags);\n\n if (this.attrs.selectedTags) {\n this.attrs.selectedTags.map(this.addTag.bind(this));\n }\n\n this.indexTag = tags[0];\n\n m.redraw();\n });\n }\n\n className() {\n return classList('TagSelectionModal', this.attrs.className);\n }\n\n title() {\n return this.attrs.title;\n }\n\n content() {\n if (this.loading || !this.tags) {\n return ;\n }\n\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n const tags = this.getFilteredTags();\n\n const inputWidth = Math.max(extractText(this.getInstruction(primaryCount, secondaryCount)).length, this.filter().length);\n\n return [\n
          \n
          \n
          \n
          this.$('.TagsInput input').focus()}>\n \n {this.selected.map((tag) => (\n {\n this.removeTag(tag);\n this.onready();\n }}\n >\n {tagLabel(tag)}\n \n ))}\n \n (this.focused = true)}\n onblur={() => (this.focused = false)}\n />\n
          \n
          \n
          \n \n {app.translator.trans('flarum-tags.lib.tag_selection_modal.submit_button')}\n \n
          \n
          \n
          ,\n\n
          \n
            \n {tags.map((tag) => (\n (this.indexTag = tag)}\n onclick={this.toggleTag.bind(this, tag)}\n >\n {tagIcon(tag)}\n {highlight(tag.name(), filter)}\n {tag.description() ? {tag.description()} : ''}\n \n ))}\n
          \n {this.attrs.limits!.allowBypassing && (\n
          \n (this.bypassReqs = !this.bypassReqs)} isToggled={this.bypassReqs}>\n {app.translator.trans('flarum-tags.lib.tag_selection_modal.bypass_requirements')}\n \n
          \n )}\n
          ,\n ];\n }\n\n /**\n * Filters the available tags on every state change.\n */\n private getFilteredTags(): Tag[] {\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n let tags = this.tags;\n\n if (this.attrs.requireParentTag) {\n // Filter out all child tags whose parents have not been selected. This\n // makes it impossible to select a child if its parent hasn't been selected.\n tags = tags.filter((tag) => {\n const parent = tag.parent();\n return parent !== null && (parent === false || this.selected.includes(parent));\n });\n }\n\n if (!this.bypassReqs) {\n // If we reached the total maximum number of tags, we can't select anymore.\n if (this.selected.length >= this.attrs.limits!.max!.total!) {\n tags = tags.filter((tag) => this.selected.includes(tag));\n }\n // If the number of selected primary/secondary tags is at the maximum, then\n // we'll filter out all other tags of that type.\n else {\n if (primaryCount >= this.attrs.limits!.max!.primary!) {\n tags = tags.filter((tag) => !tag.isPrimary() || this.selected.includes(tag));\n }\n if (secondaryCount >= this.attrs.limits!.max!.secondary!) {\n tags = tags.filter((tag) => tag.isPrimary() || this.selected.includes(tag));\n }\n }\n }\n\n // If the user has entered text in the filter input, then filter by tags\n // whose name matches what they've entered.\n if (filter) {\n tags = tags.filter((tag) => tag.name().substring(0, filter.length).toLowerCase() === filter);\n }\n\n if (!this.indexTag || !tags.includes(this.indexTag)) this.indexTag = tags[0];\n\n return tags;\n }\n\n /**\n * Counts the number of selected primary tags.\n */\n protected primaryCount(): number {\n return this.selected.filter((tag) => tag.isPrimary()).length;\n }\n\n /**\n * Counts the number of selected secondary tags.\n */\n protected secondaryCount(): number {\n return this.selected.filter((tag) => !tag.isPrimary()).length;\n }\n\n /**\n * Validates the number of selected primary/secondary tags against the set min max limits.\n */\n protected meetsRequirements(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs || (this.attrs.allowResetting && this.selected.length === 0)) {\n return true;\n }\n\n if (this.selected.length < this.attrs.limits!.min!.total!) {\n return false;\n }\n\n return primaryCount >= this.attrs.limits!.min!.primary! && secondaryCount >= this.attrs.limits!.min!.secondary!;\n }\n\n /**\n * Add the given tag to the list of selected tags.\n */\n protected addTag(tag: Tag | undefined) {\n if (!tag || !this.attrs.canSelect(tag)) return;\n\n if (this.attrs.onSelect) {\n this.attrs.onSelect(tag, this.selected);\n }\n\n // If this tag has a parent, we'll also need to add the parent tag to the\n // selected list if it's not already in there.\n if (this.attrs.requireParentTag) {\n const parent = tag.parent();\n if (parent && !this.selected.includes(parent)) {\n this.selected.push(parent);\n }\n }\n\n if (!this.selected.includes(tag)) {\n this.selected.push(tag);\n }\n }\n\n /**\n * Remove the given tag from the list of selected tags.\n */\n protected removeTag(tag: Tag) {\n const index = this.selected.indexOf(tag);\n\n if (index !== -1) {\n this.selected.splice(index, 1);\n\n // Look through the list of selected tags for any tags which have the tag\n // we just removed as their parent. We'll need to remove them too.\n if (this.attrs.requireParentTag) {\n this.selected.filter((t) => t.parent() === tag).forEach(this.removeTag.bind(this));\n }\n\n if (this.attrs.onDeselect) {\n this.attrs.onDeselect(tag, this.selected);\n }\n }\n }\n\n protected toggleTag(tag: Tag) {\n // Won't happen, needed for type safety.\n if (!this.tags) return;\n\n if (this.selected.includes(tag)) {\n this.removeTag(tag);\n } else {\n this.addTag(tag);\n }\n\n if (this.filter()) {\n this.filter('');\n this.indexTag = this.tags[0];\n }\n\n this.onready();\n }\n\n /**\n * Gives human text instructions based on the current number of selected tags and set limits.\n */\n protected getInstruction(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs) {\n return '';\n }\n\n if (primaryCount < this.attrs.limits!.min!.primary!) {\n const remaining = this.attrs.limits!.min!.primary! - primaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_primary_placeholder', { count: remaining }));\n } else if (secondaryCount < this.attrs.limits!.min!.secondary!) {\n const remaining = this.attrs.limits!.min!.secondary! - secondaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_secondary_placeholder', { count: remaining }));\n } else if (this.selected.length < this.attrs.limits!.min!.total!) {\n const remaining = this.attrs.limits!.min!.total! - this.selected.length;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_tags_placeholder', { count: remaining }));\n }\n\n return '';\n }\n\n /**\n * Submit tag selection.\n */\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n if (this.attrs.onsubmit) this.attrs.onsubmit(this.selected);\n\n this.hide();\n }\n\n protected select(e: KeyboardEvent) {\n // Ctrl + Enter submits the selection, just Enter completes the current entry\n if (e.metaKey || e.ctrlKey || (this.indexTag && this.selected.includes(this.indexTag))) {\n if (this.selected.length) {\n // The DOM submit method doesn't emit a `submit event, so we\n // simulate a manual submission so our `onsubmit` logic is run.\n this.$('button[type=\"submit\"]').click();\n }\n } else if (this.indexTag) {\n this.getItem(this.indexTag)[0].dispatchEvent(new Event('click'));\n }\n }\n\n protected selectableItems() {\n return this.$('.TagSelectionModal-list > li');\n }\n\n protected getCurrentNumericIndex() {\n if (!this.indexTag) return -1;\n\n return this.selectableItems().index(this.getItem(this.indexTag));\n }\n\n protected getItem(selectedTag: Tag) {\n return this.selectableItems().filter(`[data-index=\"${selectedTag.id()}\"]`);\n }\n\n protected setIndex(index: number, scrollToItem: boolean) {\n const $items = this.selectableItems();\n const $dropdown = $items.parent();\n\n if (index < 0) {\n index = $items.length - 1;\n } else if (index >= $items.length) {\n index = 0;\n }\n\n const $item = $items.eq(index);\n\n this.indexTag = app.store.getById('tags', $item.attr('data-index')!);\n\n m.redraw();\n\n if (scrollToItem && this.indexTag) {\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\n/**\n * Catch invalid limits provided to the tag selection modal.\n */\nfunction catchInvalidLimits(limits: ITagSelectionModalLimits) {\n if (limits.min!.primary! > limits.max!.primary!) {\n throw new Error('The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.');\n }\n\n if (limits.min!.secondary! > limits.max!.secondary!) {\n throw new Error('The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.');\n }\n\n if (limits.min!.total! > limits.max!.primary! + limits.max!.secondary!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.');\n }\n\n if (limits.max!.total! < limits.min!.primary! + limits.min!.secondary!) {\n throw new Error('The maximum number of tags allowed cannot be less than the minimum number of primary and secondary tags allowed together.');\n }\n\n if (limits.min!.total! > limits.max!.total!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of tags allowed.');\n }\n}\n","import app from 'flarum/forum/app';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\n\nimport getSelectableTags from '../utils/getSelectableTags';\nimport TagSelectionModal, { ITagSelectionModalAttrs } from '../../common/components/TagSelectionModal';\n\nimport type Discussion from 'flarum/common/models/Discussion';\nimport type Tag from '../../common/models/Tag';\n\nexport interface TagDiscussionModalAttrs extends ITagSelectionModalAttrs {\n discussion?: Discussion;\n}\n\nexport default class TagDiscussionModal extends TagSelectionModal {\n static initAttrs(attrs: TagDiscussionModalAttrs) {\n super.initAttrs(attrs);\n\n const title = attrs.discussion\n ? app.translator.trans('flarum-tags.forum.choose_tags.edit_title', { title: {attrs.discussion.title()} })\n : app.translator.trans('flarum-tags.forum.choose_tags.title');\n\n attrs.className = classList(attrs.className, 'TagDiscussionModal');\n attrs.title = extractText(title);\n attrs.allowResetting = !!app.forum.attribute('canBypassTagCounts');\n attrs.limits = {\n allowBypassing: attrs.allowResetting,\n max: {\n primary: app.forum.attribute('minPrimaryTags'),\n secondary: app.forum.attribute('maxSecondaryTags'),\n },\n min: {\n primary: app.forum.attribute('maxPrimaryTags'),\n secondary: app.forum.attribute('minSecondaryTags'),\n },\n };\n attrs.requireParentTag = true;\n attrs.selectableTags = () => getSelectableTags(attrs.discussion);\n attrs.selectedTags ??= (attrs.discussion?.tags() as Tag[]) || [];\n attrs.canSelect = (tag) => tag.canStartDiscussion();\n\n const suppliedOnsubmit = attrs.onsubmit || null;\n\n // Save changes.\n attrs.onsubmit = function (tags) {\n const discussion = attrs.discussion;\n\n if (discussion) {\n discussion.save({ relationships: { tags } }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n }\n\n if (suppliedOnsubmit) suppliedOnsubmit(tags);\n };\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport Button from 'flarum/common/components/Button';\n\nimport TagDiscussionModal from './components/TagDiscussionModal';\n\nexport default function () {\n // Add a control allowing the discussion to be moved to another category.\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canTag()) {\n items.add(\n 'tags',\n \n );\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","import { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\nimport classList from 'flarum/common/utils/classList';\n\nimport TagDiscussionModal from './components/TagDiscussionModal';\nimport tagsLabel from '../common/helpers/tagsLabel';\nimport getSelectableTags from './utils/getSelectableTags';\n\nexport default function () {\n extend(IndexPage.prototype, 'newDiscussionAction', function (promise) {\n // From `addTagFilter\n const tag = this.currentTag();\n\n if (tag) {\n const parent = tag.parent();\n const tags = parent ? [parent, tag] : [tag];\n promise.then((composer) => (composer.fields.tags = tags));\n } else {\n app.composer.fields.tags = [];\n }\n });\n\n extend(DiscussionComposer.prototype, 'oninit', function () {\n app.tagList.load(['parent']).then(() => m.redraw());\n });\n\n // Add tag-selection abilities to the discussion composer.\n DiscussionComposer.prototype.chooseTags = function () {\n const selectableTags = getSelectableTags();\n\n if (!selectableTags.length) return;\n\n app.modal.show(TagDiscussionModal, {\n selectedTags: (this.composer.fields.tags || []).slice(0),\n onsubmit: (tags) => {\n this.composer.fields.tags = tags;\n this.$('textarea').focus();\n },\n });\n };\n\n // Add a tag-selection menu to the discussion composer's header, after the\n // title.\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n const tags = this.composer.fields.tags || [];\n const selectableTags = getSelectableTags();\n\n items.add(\n 'tags',\n \n {tags.length ? (\n tagsLabel(tags)\n ) : (\n {app.translator.trans('flarum-tags.forum.composer_discussion.choose_tags_link')}\n )}\n ,\n 10\n );\n });\n\n override(DiscussionComposer.prototype, 'onsubmit', function (original) {\n const chosenTags = this.composer.fields.tags || [];\n const chosenPrimaryTags = chosenTags.filter((tag) => tag.position() !== null && !tag.isChild());\n const chosenSecondaryTags = chosenTags.filter((tag) => tag.position() === null);\n const selectableTags = getSelectableTags();\n\n const minPrimaryTags = parseInt(app.forum.attribute('minPrimaryTags'));\n const minSecondaryTags = parseInt(app.forum.attribute('minSecondaryTags'));\n const maxPrimaryTags = parseInt(app.forum.attribute('maxPrimaryTags'));\n const maxSecondaryTags = parseInt(app.forum.attribute('maxSecondaryTags'));\n\n if (\n ((!chosenTags.length && maxPrimaryTags !== 0 && maxSecondaryTags !== 0) ||\n chosenPrimaryTags.length < minPrimaryTags ||\n chosenSecondaryTags.length < minSecondaryTags) &&\n selectableTags.length\n ) {\n app.modal.show(TagDiscussionModal, {\n selectedTags: chosenTags,\n onsubmit: (tags) => {\n this.composer.fields.tags = tags;\n original();\n },\n });\n } else {\n original();\n }\n });\n\n // Add the selected tags as data to submit to the server.\n extend(DiscussionComposer.prototype, 'data', function (data) {\n data.relationships = data.relationships || {};\n data.relationships.tags = this.composer.fields.tags;\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\nimport tagsLabel from '../../common/helpers/tagsLabel';\n\nexport default class DiscussionTaggedPost extends EventPost {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n const oldTags = attrs.post.content()[0];\n const newTags = attrs.post.content()[1];\n\n function diffTags(tags1, tags2) {\n return tags1.filter((tag) => tags2.indexOf(tag) === -1).map((id) => app.store.getById('tags', id));\n }\n\n attrs.tagsAdded = diffTags(newTags, oldTags);\n attrs.tagsRemoved = diffTags(oldTags, newTags);\n }\n\n icon() {\n return 'fas fa-tag';\n }\n\n descriptionKey() {\n if (this.attrs.tagsAdded.length) {\n if (this.attrs.tagsRemoved.length) {\n return 'flarum-tags.forum.post_stream.added_and_removed_tags_text';\n }\n\n return 'flarum-tags.forum.post_stream.added_tags_text';\n }\n\n return 'flarum-tags.forum.post_stream.removed_tags_text';\n }\n\n descriptionData() {\n const data = {};\n\n if (this.attrs.tagsAdded.length) {\n data.tagsAdded = app.translator.trans('flarum-tags.forum.post_stream.tags_text', {\n tags: tagsLabel(this.attrs.tagsAdded, { link: true }),\n count: this.attrs.tagsAdded.length,\n });\n }\n\n if (this.attrs.tagsRemoved.length) {\n data.tagsRemoved = app.translator.trans('flarum-tags.forum.post_stream.tags_text', {\n tags: tagsLabel(this.attrs.tagsRemoved, { link: true }),\n count: this.attrs.tagsRemoved.length,\n });\n }\n\n return data;\n }\n}\n","import app from 'flarum/forum/app';\nimport Extend from 'flarum/common/extenders';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionTaggedPost from './components/DiscussionTaggedPost';\nimport TagsPage from './components/TagsPage';\n\nexport default [\n new Extend.Routes()\n .add('tags', '/tags', TagsPage)\n .add('tag', '/t/:tags', IndexPage)\n .helper('tag', (tag) => app.route('tag', { tags: tag.slug() })),\n\n new Extend.PostTypes().add('discussionTagged', DiscussionTaggedPost),\n];\n","import sortTags from './utils/sortTags';\nimport Tag from './models/Tag';\nimport tagsLabel from './helpers/tagsLabel';\nimport tagIcon from './helpers/tagIcon';\nimport tagLabel from './helpers/tagLabel';\nimport TagSelectionModal from './components/TagSelectionModal';\nimport TagListState from './states/TagListState';\n\nexport default {\n 'tags/utils/sortTags': sortTags,\n 'tags/models/Tag': Tag,\n 'tags/helpers/tagsLabel': tagsLabel,\n 'tags/helpers/tagIcon': tagIcon,\n 'tags/helpers/tagLabel': tagLabel,\n 'tags/components/TagSelectionModal': TagSelectionModal,\n 'tags/states/TagListState': TagListState,\n};\n","import compat from '../common/compat';\n\nimport addTagFilter from './addTagFilter';\nimport addTagControl from './addTagControl';\nimport TagHero from './components/TagHero';\nimport TagDiscussionModal from './components/TagDiscussionModal';\nimport TagsPage from './components/TagsPage';\nimport DiscussionTaggedPost from './components/DiscussionTaggedPost';\nimport TagLinkButton from './components/TagLinkButton';\nimport addTagList from './addTagList';\nimport addTagLabels from './addTagLabels';\nimport addTagComposer from './addTagComposer';\nimport getSelectableTags from './utils/getSelectableTags';\n\nexport default Object.assign(compat, {\n 'tags/addTagFilter': addTagFilter,\n 'tags/addTagControl': addTagControl,\n 'tags/components/TagHero': TagHero,\n 'tags/components/TagDiscussionModal': TagDiscussionModal,\n 'tags/components/TagsPage': TagsPage,\n 'tags/components/DiscussionTaggedPost': DiscussionTaggedPost,\n 'tags/components/TagLinkButton': TagLinkButton,\n 'tags/addTagList': addTagList,\n 'tags/addTagLabels': addTagLabels,\n 'tags/addTagComposer': addTagComposer,\n 'tags/utils/getSelectableTags': getSelectableTags,\n});\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\n\nimport TagListState from '../common/states/TagListState';\nimport Tag from '../common/models/Tag';\n\nimport addTagList from './addTagList';\nimport addTagFilter from './addTagFilter';\nimport addTagLabels from './addTagLabels';\nimport addTagControl from './addTagControl';\nimport addTagComposer from './addTagComposer';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-tags', function () {\n app.store.models.tags = Tag;\n\n app.tagList = new TagListState();\n\n Discussion.prototype.tags = Model.hasMany('tags');\n Discussion.prototype.canTag = Model.attribute('canTag');\n\n addTagList();\n addTagFilter();\n addTagLabels();\n addTagControl();\n addTagComposer();\n});\n\n// Expose compat API\nimport tagsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, tagsCompat);\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\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};"],"names":["flarum","core","compat","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","TagListState","loadedIncludes","Set","load","fn","includes","unloadedIncludes","filter","include","has","length","app","join","val","forEach","add","self","this","args","arguments","apply","err","undefined","_setPrototypeOf","o","p","Object","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","prototype","create","constructor","Tag","name","Model","call","slug","description","color","backgroundUrl","backgroundMode","icon","position","parent","children","defaultSort","isChild","isHidden","discussionCount","lastPostedAt","lastPostedDiscussion","isRestricted","canStartDiscussion","canAddToDiscussion","isPrimary","computed","tagIcon","tag","attrs","settings","hasIcon","useColor","className","classList","style","TagLinkButton","view","vnode","model","isActive","href","route","title","translator","trans","initAttrs","params","tags","LinkButton","tagLabel","link","extract","tagText","m","Link","sortTags","slice","sort","a","b","aPos","bPos","aParent","bParent","TagsPage","oninit","history","push","preloaded","preloadedApiDocument","loading","tagList","store","all","redraw","pinned","cloud","IndexPage","listItems","toArray","map","child","discussion","lastPostNumber","humanTime","oncreate","setTitle","setTitleCount","Page","extend","items","current","matches","Separator","search","stickyParams","currentTag","addTag","active","id","component","more","splice","TagHero","Component","findTag","find","localeCompare","sensitivity","currentActiveTag","currentTagLoading","override","original","vdom","newDiscussion","get","disabled","GlobalSearchState","param","DiscussionListState","q","tagsLabel","DiscussionListItem","DiscussionHero","getSelectableTags","indexOf","ToggleButton","isToggled","source","excluded","i","target","sourceKeys","keys","TagSelectionModal","selected","bypassReqs","Stream","focused","navigator","KeyboardNavigatable","indexTag","extractText","canSelect","allowResetting","limits","min","total","primary","secondary","max","Infinity","Error","catchInvalidLimits","onUp","setIndex","getCurrentNumericIndex","onDown","onSelect","select","onRemove","selectableTags","selectedTags","content","toLowerCase","primaryCount","secondaryCount","getFilteredTags","inputWidth","Math","getInstruction","onclick","$","focus","removeTag","onready","placeholder","bidi","width","onkeydown","navigate","onfocus","onblur","type","meetsRequirements","colored","onmouseover","toggleTag","highlight","allowBypassing","requireParentTag","substring","index","t","onDeselect","remaining","count","onsubmit","e","preventDefault","hide","metaKey","ctrlKey","click","getItem","dispatchEvent","Event","selectableItems","selectedTag","scrollToItem","$items","$dropdown","$item","eq","attr","scrollTop","dropdownScroll","dropdownTop","offset","top","dropdownBottom","outerHeight","itemTop","itemBottom","parseInt","css","stop","animate","Modal","TagDiscussionModal","suppliedOnsubmit","save","relationships","DiscussionPage","update","DiscussionControls","canTag","modal","show","promise","composer","fields","DiscussionComposer","chooseTags","chosenTags","chosenPrimaryTags","chosenSecondaryTags","minPrimaryTags","forum","attribute","minSecondaryTags","maxPrimaryTags","maxSecondaryTags","data","DiscussionTaggedPost","oldTags","post","newTags","diffTags","tags1","tags2","getById","tagsAdded","tagsRemoved","descriptionKey","descriptionData","EventPost","Extend","helper","assign","addTagFilter","addTagControl","addTagList","addTagLabels","addTagComposer","Discussion","tagsCompat","_typeof","require","_regeneratorRuntime","module","exports","__esModule","Op","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","result","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","object","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","d","definition","prop","r"],"sourceRoot":""} \ No newline at end of file diff --git a/framework/core/js/dist-typings/admin/compat.d.ts b/framework/core/js/dist-typings/admin/compat.d.ts index 7bef737fa..00ea18644 100644 --- a/framework/core/js/dist-typings/admin/compat.d.ts +++ b/framework/core/js/dist-typings/admin/compat.d.ts @@ -34,7 +34,11 @@ import routes from './routes'; import AdminApplication from './AdminApplication'; import generateElementId from './utils/generateElementId'; declare const _default: { - extend: any; + extenders: { + PostTypes: typeof import("../common/extenders/PostTypes").default; + Routes: typeof import("../common/extenders/Routes").default; + }; + extend: typeof import("../common/extend"); Session: typeof import("../common/Session").default; Store: typeof import("../common/Store").default; 'utils/BasicEditorDriver': typeof import("../common/utils/BasicEditorDriver").default; diff --git a/framework/core/js/dist-typings/common/Application.d.ts b/framework/core/js/dist-typings/common/Application.d.ts index 2f673ede8..82f7902cb 100644 --- a/framework/core/js/dist-typings/common/Application.d.ts +++ b/framework/core/js/dist-typings/common/Application.d.ts @@ -14,6 +14,7 @@ import type Component from './Component'; import type { ComponentAttrs } from './Component'; import Model, { SavedModelData } from './Model'; import IHistory from './IHistory'; +import IExtender from './extenders/IExtender'; export type FlarumScreens = 'phone' | 'tablet' | 'desktop' | 'desktop-hd'; export type FlarumGenericRoute = RouteItem; export interface FlarumRequestOptions extends Omit, 'extract'> { @@ -196,7 +197,7 @@ export default class Application { load(payload: Application['data']): void; boot(): void; bootExtensions(extensions: Record): void; protected mount(basePath?: string): void; /** diff --git a/framework/core/js/dist-typings/common/compat.d.ts b/framework/core/js/dist-typings/common/compat.d.ts index a42f4a5ad..5c5589ecf 100644 --- a/framework/core/js/dist-typings/common/compat.d.ts +++ b/framework/core/js/dist-typings/common/compat.d.ts @@ -1,3 +1,4 @@ +import * as extend from './extend'; import Session from './Session'; import Store from './Store'; import BasicEditorDriver from './utils/BasicEditorDriver'; @@ -84,7 +85,11 @@ import AlertManagerState from './states/AlertManagerState'; import ModalManagerState from './states/ModalManagerState'; import PageState from './states/PageState'; declare const _default: { - extend: any; + extenders: { + PostTypes: typeof import("./extenders/PostTypes").default; + Routes: typeof import("./extenders/Routes").default; + }; + extend: typeof extend; Session: typeof Session; Store: typeof Store; 'utils/BasicEditorDriver': typeof BasicEditorDriver; diff --git a/framework/core/js/dist-typings/common/extend/Model.d.ts b/framework/core/js/dist-typings/common/extend/Model.d.ts deleted file mode 100644 index b0c476d34..000000000 --- a/framework/core/js/dist-typings/common/extend/Model.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -export default class Model { - constructor(type: any, model?: null); - type: any; - attributes: any[]; - hasOnes: any[]; - hasManys: any[]; - model: any; - attribute(name: any): Model; - hasOne(type: any): Model; - hasMany(type: any): Model; - extend(app: any, extension: any): void; -} diff --git a/framework/core/js/dist-typings/common/extend/PostTypes.d.ts b/framework/core/js/dist-typings/common/extend/PostTypes.d.ts deleted file mode 100644 index 455eb33f6..000000000 --- a/framework/core/js/dist-typings/common/extend/PostTypes.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default class PostTypes { - postComponents: {}; - add(name: any, component: any): PostTypes; - extend(app: any, extension: any): void; -} diff --git a/framework/core/js/dist-typings/common/extend/Routes.d.ts b/framework/core/js/dist-typings/common/extend/Routes.d.ts deleted file mode 100644 index fe26e5592..000000000 --- a/framework/core/js/dist-typings/common/extend/Routes.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default class Routes { - routes: {}; - add(name: any, path: any, component: any): Routes; - extend(app: any, extension: any): void; -} diff --git a/framework/core/js/dist-typings/common/extend/index.d.ts b/framework/core/js/dist-typings/common/extend/index.d.ts deleted file mode 100644 index 12dae5124..000000000 --- a/framework/core/js/dist-typings/common/extend/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as Model } from "./Model"; -export { default as PostTypes } from "./PostTypes"; -export { default as Routes } from "./Routes"; diff --git a/framework/core/js/dist-typings/common/extenders/IExtender.d.ts b/framework/core/js/dist-typings/common/extenders/IExtender.d.ts new file mode 100644 index 000000000..43c4f7208 --- /dev/null +++ b/framework/core/js/dist-typings/common/extenders/IExtender.d.ts @@ -0,0 +1,8 @@ +import Application from '../Application'; +export interface IExtensionModule { + name: string; + exports: unknown; +} +export default interface IExtender { + extend(app: Application, extension: IExtensionModule): void; +} diff --git a/framework/core/js/dist-typings/common/extenders/PostTypes.d.ts b/framework/core/js/dist-typings/common/extenders/PostTypes.d.ts new file mode 100644 index 000000000..4a76d7318 --- /dev/null +++ b/framework/core/js/dist-typings/common/extenders/PostTypes.d.ts @@ -0,0 +1,14 @@ +import IExtender, { IExtensionModule } from './IExtender'; +import Application from '../Application'; +export default class PostTypes implements IExtender { + private postComponents; + /** + * Register a new post component type. + * Usually used for event posts. + * + * @param name The name of the post type. + * @param component The component class to render the post. + */ + add(name: string, component: any): PostTypes; + extend(app: Application, extension: IExtensionModule): void; +} diff --git a/framework/core/js/dist-typings/common/extenders/Routes.d.ts b/framework/core/js/dist-typings/common/extenders/Routes.d.ts new file mode 100644 index 000000000..e89d41299 --- /dev/null +++ b/framework/core/js/dist-typings/common/extenders/Routes.d.ts @@ -0,0 +1,18 @@ +import Application from '../Application'; +import IExtender, { IExtensionModule } from './IExtender'; +type HelperRoute = (...args: any) => string; +export default class Routes implements IExtender { + private routes; + private helpers; + /** + * Add a mithril route to the application. + * + * @param name The name of the route. + * @param path The path of the route. + * @param component must extend `Page` component. + */ + add(name: string, path: `/${string}`, component: any): Routes; + helper(name: string, callback: HelperRoute): Routes; + extend(app: Application, extension: IExtensionModule): void; +} +export {}; diff --git a/framework/core/js/dist-typings/common/extenders/index.d.ts b/framework/core/js/dist-typings/common/extenders/index.d.ts new file mode 100644 index 000000000..8ffb88b61 --- /dev/null +++ b/framework/core/js/dist-typings/common/extenders/index.d.ts @@ -0,0 +1,7 @@ +import PostTypes from './PostTypes'; +import Routes from './Routes'; +declare const _default: { + PostTypes: typeof PostTypes; + Routes: typeof Routes; +}; +export default _default; diff --git a/framework/core/js/dist-typings/common/index.d.ts b/framework/core/js/dist-typings/common/index.d.ts index 178b6d640..68ffe2382 100644 --- a/framework/core/js/dist-typings/common/index.d.ts +++ b/framework/core/js/dist-typings/common/index.d.ts @@ -6,7 +6,6 @@ import 'bootstrap/js/dropdown'; import 'bootstrap/js/tooltip'; import 'bootstrap/js/transition'; import 'jquery.hotkeys/jquery.hotkeys'; -import * as Extend from './extend/index'; import app from './app'; -export { Extend, app }; +export { app }; import './utils/arrayFlatPolyfill'; diff --git a/framework/core/js/dist-typings/forum/compat.d.ts b/framework/core/js/dist-typings/forum/compat.d.ts index a15957b3d..b1b84677c 100644 --- a/framework/core/js/dist-typings/forum/compat.d.ts +++ b/framework/core/js/dist-typings/forum/compat.d.ts @@ -70,7 +70,11 @@ import routes from './routes'; import ForumApplication from './ForumApplication'; import isSafariMobile from './utils/isSafariMobile'; declare const _default: { - extend: any; + extenders: { + PostTypes: typeof import("../common/extenders/PostTypes").default; + Routes: typeof import("../common/extenders/Routes").default; + }; + extend: typeof import("../common/extend"); Session: typeof import("../common/Session").default; Store: typeof import("../common/Store").default; 'utils/BasicEditorDriver': typeof BasicEditorDriver; diff --git a/framework/core/js/dist/admin.js b/framework/core/js/dist/admin.js index 9d384d75d..8cb54d396 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,(function(n,r){return n.concat(Array.isArray(r)?t.call(r,e-1):r)}),[]):[].concat(this)})},9043:()=>{!function(t){"use strict";var e=function e(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"),o="object"==typeof n&&n;i||r.data("bs.affix",i=new e(this,o)),"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(),o=this.$element.offset(),a=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,o=r.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof r&&(o=i=r),"function"==typeof i&&(i=r.top(this.$element)),"function"==typeof o&&(o=r.bottom(this.$element));var s=this.getState(a,n,i,o);if(this.affixed!=s){null!=this.unpin&&this.$element.css("top","");var u="affix"+(s?"-"+s:""),l=t.Event(u+".bs.affix");if(this.$element.trigger(l),l.isDefaultPrevented())return;this.affixed=s,this.unpin="bottom"==s?this.getPinnedOffset():null,this.$element.removeClass(e.RESET).addClass(u).trigger(u.replace("affix","affixed")+".bs.affix")}"bottom"==s&&this.$element.offset({top:a-n-o})}};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),o={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",o)),n.isDefaultPrevented()||(e.attr("aria-expanded","false"),i.removeClass("open").trigger(t.Event("hidden.bs.dropdown",o)))))})))}n.VERSION="3.4.1",n.prototype.toggle=function(e){var n=t(this);if(!n.is(".disabled, :disabled")){var o=r(n),a=o.hasClass("open");if(i(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",i);var s={relatedTarget:this};if(o.trigger(e=t.Event("show.bs.dropdown",s)),e.isDefaultPrevented())return;n.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger(t.Event("shown.bs.dropdown",s))}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 o=r(i),a=o.hasClass("open");if(!a&&27!=n.which||a&&27==n.which)return 27==n.which&&o.find(e).trigger("focus"),i.trigger("click");var s=o.find(".dropdown-menu li:not(.disabled):visible a");if(s.length){var u=s.index(n.target);38==n.which&&u>0&&u--,40==n.which&&u{!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 o(e,o){var a=e.nodeName.toLowerCase();if(-1!==t.inArray(a,o))return-1===t.inArray(a,n)||Boolean(e.nodeValue.match(r)||e.nodeValue.match(i));for(var s=t(o).filter((function(t,e){return e instanceof RegExp})),u=0,l=s.length;u
          ',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:[]}},s.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(" "),o=i.length;o--;){var a=i[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",u="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(u+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},s.prototype.getDefaults=function(){return s.DEFAULTS},s.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=a(n.template,n.whiteList,n.sanitizeFn)),n},s.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},s.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)}},s.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},s.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)}},s.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(),o=this.getUID(this.type);this.setContent(),i.attr("id",o),this.$element.attr("aria-describedby",o),this.options.animation&&i.addClass("fade");var a="function"==typeof this.options.placement?this.options.placement.call(this,i[0],this.$element[0]):this.options.placement,u=/\s?auto?\s?/i,l=u.test(a);l&&(a=a.replace(u,"")||"top"),i.detach().css({top:0,left:0,display:"block"}).addClass(a).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 c=this.getPosition(),d=i[0].offsetWidth,f=i[0].offsetHeight;if(l){var p=a,h=this.getPosition(this.$viewport);a="bottom"==a&&c.bottom+f>h.bottom?"top":"top"==a&&c.top-fh.width?"left":"left"==a&&c.left-da.top+a.height&&(i.top=a.top+a.height-u)}else{var l=e.left-o,c=e.left+o+n;la.right&&(i.left=a.left+a.width-c)}return i},s.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)},s.prototype.getUID=function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},s.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},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},s.prototype.enable=function(){this.enabled=!0},s.prototype.disable=function(){this.enabled=!1},s.prototype.toggleEnabled=function(){this.enabled=!this.enabled},s.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)},s.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}))},s.prototype.sanitizeHtml=function(t){return a(t,this.options.whiteList,this.options.sanitizeFn)};var u=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 s(this,i)),"string"==typeof e&&r[e]())}))},t.fn.tooltip.Constructor=s,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=u,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 o,a,s,u,l=new e(t),c=l.getImageData().data,d=l.getPixelCount(),f=[],p=0;d>p;p+=r)a=c[0+(o=4*p)],s=c[o+1],u=c[o+2],c[o+3]>=125&&(a>250&&s>250&&u>250||f.push([a,s,u]));var h=i.quantize(f,n),m=h?h.palette():null;return l.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*u)+(e<>l,i=e[1]>>l,o=e[2]>>l,n=t(r,i,o),a[n]=(a[n]||0)+1})),a}function a(t,e){var r,i,o,a=1e6,s=0,u=1e6,c=0,d=1e6,f=0;return t.forEach((function(t){r=t[0]>>l,i=t[1]>>l,o=t[2]>>l,a>r?a=r:r>s&&(s=r),u>i?u=i:i>c&&(c=i),d>o?d=o:o>f&&(f=o)})),new n(a,s,u,c,d,f,e)}function s(e,n){if(n.count()){var i=n.r2-n.r1+1,o=n.g2-n.g1+1,a=n.b2-n.b1+1,s=r.max([i,o,a]);if(1==n.count())return[n.copy()];var u,l,c,d,f=0,p=[],h=[];if(s==i)for(u=n.r1;u<=n.r2;u++){for(d=0,l=n.g1;l<=n.g2;l++)for(c=n.b1;c<=n.b2;c++)d+=e[t(u,l,c)]||0;f+=d,p[u]=f}else if(s==o)for(u=n.g1;u<=n.g2;u++){for(d=0,l=n.r1;l<=n.r2;l++)for(c=n.b1;c<=n.b2;c++)d+=e[t(l,u,c)]||0;f+=d,p[u]=f}else for(u=n.b1;u<=n.b2;u++){for(d=0,l=n.r1;l<=n.r2;l++)for(c=n.g1;c<=n.g2;c++)d+=e[t(l,c,u)]||0;f+=d,p[u]=f}return p.forEach((function(t,e){h[e]=f-t})),function(t){var e,r,i,o,a,s=t+"1",l=t+"2",c=0;for(u=n[s];u<=n[l];u++)if(p[u]>f/2){for(i=n.copy(),o=n.copy(),e=u-n[s],a=(r=n[l]-u)>=e?Math.min(n[l]-1,~~(u+r/2)):Math.max(n[s],~~(u-1-e/2));!p[a];)a++;for(c=h[a];!c&&p[a-1];)c=h[--a];return i[l]=a,o[s]=i[l]+1,[i,o]}}(s==i?"r":s==o?"g":"b")}}var u=5,l=8-u;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,o,a,s=0;for(i=n.r1;i<=n.r2;i++)for(o=n.g1;o<=n.g2;o++)for(a=n.b1;a<=n.b2;a++)index=t(i,o,a),s+=r[index]||0;n._count=s,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,o,a,s,l=0,c=1<<8-u,d=0,f=0,p=0;for(o=n.r1;o<=n.r2;o++)for(a=n.g1;a<=n.g2;a++)for(s=n.b1;s<=n.b2;s++)l+=i=r[t(o,a,s)]||0,d+=i*(o+.5)*c,f+=i*(a+.5)*c,p+=i*(s+.5)*c;n._avg=l?[~~(d/l),~~(f/l),~~(p/l)]:[~~(c*(n.r1+n.r2+1)/2),~~(c*(n.g1+n.g2+1)/2),~~(c*(n.b1+n.b2+1)/2)]}return n._avg},contains:function(t){var e=this,n=t[0]>>l;return gval=t[1]>>l,bval=t[2]>>l,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(o).color[0],2)+Math.pow(t[1]-i.peek(o).color[1],2)+Math.pow(t[2]-i.peek(o).color[2],2)))||void 0===e)&&(e=n,r=i.peek(o).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 u(t,e){for(var n,r=1,i=0;1e3>i;)if((n=t.pop()).count()){var o=s(l,n),a=o[0],u=o[1];if(!a)return;if(t.push(a),u&&(t.push(u),r++),r>=e)return;if(i++>1e3)return}else t.push(n),i++}if(!t.length||2>n||n>256)return!1;var l=o(t);l.forEach((function(){}));var c=a(t,l),d=new e((function(t,e){return r.naturalOrder(t.count(),e.count())}));d.push(c),u(d,.75*n);for(var f=new e((function(t,e){return r.naturalOrder(t.count()*t.volume(),e.count()*e.volume())}));d.size();)f.push(d.pop());u(f,n-f.size());for(var p=new i;f.size();)p.push(f.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",o="hour",a="day",s="week",u="month",l="quarter",c="year",d="date",f="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|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])+"]"}},v=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},g={s:v,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+v(r,2,"0")+":"+v(i,2,"0")},m:function t(e,n){if(e.date()1)return t(a[0])}else{var s=e.name;b[s]=e,i=s}return!r&&i&&(y=i),i||!r&&y},x=function(t,e){if(D(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new C(n)},E=g;E.l=w,E.i=D,E.w=function(t,e){return x(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var C=function(){function m(t){this.$L=w(t.locale,null,!0),this.parse(t)}var v=m.prototype;return v.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,o=(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,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},v.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()},v.$utils=function(){return E},v.isValid=function(){return!(this.$d.toString()===f)},v.isSame=function(t,e){var n=x(t);return this.startOf(e)<=n&&n<=this.endOf(e)},v.isAfter=function(t,e){return x(t)0,v<=m.r||!m.r){v<=1&&h>0&&(m=f[h-1]);var g=d[m.l];s&&(v=s(""+v)),l="string"==typeof g?g.replace("%d",v):g(v,r,m.l,c);break}}if(r)return l;var y=c?d.future:d.past;return"function"==typeof y?y(l):y.replace("%s",l)},r.to=function(t,e){return o(t,e,this,!0)},r.from=function(t,e){return o(t,e,this)};var a=function(t){return t.$u?n.utc():n()};r.toNow=function(t){return this.to(a(this),t)},r.fromNow=function(t){return this.from(a(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],o=String.fromCharCode(e.which).toLowerCase(),a="",s={};t.each(["alt","ctrl","shift"],(function(t,n){e[n+"Key"]&&i!==n&&(a+=n+"+")})),e.metaKey&&!e.ctrlKey&&"meta"!==i&&(a+="meta+"),e.metaKey&&"meta"!==i&&a.indexOf("alt+ctrl+shift+")>-1&&(a=a.replace("alt+ctrl+shift+","hyper+")),i?s[a+i]=!0:(s[a+o]=!0,s[a+t.hotkeys.shiftNums[o]]=!0,"shift+"===a&&(s[t.hotkeys.shiftNums[o]]=!0));for(var u=0,l=r.length;u","/":"?","\\":"|"},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 o=[],a=Object.getPrototypeOf,s=o.slice,u=o.flat?function(t){return o.flat.call(t)}:function(t){return o.concat.apply([],t)},l=o.push,c=o.indexOf,d={},f=d.toString,p=d.hasOwnProperty,h=p.toString,m=h.call(Object),v={},g=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},y=function(t){return null!=t&&t===t.window},b=r.document,D={type:!0,src:!0,nonce:!0,noModule:!0};function w(t,e,n){var r,i,o=(n=n||b).createElement("script");if(o.text=t,e)for(r in D)(i=e[r]||e.getAttribute&&e.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?d[f.call(t)]||"object":typeof t}var E="3.6.1",C=function t(e,n){return new t.fn.init(e,n)};function A(t){var e=!!t&&"length"in t&&t.length,n=x(t);return!g(t)&&!y(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}C.fn=C.prototype={jquery:E,constructor:C,length:0,toArray:function(){return s.call(this)},get:function(t){return null==t?s.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=C.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return C.each(this,t)},map:function(t){return this.pushStack(C.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(C.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(I+"|>"),G=new RegExp(R),V=new RegExp("^"+M+"$"),Y={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+$),PSEUDO:new RegExp("^"+R),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("^(?:"+L+")$","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},ot=function(){f()},at=Dt((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{O.apply(_=P.call(w.childNodes),w.childNodes),_[w.childNodes.length].nodeType}catch(t){O={apply:_.length?function(t,e){B.apply(t,P.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function st(t,e,r,i){var o,s,l,c,d,h,g,y=e&&e.ownerDocument,w=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==w&&9!==w&&11!==w)return r;if(!i&&(f(e),e=e||p,m)){if(11!==w&&(d=Z.exec(t)))if(o=d[1]){if(9===w){if(!(l=e.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(y&&(l=y.getElementById(o))&&b(e,l)&&l.id===o)return r.push(l),r}else{if(d[2])return O.apply(r,e.getElementsByTagName(t)),r;if((o=d[3])&&n.getElementsByClassName&&e.getElementsByClassName)return O.apply(r,e.getElementsByClassName(o)),r}if(n.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==w||"object"!==e.nodeName.toLowerCase())){if(g=t,y=e,1===w&&(W.test(t)||z.test(t))){for((y=tt.test(t)&>(e.parentNode)||e)===e&&n.scope||((c=e.getAttribute("id"))?c=c.replace(rt,it):e.setAttribute("id",c=D)),s=(h=a(t)).length;s--;)h[s]=(c?"#"+c:":scope")+" "+bt(h[s]);g=h.join(",")}try{return O.apply(r,y.querySelectorAll(g)),r}catch(e){N(t,!0)}finally{c===D&&e.removeAttribute("id")}}}return u(t.replace(q,"$1"),e,r,i)}function ut(){var t=[];return function e(n,i){return t.push(n+" ")>r.cacheLength&&delete e[t.shift()],e[n+" "]=i}}function lt(t){return t[D]=!0,t}function ct(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 ft(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 ht(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&&at(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function vt(t){return lt((function(e){return e=+e,lt((function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function gt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in n=st.support={},o=st.isXML=function(t){var e=t&&t.namespaceURI,n=t&&(t.ownerDocument||t).documentElement;return!K.test(e||n&&n.nodeName||"HTML")},f=st.setDocument=function(t){var e,i,a=t?t.ownerDocument||t:w;return a!=p&&9===a.nodeType&&a.documentElement?(h=(p=a).documentElement,m=!o(p),w!=p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",ot,!1):i.attachEvent&&i.attachEvent("onunload",ot)),n.scope=ct((function(t){return h.appendChild(t).appendChild(p.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length})),n.attributes=ct((function(t){return t.className="i",!t.getAttribute("className")})),n.getElementsByTagName=ct((function(t){return t.appendChild(p.createComment("")),!t.getElementsByTagName("*").length})),n.getElementsByClassName=Q.test(p.getElementsByClassName),n.getById=ct((function(t){return h.appendChild(t).id=D,!p.getElementsByName||!p.getElementsByName(D).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,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(i=e.getElementsByName(t),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}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,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&m)return e.getElementsByClassName(t)},g=[],v=[],(n.qsa=Q.test(p.querySelectorAll))&&(ct((function(t){var e;h.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),t.querySelectorAll("[selected]").length||v.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|"+L+")"),t.querySelectorAll("[id~="+D+"-]").length||v.push("~="),(e=p.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||v.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),t.querySelectorAll(":checked").length||v.push(":checked"),t.querySelectorAll("a#"+D+"+*").length||v.push(".#.+[+~]"),t.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),ct((function(t){t.innerHTML="";var e=p.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&v.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),v.push(",.*:")}))),(n.matchesSelector=Q.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ct((function(t){n.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),g.push("!=",R)})),v=v.length&&new RegExp(v.join("|")),g=g.length&&new RegExp(g.join("|")),e=Q.test(h.compareDocumentPosition),b=e||Q.test(h.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},T=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==w&&b(w,t)?-1:e==p||e.ownerDocument==w&&b(w,e)?1:c?j(c,t)-j(c,e):0:4&r?-1:1)}:function(t,e){if(t===e)return d=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!i||!o)return t==p?-1:e==p?1:i?-1:o?1:c?j(c,t)-j(c,e):0;if(i===o)return ft(t,e);for(n=t;n=n.parentNode;)a.unshift(n);for(n=e;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?ft(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},p):p},st.matches=function(t,e){return st(t,null,null,e)},st.matchesSelector=function(t,e){if(f(t),n.matchesSelector&&m&&!N[e+" "]&&(!g||!g.test(e))&&(!v||!v.test(e)))try{var r=y.call(t,e);if(r||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){N(e,!0)}return st(e,p,null,[t]).length>0},st.contains=function(t,e){return(t.ownerDocument||t)!=p&&f(t),b(t,e)},st.attr=function(t,e){(t.ownerDocument||t)!=p&&f(t);var i=r.attrHandle[e.toLowerCase()],o=i&&S.call(r.attrHandle,e.toLowerCase())?i(t,e,!m):void 0;return void 0!==o?o:n.attributes||!m?t.getAttribute(e):(o=t.getAttributeNode(e))&&o.specified?o.value:null},st.escape=function(t){return(t+"").replace(rt,it)},st.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},st.uniqueSort=function(t){var e,r=[],i=0,o=0;if(d=!n.detectDuplicates,c=!n.sortStable&&t.slice(0),t.sort(T),d){for(;e=t[o++];)e===t[o]&&(i=r.push(o));for(;i--;)t.splice(r[i],1)}return c=null,t},i=st.getText=function(t){var e,n="",r=0,o=t.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=i(t)}else if(3===o||4===o)return t.nodeValue}else for(;e=t[r++];)n+=i(e);return n},r=st.selectors={cacheLength:50,createPseudo:lt,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]||st.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]&&st.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=a(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=C[t+" "];return e||(e=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+t+"("+I+"|$)"))&&C(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=st.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(H," ")+" ").indexOf(n)>-1:"|="===e&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,u){var l,c,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",v=e.parentNode,g=s&&e.nodeName.toLowerCase(),y=!u&&!s,b=!1;if(v){if(o){for(;m;){for(f=e;f=f[m];)if(s?f.nodeName.toLowerCase()===g:1===f.nodeType)return!1;h=m="only"===t&&!h&&"nextSibling"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&y){for(b=(p=(l=(c=(d=(f=v)[D]||(f[D]={}))[f.uniqueID]||(d[f.uniqueID]={}))[t]||[])[0]===x&&l[1])&&l[2],f=p&&v.childNodes[p];f=++p&&f&&f[m]||(b=p=0)||h.pop();)if(1===f.nodeType&&++b&&f===e){c[t]=[x,p,b];break}}else if(y&&(b=p=(l=(c=(d=(f=e)[D]||(f[D]={}))[f.uniqueID]||(d[f.uniqueID]={}))[t]||[])[0]===x&&l[1]),!1===b)for(;(f=++p&&f&&f[m]||(b=p=0)||h.pop())&&((s?f.nodeName.toLowerCase()!==g:1!==f.nodeType)||!++b||(y&&((c=(d=f[D]||(f[D]={}))[f.uniqueID]||(d[f.uniqueID]={}))[t]=[x,b]),f!==e)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(t,e){var n,i=r.pseudos[t]||r.setFilters[t.toLowerCase()]||st.error("unsupported pseudo: "+t);return i[D]?i(e):i.length>1?(n=[t,t,"",e],r.setFilters.hasOwnProperty(t.toLowerCase())?lt((function(t,n){for(var r,o=i(t,e),a=o.length;a--;)t[r=j(t,o[a])]=!(n[r]=o[a])})):function(t){return i(t,0,n)}):i}},pseudos:{not:lt((function(t){var e=[],n=[],r=s(t.replace(q,"$1"));return r[D]?lt((function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))})):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}})),has:lt((function(t){return function(e){return st(t,e).length>0}})),contains:lt((function(t){return t=t.replace(et,nt),function(e){return(e.textContent||i(e)).indexOf(t)>-1}})),lang:lt((function(t){return V.test(t||"")||st.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===h},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:vt((function(){return[0]})),last:vt((function(t,e){return[e-1]})),eq:vt((function(t,e,n){return[n<0?n+e:n]})),even:vt((function(t,e){for(var n=0;ne?e:n;--r>=0;)t.push(r);return t})),gt:vt((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 xt(t,e,n,r,i){for(var o,a=[],s=0,u=t.length,l=null!=e;s-1&&(o[l]=!(a[l]=d))}}else g=xt(g===a?g.splice(h,g.length):g),i?i(null,a,g,u):O.apply(a,g)}))}function Ct(t){for(var e,n,i,o=t.length,a=r.relative[t[0].type],s=a||r.relative[" "],u=a?1:0,c=Dt((function(t){return t===e}),s,!0),d=Dt((function(t){return j(e,t)>-1}),s,!0),f=[function(t,n,r){var i=!a&&(r||n!==l)||((e=n).nodeType?c(t,n,r):d(t,n,r));return e=null,i}];u1&&wt(f),u>1&&bt(t.slice(0,u-1).concat({value:" "===t[u-2].type?"*":""})).replace(q,"$1"),n,u0,i=t.length>0,o=function(o,a,s,u,c){var d,h,v,g=0,y="0",b=o&&[],D=[],w=l,E=o||i&&r.find.TAG("*",c),C=x+=null==w?1:Math.random()||.1,A=E.length;for(c&&(l=a==p||a||c);y!==A&&null!=(d=E[y]);y++){if(i&&d){for(h=0,a||d.ownerDocument==p||(f(d),s=!m);v=t[h++];)if(v(d,a||p,s)){u.push(d);break}c&&(x=C)}n&&((d=!v&&d)&&g--,o&&b.push(d))}if(g+=y,n&&y!==g){for(h=0;v=e[h++];)v(b,D,a,s);if(o){if(g>0)for(;y--;)b[y]||D[y]||(D[y]=k.call(u));D=xt(D)}O.apply(u,D),c&&!o&&D.length>0&&g+e.length>1&&st.uniqueSort(u)}return c&&(x=C,l=w),b};return n?lt(o):o}(o,i)),s.selector=t}return s},u=st.select=function(t,e,n,i){var o,u,l,c,d,f="function"==typeof t&&t,p=!i&&a(t=f.selector||t);if(n=n||[],1===p.length){if((u=p[0]=p[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===e.nodeType&&m&&r.relative[u[1].type]){if(!(e=(r.find.ID(l.matches[0].replace(et,nt),e)||[])[0]))return n;f&&(e=e.parentNode),t=t.slice(u.shift().value.length)}for(o=Y.needsContext.test(t)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((d=r.find[c])&&(i=d(l.matches[0].replace(et,nt),tt.test(u[0].type)&>(e.parentNode)||e))){if(u.splice(o,1),!(t=i.length&&bt(u)))return O.apply(n,i),n;break}}return(f||s(t,p))(i,e,!m,n,!e||tt.test(t)&>(e.parentNode)||e),n},n.sortStable=D.split("").sort(T).join("")===D,n.detectDuplicates=!!d,f(),n.sortDetached=ct((function(t){return 1&t.compareDocumentPosition(p.createElement("fieldset"))})),ct((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&&ct((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})),ct((function(t){return null==t.getAttribute("disabled")}))||dt(L,(function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null})),st}(r);C.find=F,(C.expr=F.selectors)[":"]=C.expr.pseudos,C.uniqueSort=C.unique=F.uniqueSort,C.text=F.getText,C.isXMLDoc=F.isXML,C.contains=F.contains,C.escapeSelector=F.escape;var N=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&C(t).is(n))break;r.push(t)}return r},T=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},S=C.expr.match.needsContext;function _(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var k=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function B(t,e,n){return g(e)?C.grep(t,(function(t,r){return!!e.call(t,r,t)!==n})):e.nodeType?C.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?C.grep(t,(function(t){return c.call(e,t)>-1!==n})):C.filter(e,t,n)}C.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?C.find.matchesSelector(r,t)?[r]:[]:C.find.matches(t,C.grep(e,(function(t){return 1===t.nodeType})))},C.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(C(t).filter((function(){for(e=0;e1?C.uniqueSort(n):n},filter:function(t){return this.pushStack(B(this,t||[],!1))},not:function(t){return this.pushStack(B(this,t||[],!0))},is:function(t){return!!B(this,"string"==typeof t&&S.test(t)?C(t):t||[],!1).length}});var O,P=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(C.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||O,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:P.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 C?e[0]:e,C.merge(this,C.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),k.test(r[1])&&C.isPlainObject(e))for(r in e)g(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return(i=b.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):g(t)?void 0!==n.ready?n.ready(t):t(C):C.makeArray(t,this)}).prototype=C.fn,O=C(b);var j=/^(?:parents|prev(?:Until|All))/,L={children:!0,contents:!0,next:!0,prev:!0};function I(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&C.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?C.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?c.call(C(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(C.uniqueSort(C.merge(this.get(),C(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),C.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return N(t,"parentNode")},parentsUntil:function(t,e,n){return N(t,"parentNode",n)},next:function(t){return I(t,"nextSibling")},prev:function(t){return I(t,"previousSibling")},nextAll:function(t){return N(t,"nextSibling")},prevAll:function(t){return N(t,"previousSibling")},nextUntil:function(t,e,n){return N(t,"nextSibling",n)},prevUntil:function(t,e,n){return N(t,"previousSibling",n)},siblings:function(t){return T((t.parentNode||{}).firstChild,t)},children:function(t){return T(t.firstChild)},contents:function(t){return null!=t.contentDocument&&a(t.contentDocument)?t.contentDocument:(_(t,"template")&&(t=t.content||t),C.merge([],t.childNodes))}},(function(t,e){C.fn[t]=function(n,r){var i=C.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=C.filter(r,i)),this.length>1&&(L[t]||C.uniqueSort(i),j.test(t)&&i.reverse()),this.pushStack(i)}}));var M=/[^\x20\t\r\n\f]+/g;function $(t){return t}function R(t){throw t}function H(t,e,n,r){var i;try{t&&g(i=t.promise)?i.call(t).done(e).fail(n):t&&g(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}C.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return C.each(t.match(M)||[],(function(t,n){e[n]=!0})),e}(t):C.extend({},t);var e,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(t){return t?C.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=[t,(n=n||[]).slice?n.slice():n],a.push(n),e||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},C.extend({Deferred:function(t){var e=[["notify","progress",C.Callbacks("memory"),C.Callbacks("memory"),2],["resolve","done",C.Callbacks("once memory"),C.Callbacks("once memory"),0,"resolved"],["reject","fail",C.Callbacks("once memory"),C.Callbacks("once memory"),1,"rejected"]],n="pending",i={state:function(){return n},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return i.then(null,t)},pipe:function(){var t=arguments;return C.Deferred((function(n){C.each(e,(function(e,r){var i=g(t[r[4]])&&t[r[4]];o[r[1]]((function(){var t=i&&i.apply(this,arguments);t&&g(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 o=0;function a(t,e,n,i){return function(){var s=this,u=arguments,l=function(){var r,l;if(!(t=o&&(n!==R&&(s=void 0,u=[r]),e.rejectWith(s,u))}};t?c():(C.Deferred.getStackHook&&(c.stackTrace=C.Deferred.getStackHook()),r.setTimeout(c))}}return C.Deferred((function(r){e[0][3].add(a(0,r,g(i)?i:$,r.notifyWith)),e[1][3].add(a(0,r,g(t)?t:$)),e[2][3].add(a(0,r,g(n)?n:R))})).promise()},promise:function(t){return null!=t?C.extend(t,i):i}},o={};return C.each(e,(function(t,r){var a=r[2],s=r[5];i[r[1]]=a.add,s&&a.add((function(){n=s}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),a.add(r[3].fire),o[r[0]]=function(){return o[r[0]+"With"](this===o?void 0:this,arguments),this},o[r[0]+"With"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(t){var e=arguments.length,n=e,r=Array(n),i=s.call(arguments),o=C.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?s.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(H(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||g(i[n]&&i[n].then)))return o.then();for(;n--;)H(i[n],a(n),o.reject);return o.promise()}});var q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;C.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)},C.readyException=function(t){r.setTimeout((function(){throw t}))};var U=C.Deferred();function z(){b.removeEventListener("DOMContentLoaded",z),r.removeEventListener("load",z),C.ready()}C.fn.ready=function(t){return U.then(t).catch((function(t){C.readyException(t)})),this},C.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--C.readyWait:C.isReady)||(C.isReady=!0,!0!==t&&--C.readyWait>0||U.resolveWith(b,[C]))}}),C.ready.then=U.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?r.setTimeout(C.ready):(b.addEventListener("DOMContentLoaded",z),r.addEventListener("load",z));var W=function t(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===x(r))for(u in o=!0,r)t(e,n,u,r[u],!0,a,s);else if(void 0!==i&&(o=!0,g(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(t,e,n){return c.call(C(t),n)})),n))for(;u1,null,!0)},removeData:function(t){return this.each((function(){Z.remove(this,t)}))}}),C.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,C.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){var n=C.queue(t,e=e||"fx"),r=n.length,i=n.shift(),o=C._queueHooks(t,e);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,(function(){C.dequeue(t,e)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Q.get(t,n)||Q.access(t,n,{empty:C.Callbacks("once memory").add((function(){Q.remove(t,[e+"queue",n])}))})}}),C.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,yt=/^$|^module$|\/(?:java|ecma)script/i;ht=b.createDocumentFragment().appendChild(b.createElement("div")),(mt=b.createElement("input")).setAttribute("type","radio"),mt.setAttribute("checked","checked"),mt.setAttribute("name","t"),ht.appendChild(mt),v.checkClone=ht.cloneNode(!0).cloneNode(!0).lastChild.checked,ht.innerHTML="",v.noCloneChecked=!!ht.cloneNode(!0).lastChild.defaultValue,ht.innerHTML="",v.option=!!ht.lastChild;var bt={thead:[1,"","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};function Dt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&_(t,e)?C.merge([t],n):n}function wt(t,e){for(var n=0,r=t.length;n",""]);var xt=/<|&#?\w+;/;function Et(t,e,n,r,i){for(var o,a,s,u,l,c,d=e.createDocumentFragment(),f=[],p=0,h=t.length;p-1)i&&i.push(o);else if(l=st(o),a=Dt(d.appendChild(o),"script"),l&&wt(a),n)for(c=0;o=a[c++];)yt.test(o.type||"")&&n.push(o);return d}var Ct=/^([^.]*)(?:\.(.+)|)/;function At(){return!0}function Ft(){return!1}function Nt(t,e){return t===function(){try{return b.activeElement}catch(t){}}()==("focus"===e)}function Tt(t,e,n,r,i,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof n&&(r=r||n,n=void 0),e)Tt(t,s,n,r,e[s],o);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=Ft;else if(!i)return t;return 1===o&&(a=i,i=function(t){return C().off(t),a.apply(this,arguments)},i.guid=a.guid||(a.guid=C.guid++)),t.each((function(){C.event.add(this,e,i,r,n)}))}function St(t,e,n){n?(Q.set(t,e,!1),C.event.add(t,e,{namespace:!1,handler:function(t){var r,i,o=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(o.length)(C.event.special[e]||{}).delegateType&&t.stopPropagation();else if(o=s.call(arguments),Q.set(this,e,o),r=n(this,e),this[e](),o!==(i=Q.get(this,e))||r?Q.set(this,e,!1):i={},o!==i)return t.stopImmediatePropagation(),t.preventDefault(),i&&i.value}else o.length&&(Q.set(this,e,{value:C.event.trigger(C.extend(o[0],C.Event.prototype),o.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&C.event.add(t,e,At)}C.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,d,f,p,h,m,v=Q.get(t);if(X(t))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&C.find.matchesSelector(at,i),n.guid||(n.guid=C.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return C.event.triggered!==e.type?C.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(M)||[""]).length;l--;)p=m=(s=Ct.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(d=C.event.special[p]||{},p=(i?d.delegateType:d.bindType)||p,d=C.event.special[p]||{},c=C.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&C.expr.match.needsContext.test(i),namespace:h.join(".")},o),(f=u[p])||((f=u[p]=[]).delegateCount=0,d.setup&&!1!==d.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),d.add&&(d.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?f.splice(f.delegateCount++,0,c):f.push(c),C.event.global[p]=!0)},remove:function(t,e,n,r,i){var o,a,s,u,l,c,d,f,p,h,m,v=Q.hasData(t)&&Q.get(t);if(v&&(u=v.events)){for(l=(e=(e||"").match(M)||[""]).length;l--;)if(p=m=(s=Ct.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p){for(d=C.event.special[p]||{},f=u[p=(r?d.delegateType:d.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=f.length;o--;)c=f[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,d.remove&&d.remove.call(t,c));a&&!f.length&&(d.teardown&&!1!==d.teardown.call(t,h,v.handle)||C.removeEvent(t,p,v.handle),delete u[p])}else for(p in u)C.event.remove(t,p+e[l],n,r,!0);C.isEmptyObject(u)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=new Array(arguments.length),u=C.event.fix(t),l=(Q.get(this,"events")||Object.create(null))[u.type]||[],c=C.event.special[u.type]||{};for(s[0]=u,e=1;e=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==t.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:C.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\s*$/g;function Ot(t,e){return _(t,"table")&&_(11!==e.nodeType?e:e.firstChild,"tr")&&C(t).children("tbody")[0]||t}function Pt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function jt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Lt(t,e){var n,r,i,o,a,s;if(1===e.nodeType){if(Q.hasData(t)&&(s=Q.get(t).events))for(i in Q.remove(e,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"==typeof h&&!v.checkClone&&kt.test(h))return t.each((function(i){var o=t.eq(i);m&&(e[0]=h.call(this,i,o.html())),Mt(o,e,n,r)}));if(f&&(o=(i=Et(e,t[0].ownerDocument,!1,t,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=C.map(Dt(i,"script"),Pt)).length;d0&&wt(a,!u&&Dt(t,"script")),s},cleanData:function(t){for(var e,n,r,i=C.event.special,o=0;void 0!==(n=t[o]);o++)if(X(n)){if(e=n[Q.expando]){if(e.events)for(r in e.events)i[r]?C.event.remove(n,r):C.removeEvent(n,r,e.handle);n[Q.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),C.fn.extend({detach:function(t){return $t(this,t,!0)},remove:function(t){return $t(this,t)},text:function(t){return W(this,(function(t){return void 0===t?C.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 Mt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ot(this,t).appendChild(t)}))},prepend:function(){return Mt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Ot(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Mt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Mt(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&&(C.cleanData(Dt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return C.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&&!_t.test(t)&&!bt[(gt.exec(t)||["",""])[1].toLowerCase()]){t=C.htmlPrefilter(t);try{for(;n=0&&(u+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-o-u-s-.5))||0),u}function re(t,e,n){var r=qt(t),i=(!v.boxSizingReliable()||n)&&"border-box"===C.css(t,"boxSizing",!1,r),o=i,a=Gt(t,e,r),s="offset"+e[0].toUpperCase()+e.slice(1);if(Rt.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&i||!v.reliableTrDimensions()&&_(t,"tr")||"auto"===a||!parseFloat(a)&&"inline"===C.css(t,"display",!1,r))&&t.getClientRects().length&&(i="border-box"===C.css(t,"boxSizing",!1,r),(o=s in t)&&(a=t[s])),(a=parseFloat(a)||0)+ne(t,e,n||(i?"border":"content"),o,r,a)+"px"}function ie(t,e,n,r,i){return new ie.prototype.init(t,e,n,r,i)}C.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,o,a,s=K(e),u=Ht.test(e),l=t.style;if(u||(e=Jt(s)),a=C.cssHooks[e]||C.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(t,!1,r))?i:l[e];"string"==(o=typeof n)&&(i=it.exec(n))&&i[1]&&(n=ct(t,e,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(C.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==e.indexOf("background")||(l[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,r))||(u?l.setProperty(e,n):l[e]=n))}},css:function(t,e,n,r){var i,o,a,s=K(e);return Ht.test(e)||(e=Jt(s)),(a=C.cssHooks[e]||C.cssHooks[s])&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=Gt(t,e,r)),"normal"===i&&e in te&&(i=te[e]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),C.each(["height","width"],(function(t,e){C.cssHooks[e]={get:function(t,n,r){if(n)return!Qt.test(C.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,o=qt(t),a=!v.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===C.css(t,"boxSizing",!1,o),u=r?ne(t,e,r,s,o):0;return s&&a&&(u-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(o[e])-ne(t,e,"border",!1,o)-.5)),u&&(i=it.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=C.css(t,e)),ee(0,n,u)}}})),C.cssHooks.marginLeft=Vt(v.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Gt(t,"marginLeft"))||t.getBoundingClientRect().left-Ut(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),C.each({margin:"",padding:"",border:"Width"},(function(t,e){C.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+ot[r]+e]=o[r]||o[r-2]||o[0];return i}},"margin"!==t&&(C.cssHooks[t+e].set=ee)})),C.fn.extend({css:function(t,e){return W(this,(function(t,e,n){var r,i,o={},a=0;if(Array.isArray(e)){for(r=qt(t),i=e.length;a1)}}),C.Tween=ie,ie.prototype={constructor:ie,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||C.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(C.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=C.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=C.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){C.fx.step[t.prop]?C.fx.step[t.prop](t):1!==t.elem.nodeType||!C.cssHooks[t.prop]&&null==t.elem.style[Jt(t.prop)]?t.elem[t.prop]=t.now:C.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)}},C.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},(C.fx=ie.prototype.init).step={};var oe,ae,se=/^(?:toggle|show|hide)$/,ue=/queueHooks$/;function le(){ae&&(!1===b.hidden&&r.requestAnimationFrame?r.requestAnimationFrame(le):r.setTimeout(le,C.fx.interval),C.fx.tick())}function ce(){return r.setTimeout((function(){oe=void 0})),oe=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=ot[r])]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function fe(t,e,n){for(var r,i=(pe.tweeners[e]||[]).concat(pe.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(t){return this.each((function(){C.removeAttr(this,t)}))}}),C.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?C.prop(t,e,n):(1===o&&C.isXMLDoc(t)||(i=C.attrHooks[e.toLowerCase()]||(C.expr.match.bool.test(e)?he:void 0)),void 0!==n?null===n?void C.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=C.find.attr(t,e))?void 0:r)},attrHooks:{type:{set:function(t,e){if(!v.radioValue&&"radio"===e&&_(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(M);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),he={set:function(t,e,n){return!1===e?C.removeAttr(t,n):t.setAttribute(n,n),n}},C.each(C.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=me[e]||C.find.attr;me[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=me[a],me[a]=i,i=null!=n(t,e,r)?a:null,me[a]=o),i}}));var ve=/^(?:input|select|textarea|button)$/i,ge=/^(?:a|area)$/i;function ye(t){return(t.match(M)||[]).join(" ")}function be(t){return t.getAttribute&&t.getAttribute("class")||""}function De(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(M)||[]}C.fn.extend({prop:function(t,e){return W(this,C.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[C.propFix[t]||t]}))}}),C.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&C.isXMLDoc(t)||(e=C.propFix[e]||e,i=C.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=C.find.attr(t,"tabindex");return e?parseInt(e,10):ve.test(t.nodeName)||ge.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(C.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)}}),C.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){C.propFix[this.toLowerCase()]=this})),C.fn.extend({addClass:function(t){var e,n,r,i,o,a;return g(t)?this.each((function(e){C(this).addClass(t.call(this,e,be(this)))})):(e=De(t)).length?this.each((function(){if(r=be(this),n=1===this.nodeType&&" "+ye(r)+" "){for(o=0;o-1;)n=n.replace(" "+i+" "," ");a=ye(n),r!==a&&this.setAttribute("class",a)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return g(t)?this.each((function(n){C(this).toggleClass(t.call(this,n,be(this),e),e)})):"boolean"==typeof e&&s?e?this.addClass(t):this.removeClass(t):(n=De(t),this.each((function(){if(s)for(o=C(this),i=0;i-1)return!0;return!1}});var we=/\r/g;C.fn.extend({val:function(t){var e,n,r,i=this[0];return arguments.length?(r=g(t),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?t.call(this,n,C(this).val()):t)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=C.map(i,(function(t){return null==t?"":t+""}))),(e=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))}))):i?(e=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(we,""):null==n?"":n:void 0}}),C.extend({valHooks:{option:{get:function(t){var e=C.find.attr(t,"value");return null!=e?e:ye(C.text(t))}},select:{get:function(t){var e,n,r,i=t.options,o=t.selectedIndex,a="select-one"===t.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),C.each(["radio","checkbox"],(function(){C.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=C.inArray(C(t).val(),e)>-1}},v.checkOn||(C.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),v.focusin="onfocusin"in r;var xe=/^(?:focusinfocus|focusoutblur)$/,Ee=function(t){t.stopPropagation()};C.extend(C.event,{trigger:function(t,e,n,i){var o,a,s,u,l,c,d,f,h=[n||b],m=p.call(t,"type")?t.type:t,v=p.call(t,"namespace")?t.namespace.split("."):[];if(a=f=s=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!xe.test(m+C.event.triggered)&&(m.indexOf(".")>-1&&(v=m.split("."),m=v.shift(),v.sort()),l=m.indexOf(":")<0&&"on"+m,(t=t[C.expando]?t:new C.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=v.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:C.makeArray(e,[t]),d=C.event.special[m]||{},i||!d.trigger||!1!==d.trigger.apply(n,e))){if(!i&&!d.noBubble&&!y(n)){for(u=d.delegateType||m,xe.test(u+m)||(a=a.parentNode);a;a=a.parentNode)h.push(a),s=a;s===(n.ownerDocument||b)&&h.push(s.defaultView||s.parentWindow||r)}for(o=0;(a=h[o++])&&!t.isPropagationStopped();)f=a,t.type=o>1?u:d.bindType||m,(c=(Q.get(a,"events")||Object.create(null))[t.type]&&Q.get(a,"handle"))&&c.apply(a,e),(c=l&&a[l])&&c.apply&&X(a)&&(t.result=c.apply(a,e),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(h.pop(),e)||!X(n)||l&&g(n[m])&&!y(n)&&((s=n[l])&&(n[l]=null),C.event.triggered=m,t.isPropagationStopped()&&f.addEventListener(m,Ee),n[m](),t.isPropagationStopped()&&f.removeEventListener(m,Ee),C.event.triggered=void 0,s&&(n[l]=s)),t.result}},simulate:function(t,e,n){var r=C.extend(new C.Event,n,{type:t,isSimulated:!0});C.event.trigger(r,null,e)}}),C.fn.extend({trigger:function(t,e){return this.each((function(){C.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return C.event.trigger(t,e,n,!0)}}),v.focusin||C.each({focus:"focusin",blur:"focusout"},(function(t,e){var n=function(t){C.event.simulate(e,t.target,C.event.fix(t))};C.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 Ce=r.location,Ae={guid:Date.now()},Fe=/\?/;C.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||C.error("Invalid XML: "+(n?C.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var Ne=/\[\]$/,Te=/\r?\n/g,Se=/^(?:submit|button|image|reset|file)$/i,_e=/^(?:input|select|textarea|keygen)/i;function ke(t,e,n,r){var i;if(Array.isArray(e))C.each(e,(function(e,i){n||Ne.test(t)?r(t,i):ke(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)}));else if(n||"object"!==x(e))r(t,e);else for(i in e)ke(t+"["+i+"]",e[i],n,r)}C.param=function(t,e){var n,r=[],i=function(t,e){var n=g(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!C.isPlainObject(t))C.each(t,(function(){i(this.name,this.value)}));else for(n in t)ke(n,t[n],e,i);return r.join("&")},C.fn.extend({serialize:function(){return C.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=C.prop(this,"elements");return t?C.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!C(this).is(":disabled")&&_e.test(this.nodeName)&&!Se.test(t)&&(this.checked||!vt.test(t))})).map((function(t,e){var n=C(this).val();return null==n?null:Array.isArray(n)?C.map(n,(function(t){return{name:e.name,value:t.replace(Te,"\r\n")}})):{name:e.name,value:n.replace(Te,"\r\n")}})).get()}});var Be=/%20/g,Oe=/#.*$/,Pe=/([?&])_=[^&]*/,je=/^(.*?):[ \t]*([^\r\n]*)$/gm,Le=/^(?:GET|HEAD)$/,Ie=/^\/\//,Me={},$e={},Re="*/".concat("*"),He=b.createElement("a");function qe(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(M)||[];if(g(n))for(;r=o[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={},o=t===$e;function a(s){var u;return i[s]=!0,C.each(t[s]||[],(function(t,s){var l=s(e,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(e.dataTypes.unshift(l),a(l),!1)})),u}return a(e.dataTypes[0])||!i["*"]&&a("*")}function ze(t,e){var n,r,i=C.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&C.extend(!0,t,r),t}He.href=Ce.href,C.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ce.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Ce.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Re,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":C.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?ze(ze(t,C.ajaxSettings),e):ze(C.ajaxSettings,t)},ajaxPrefilter:qe(Me),ajaxTransport:qe($e),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0);var n,i,o,a,s,u,l,c,d,f,p=C.ajaxSetup({},e=e||{}),h=p.context||p,m=p.context&&(h.nodeType||h.jquery)?C(h):C.event,v=C.Deferred(),g=C.Callbacks("once memory"),y=p.statusCode||{},D={},w={},x="canceled",E={readyState:0,getResponseHeader:function(t){var e;if(l){if(!a)for(a={};e=je.exec(o);)a[e[1].toLowerCase()+" "]=(a[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=a[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(t,e){return null==l&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,D[t]=e),this},overrideMimeType:function(t){return null==l&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(l)E.always(t[E.status]);else for(e in t)y[e]=[y[e],t[e]];return this},abort:function(t){var e=t||x;return n&&n.abort(e),A(0,e),this}};if(v.promise(E),p.url=((t||p.url||Ce.href)+"").replace(Ie,Ce.protocol+"//"),p.type=e.method||e.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(M)||[""],null==p.crossDomain){u=b.createElement("a");try{u.href=p.url,u.href=u.href,p.crossDomain=He.protocol+"//"+He.host!=u.protocol+"//"+u.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=C.param(p.data,p.traditional)),Ue(Me,p,e,E),l)return E;for(d in(c=C.event&&p.global)&&0==C.active++&&C.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Le.test(p.type),i=p.url.replace(Oe,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(Be,"+")):(f=p.url.slice(i.length),p.data&&(p.processData||"string"==typeof p.data)&&(i+=(Fe.test(i)?"&":"?")+p.data,delete p.data),!1===p.cache&&(i=i.replace(Pe,"$1"),f=(Fe.test(i)?"&":"?")+"_="+Ae.guid+++f),p.url=i+f),p.ifModified&&(C.lastModified[i]&&E.setRequestHeader("If-Modified-Since",C.lastModified[i]),C.etag[i]&&E.setRequestHeader("If-None-Match",C.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]?", "+Re+"; q=0.01":""):p.accepts["*"]),p.headers)E.setRequestHeader(d,p.headers[d]);if(p.beforeSend&&(!1===p.beforeSend.call(h,E,p)||l))return E.abort();if(x="abort",g.add(p.complete),E.done(p.success),E.fail(p.error),n=Ue($e,p,e,E)){if(E.readyState=1,c&&m.trigger("ajaxSend",[E,p]),l)return E;p.async&&p.timeout>0&&(s=r.setTimeout((function(){E.abort("timeout")}),p.timeout));try{l=!1,n.send(D,A)}catch(t){if(l)throw t;A(-1,t)}}else A(-1,"No Transport");function A(t,e,a,u){var d,f,b,D,w,x=e;l||(l=!0,s&&r.clearTimeout(s),n=void 0,o=u||"",E.readyState=t>0?4:0,d=t>=200&&t<300||304===t,a&&(D=function(t,e,n){for(var r,i,o,a,s=t.contents,u=t.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||t.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(p,E,a)),!d&&C.inArray("script",p.dataTypes)>-1&&C.inArray("json",p.dataTypes)<0&&(p.converters["text script"]=function(){}),D=function(t,e,n,r){var i,o,a,s,u,l={},c=t.dataTypes.slice();if(c[1])for(a in t.converters)l[a.toLowerCase()]=t.converters[a];for(o=c.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!u&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+u+" to "+o}}}return{state:"success",data:e}}(p,D,E,d),d?(p.ifModified&&((w=E.getResponseHeader("Last-Modified"))&&(C.lastModified[i]=w),(w=E.getResponseHeader("etag"))&&(C.etag[i]=w)),204===t||"HEAD"===p.type?x="nocontent":304===t?x="notmodified":(x=D.state,f=D.data,d=!(b=D.error))):(b=x,!t&&x||(x="error",t<0&&(t=0))),E.status=t,E.statusText=(e||x)+"",d?v.resolveWith(h,[f,x,E]):v.rejectWith(h,[E,x,b]),E.statusCode(y),y=void 0,c&&m.trigger(d?"ajaxSuccess":"ajaxError",[E,p,d?f:b]),g.fireWith(h,[E,x]),c&&(m.trigger("ajaxComplete",[E,p]),--C.active||C.event.trigger("ajaxStop")))}return E},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],(function(t,e){C[e]=function(t,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),C.ajax(C.extend({url:t,type:e,dataType:i,data:n,success:r},C.isPlainObject(t)&&t))}})),C.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),C._evalUrl=function(t,e,n){return C.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){C.globalEval(t,e,n)}})},C.fn.extend({wrapAll:function(t){var e;return this[0]&&(g(t)&&(t=t.call(this[0])),e=C(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 g(t)?this.each((function(e){C(this).wrapInner(t.call(this,e))})):this.each((function(){var e=C(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=g(t);return this.each((function(n){C(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){C(this).replaceWith(this.childNodes)})),this}}),C.expr.pseudos.hidden=function(t){return!C.expr.pseudos.visible(t)},C.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},C.ajaxSettings.xhr=function(){try{return new r.XMLHttpRequest}catch(t){}};var We={0:200,1223:204},Ge=C.ajaxSettings.xhr();v.cors=!!Ge&&"withCredentials"in Ge,v.ajax=Ge=!!Ge,C.ajaxTransport((function(t){var e,n;if(v.cors||Ge&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);e=function(t){return function(){e&&(e=n=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(We[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),n=s.onerror=s.ontimeout=e("error"),void 0!==s.onabort?s.onabort=n:s.onreadystatechange=function(){4===s.readyState&&r.setTimeout((function(){e&&n()}))},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),C.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),C.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 C.globalEval(t),t}}}),C.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),C.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(r,i){e=C("