diff --git a/extensions/approval/js/dist/forum.js b/extensions/approval/js/dist/forum.js
index 00687827a..7173ab3fe 100644
--- a/extensions/approval/js/dist/forum.js
+++ b/extensions/approval/js/dist/forum.js
@@ -1,2 +1,2 @@
-(()=>{var t={n:o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return t.d(r,{a:r}),r},d:(o,r)=>{for(var e in r)t.o(r,e)&&!t.o(o,e)&&Object.defineProperty(o,e,{enumerable:!0,get:r[e]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o)};(()=>{"use strict";const o=flarum.reg.get("core","common/extend"),r=flarum.reg.get("core","forum/app");var e=t.n(r);const a=flarum.reg.get("core","common/models/Discussion");var n=t.n(a);const p=flarum.reg.get("core","common/models/Post");var s=t.n(p);const i=flarum.reg.get("core","common/components/Badge");var c=t.n(i);const u=flarum.reg.get("core","forum/components/DiscussionListItem");var l=t.n(u);const d=flarum.reg.get("core","forum/components/Post");var v=t.n(d);const f=flarum.reg.get("core","forum/components/CommentPost");var g=t.n(f);const A=flarum.reg.get("core","common/components/Button");var h=t.n(A);const b=flarum.reg.get("core","forum/utils/PostControls");var y=t.n(b);e().initializers.add("flarum-approval",(()=>{n().prototype.isApproved=n().attribute("isApproved"),(0,o.extend)(n().prototype,"badges",(function(t){this.isApproved()||t.has("hidden")||t.add("awaitingApproval",m(c(),{type:"awaitingApproval",icon:"fas fa-gavel",label:e().translator.trans("flarum-approval.forum.badge.awaiting_approval_tooltip")}))})),s().prototype.isApproved=s().attribute("isApproved"),s().prototype.canApprove=s().attribute("canApprove"),(0,o.extend)(l().prototype,"elementAttrs",(function(t){this.attrs.discussion.isApproved()||(t.className+=" DiscussionListItem--unapproved")})),(0,o.extend)(v().prototype,"elementAttrs",(function(t){this.attrs.post.isApproved()||(t.className+=" Post--unapproved")})),(0,o.extend)(g().prototype,"headerItems",(function(t){this.attrs.post.isApproved()||this.attrs.post.isHidden()||t.add("unapproved",e().translator.trans("flarum-approval.forum.post.awaiting_approval_text"))})),(0,o.override)(v().prototype,"flagReason",(function(t,o){return"approval"===o.type()?e().translator.trans("flarum-approval.forum.post.awaiting_approval_text"):t(o)})),(0,o.extend)(y(),"destructiveControls",(function(t,o){!o.isApproved()&&o.canApprove()&&t.add("approve",m(h(),{icon:"fas fa-check",onclick:y().approveAction.bind(o)},e().translator.trans("flarum-approval.forum.post_controls.approve_button")),10)})),y().approveAction=function(){this.save({isApproved:!0}),1===this.number()&&this.discussion().pushAttributes({isApproved:!0})}}),-10)})(),module.exports={}})();
+(()=>{var t={n:o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return t.d(r,{a:r}),r},d:(o,r)=>{for(var e in r)t.o(r,e)&&!t.o(o,e)&&Object.defineProperty(o,e,{enumerable:!0,get:r[e]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o)};(()=>{"use strict";const o=flarum.reg.get("core","common/extend"),r=flarum.reg.get("core","forum/app");var e=t.n(r);const a=flarum.reg.get("core","common/models/Discussion");var n=t.n(a);const p=flarum.reg.get("core","common/models/Post");var s=t.n(p);const i=flarum.reg.get("core","common/components/Badge");var c=t.n(i);const u=flarum.reg.get("core","forum/components/DiscussionListItem");var l=t.n(u);const d=flarum.reg.get("core","forum/components/Post");var v=t.n(d);const f=flarum.reg.get("core","forum/components/CommentPost");var g=t.n(f);const A=flarum.reg.get("core","common/components/Button");var b=t.n(A);const h=flarum.reg.get("core","forum/utils/PostControls");var y=t.n(h);e().initializers.add("flarum-approval",(()=>{n().prototype.isApproved=n().attribute("isApproved"),(0,o.extend)(n().prototype,"badges",(function(t){this.isApproved()||t.has("hidden")||t.add("awaitingApproval",m(c(),{type:"awaitingApproval",icon:"fas fa-gavel",label:e().translator.trans("flarum-approval.forum.badge.awaiting_approval_tooltip"),tabindex:"0"}))})),s().prototype.isApproved=s().attribute("isApproved"),s().prototype.canApprove=s().attribute("canApprove"),(0,o.extend)(l().prototype,"elementAttrs",(function(t){this.attrs.discussion.isApproved()||(t.className+=" DiscussionListItem--unapproved")})),(0,o.extend)(v().prototype,"elementAttrs",(function(t){this.attrs.post.isApproved()||(t.className+=" Post--unapproved")})),(0,o.extend)(g().prototype,"headerItems",(function(t){this.attrs.post.isApproved()||this.attrs.post.isHidden()||t.add("unapproved",e().translator.trans("flarum-approval.forum.post.awaiting_approval_text"))})),(0,o.override)(v().prototype,"flagReason",(function(t,o){return"approval"===o.type()?e().translator.trans("flarum-approval.forum.post.awaiting_approval_text"):t(o)})),(0,o.extend)(y(),"destructiveControls",(function(t,o){!o.isApproved()&&o.canApprove()&&t.add("approve",m(b(),{icon:"fas fa-check",onclick:y().approveAction.bind(o)},e().translator.trans("flarum-approval.forum.post_controls.approve_button")),10)})),y().approveAction=function(){this.save({isApproved:!0}),1===this.number()&&this.discussion().pushAttributes({isApproved:!0})}}),-10)})(),module.exports={}})();
//# sourceMappingURL=forum.js.map
\ No newline at end of file
diff --git a/extensions/approval/js/dist/forum.js.map b/extensions/approval/js/dist/forum.js.map
index e8cf33860..c2f05e5aa 100644
--- a/extensions/approval/js/dist/forum.js.map
+++ b/extensions/approval/js/dist/forum.js.map
@@ -1 +1 @@
-{"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,I,mBCAlF,MAAM,EAA+BI,OAAOC,IAAIP,IAAI,OAAQ,iBCAtD,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,a,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,4B,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,sB,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,2B,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,uC,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,yB,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,gC,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,4B,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,4B,aCU5D,iBAAiBQ,IAAI,mBAAmB,KACtC,cAAqBC,WAAa,cAAqB,eACvD,IAAAC,QAAO,cAAsB,UAAU,SAAUC,GAC1CC,KAAKH,cAAiBE,EAAME,IAAI,WACnCF,EAAMH,IAAI,mBAAoBM,EAAE,IAAO,CACrCC,KAAM,mBACNC,KAAM,eACNC,MAAO,eAAeC,MAAM,2DAGlC,IACA,cAAeT,WAAa,cAAe,cAC3C,cAAeU,WAAa,cAAe,eAC3C,IAAAT,QAAO,cAA8B,gBAAgB,SAAUU,GACxDR,KAAKQ,MAAMC,WAAWZ,eACzBW,EAAME,WAAa,kCAEvB,KACA,IAAAZ,QAAO,cAAyB,gBAAgB,SAAUU,GACnDR,KAAKQ,MAAMG,KAAKd,eACnBW,EAAME,WAAa,oBAEvB,KACA,IAAAZ,QAAO,cAAuB,eAAe,SAAUC,GAChDC,KAAKQ,MAAMG,KAAKd,cAAiBG,KAAKQ,MAAMG,KAAKC,YACpDb,EAAMH,IAAI,aAAc,eAAeU,MAAM,qDAEjD,KACA,IAAAO,UAAS,cAAyB,cAAc,SAAUC,EAAUC,GAClE,MAAoB,aAAhBA,EAAKZ,OACA,eAAeG,MAAM,qDAEvBQ,EAASC,EAClB,KACA,IAAAjB,QAAO,IAAc,uBAAuB,SAAUC,EAAOY,IACtDA,EAAKd,cAAgBc,EAAKJ,cAC7BR,EAAMH,IAAI,UAAWM,EAAE,IAAQ,CAC7BE,KAAM,eACNY,QAAS,kBAA2BC,KAAKN,IACxC,eAAeL,MAAM,uDAAwD,GAEpF,IACA,kBAA6B,WAC3BN,KAAKkB,KAAK,CACRrB,YAAY,IAEQ,IAAlBG,KAAKmB,UACPnB,KAAKS,aAAaW,eAAe,CAC/BvB,YAAY,GAGlB,CAAC,IACC,G","sources":["webpack://@flarum/approval/webpack/bootstrap","webpack://@flarum/approval/webpack/runtime/compat get default export","webpack://@flarum/approval/webpack/runtime/define property getters","webpack://@flarum/approval/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/models/Post')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/components/DiscussionListItem')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/components/Post')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/components/CommentPost')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/utils/PostControls')\"","webpack://@flarum/approval/./src/forum/index.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))","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Post');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionListItem');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Post');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/CommentPost');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/PostControls');","import { extend, override } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Post from 'flarum/common/models/Post';\nimport Badge from 'flarum/common/components/Badge';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport PostComponent from 'flarum/forum/components/Post';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Button from 'flarum/common/components/Button';\nimport PostControls from 'flarum/forum/utils/PostControls';\napp.initializers.add('flarum-approval', () => {\n Discussion.prototype.isApproved = Discussion.attribute('isApproved');\n extend(Discussion.prototype, 'badges', function (items) {\n if (!this.isApproved() && !items.has('hidden')) {\n items.add('awaitingApproval', m(Badge, {\n type: \"awaitingApproval\",\n icon: \"fas fa-gavel\",\n label: app.translator.trans('flarum-approval.forum.badge.awaiting_approval_tooltip')\n }));\n }\n });\n Post.prototype.isApproved = Post.attribute('isApproved');\n Post.prototype.canApprove = Post.attribute('canApprove');\n extend(DiscussionListItem.prototype, 'elementAttrs', function (attrs) {\n if (!this.attrs.discussion.isApproved()) {\n attrs.className += ' DiscussionListItem--unapproved';\n }\n });\n extend(PostComponent.prototype, 'elementAttrs', function (attrs) {\n if (!this.attrs.post.isApproved()) {\n attrs.className += ' Post--unapproved';\n }\n });\n extend(CommentPost.prototype, 'headerItems', function (items) {\n if (!this.attrs.post.isApproved() && !this.attrs.post.isHidden()) {\n items.add('unapproved', app.translator.trans('flarum-approval.forum.post.awaiting_approval_text'));\n }\n });\n override(PostComponent.prototype, 'flagReason', function (original, flag) {\n if (flag.type() === 'approval') {\n return app.translator.trans('flarum-approval.forum.post.awaiting_approval_text');\n }\n return original(flag);\n });\n extend(PostControls, 'destructiveControls', function (items, post) {\n if (!post.isApproved() && post.canApprove()) {\n items.add('approve', m(Button, {\n icon: \"fas fa-check\",\n onclick: PostControls.approveAction.bind(post)\n }, app.translator.trans('flarum-approval.forum.post_controls.approve_button')), 10);\n }\n });\n PostControls.approveAction = function () {\n this.save({\n isApproved: true\n });\n if (this.number() === 1) {\n this.discussion().pushAttributes({\n isApproved: true\n });\n }\n };\n}, -10); // set initializer priority to run after reports"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","flarum","reg","add","isApproved","extend","items","this","has","m","type","icon","label","trans","canApprove","attrs","discussion","className","post","isHidden","override","original","flag","onclick","bind","save","number","pushAttributes"],"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,I,mBCAlF,MAAM,EAA+BI,OAAOC,IAAIP,IAAI,OAAQ,iBCAtD,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,a,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,4B,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,sB,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,2B,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,uC,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,yB,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,gC,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,4B,aCA5D,MAAM,EAA+BM,OAAOC,IAAIP,IAAI,OAAQ,4B,aCU5D,iBAAiBQ,IAAI,mBAAmB,KACtC,cAAqBC,WAAa,cAAqB,eACvD,IAAAC,QAAO,cAAsB,UAAU,SAAUC,GAC1CC,KAAKH,cAAiBE,EAAME,IAAI,WACnCF,EAAMH,IAAI,mBAAoBM,EAAE,IAAO,CACrCC,KAAM,mBACNC,KAAM,eACNC,MAAO,eAAeC,MAAM,yDAC5BC,SAAU,MAGhB,IACA,cAAeV,WAAa,cAAe,cAC3C,cAAeW,WAAa,cAAe,eAC3C,IAAAV,QAAO,cAA8B,gBAAgB,SAAUW,GACxDT,KAAKS,MAAMC,WAAWb,eACzBY,EAAME,WAAa,kCAEvB,KACA,IAAAb,QAAO,cAAyB,gBAAgB,SAAUW,GACnDT,KAAKS,MAAMG,KAAKf,eACnBY,EAAME,WAAa,oBAEvB,KACA,IAAAb,QAAO,cAAuB,eAAe,SAAUC,GAChDC,KAAKS,MAAMG,KAAKf,cAAiBG,KAAKS,MAAMG,KAAKC,YACpDd,EAAMH,IAAI,aAAc,eAAeU,MAAM,qDAEjD,KACA,IAAAQ,UAAS,cAAyB,cAAc,SAAUC,EAAUC,GAClE,MAAoB,aAAhBA,EAAKb,OACA,eAAeG,MAAM,qDAEvBS,EAASC,EAClB,KACA,IAAAlB,QAAO,IAAc,uBAAuB,SAAUC,EAAOa,IACtDA,EAAKf,cAAgBe,EAAKJ,cAC7BT,EAAMH,IAAI,UAAWM,EAAE,IAAQ,CAC7BE,KAAM,eACNa,QAAS,kBAA2BC,KAAKN,IACxC,eAAeN,MAAM,uDAAwD,GAEpF,IACA,kBAA6B,WAC3BN,KAAKmB,KAAK,CACRtB,YAAY,IAEQ,IAAlBG,KAAKoB,UACPpB,KAAKU,aAAaW,eAAe,CAC/BxB,YAAY,GAGlB,CAAC,IACC,G","sources":["webpack://@flarum/approval/webpack/bootstrap","webpack://@flarum/approval/webpack/runtime/compat get default export","webpack://@flarum/approval/webpack/runtime/define property getters","webpack://@flarum/approval/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/models/Post')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/components/DiscussionListItem')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/components/Post')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/components/CommentPost')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/approval/external root \"flarum.reg.get('core', 'forum/utils/PostControls')\"","webpack://@flarum/approval/./src/forum/index.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))","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Post');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionListItem');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Post');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/CommentPost');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/PostControls');","import { extend, override } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Post from 'flarum/common/models/Post';\nimport Badge from 'flarum/common/components/Badge';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport PostComponent from 'flarum/forum/components/Post';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Button from 'flarum/common/components/Button';\nimport PostControls from 'flarum/forum/utils/PostControls';\napp.initializers.add('flarum-approval', () => {\n Discussion.prototype.isApproved = Discussion.attribute('isApproved');\n extend(Discussion.prototype, 'badges', function (items) {\n if (!this.isApproved() && !items.has('hidden')) {\n items.add('awaitingApproval', m(Badge, {\n type: \"awaitingApproval\",\n icon: \"fas fa-gavel\",\n label: app.translator.trans('flarum-approval.forum.badge.awaiting_approval_tooltip'),\n tabindex: \"0\"\n }));\n }\n });\n Post.prototype.isApproved = Post.attribute('isApproved');\n Post.prototype.canApprove = Post.attribute('canApprove');\n extend(DiscussionListItem.prototype, 'elementAttrs', function (attrs) {\n if (!this.attrs.discussion.isApproved()) {\n attrs.className += ' DiscussionListItem--unapproved';\n }\n });\n extend(PostComponent.prototype, 'elementAttrs', function (attrs) {\n if (!this.attrs.post.isApproved()) {\n attrs.className += ' Post--unapproved';\n }\n });\n extend(CommentPost.prototype, 'headerItems', function (items) {\n if (!this.attrs.post.isApproved() && !this.attrs.post.isHidden()) {\n items.add('unapproved', app.translator.trans('flarum-approval.forum.post.awaiting_approval_text'));\n }\n });\n override(PostComponent.prototype, 'flagReason', function (original, flag) {\n if (flag.type() === 'approval') {\n return app.translator.trans('flarum-approval.forum.post.awaiting_approval_text');\n }\n return original(flag);\n });\n extend(PostControls, 'destructiveControls', function (items, post) {\n if (!post.isApproved() && post.canApprove()) {\n items.add('approve', m(Button, {\n icon: \"fas fa-check\",\n onclick: PostControls.approveAction.bind(post)\n }, app.translator.trans('flarum-approval.forum.post_controls.approve_button')), 10);\n }\n });\n PostControls.approveAction = function () {\n this.save({\n isApproved: true\n });\n if (this.number() === 1) {\n this.discussion().pushAttributes({\n isApproved: true\n });\n }\n };\n}, -10); // set initializer priority to run after reports"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","flarum","reg","add","isApproved","extend","items","this","has","m","type","icon","label","trans","tabindex","canApprove","attrs","discussion","className","post","isHidden","override","original","flag","onclick","bind","save","number","pushAttributes"],"sourceRoot":""}
\ No newline at end of file
diff --git a/extensions/lock/js/dist/forum.js b/extensions/lock/js/dist/forum.js
index ab0216203..420f4677c 100644
--- a/extensions/lock/js/dist/forum.js
+++ b/extensions/lock/js/dist/forum.js
@@ -1,2 +1,2 @@
-(()=>{var o={n:e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},d:(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(o,e)=>Object.prototype.hasOwnProperty.call(o,e),r:o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},e={};(()=>{"use strict";o.r(e),o.d(e,{extend:()=>N});const t=flarum.reg.get("core","common/extend"),n=flarum.reg.get("core","forum/app");var r=o.n(n);const s=flarum.reg.get("core","common/models/Discussion");var c=o.n(s);const a=flarum.reg.get("core","common/components/Badge");var i=o.n(a);const l=flarum.reg.get("core","forum/utils/DiscussionControls");var u=o.n(l);const d=flarum.reg.get("core","forum/components/DiscussionPage");var f=o.n(d);const k=flarum.reg.get("core","common/components/Button");var g=o.n(k);const p=flarum.reg.get("core","common/extenders");var b=o.n(p);const y=flarum.reg.get("core","forum/components/EventPost");var _=o.n(y);class v extends(_()){icon(){return this.attrs.post.content().locked?"fas fa-lock":"fas fa-unlock"}descriptionKey(){return this.attrs.post.content().locked?"flarum-lock.forum.post_stream.discussion_locked_text":"flarum-lock.forum.post_stream.discussion_unlocked_text"}}flarum.reg.add("flarum-lock","forum/components/DiscussionLockedPost",v);const x=flarum.reg.get("core","common/query/IGambit"),L=flarum.reg.get("core","common/app");var h=o.n(L);class P extends x.BooleanGambit{key(){return h().translator.trans("flarum-lock.lib.gambits.discussions.locked.key",{},!0)}filterKey(){return"locked"}}flarum.reg.add("flarum-lock","common/query/discussions/LockedGambit",P);const w=[(new(b().Search)).gambit("discussions",P)],S=flarum.reg.get("core","forum/components/Notification");var j=o.n(S);class D extends(j()){icon(){return"fas fa-lock"}href(){const o=this.attrs.notification;return r().route.discussion(o.subject(),o.content().postNumber)}content(){return r().translator.trans("flarum-lock.forum.notifications.discussion_locked_text",{user:this.attrs.notification.fromUser()})}excerpt(){return null}}flarum.reg.add("flarum-lock","forum/components/DiscussionLockedNotification",D);const N=[...w,(new(b().PostTypes)).add("discussionLocked",v),(new(b().Notification)).add("discussionLocked",D),new(b().Model)(c()).attribute("isLocked").attribute("canLock")];r().initializers.add("flarum-lock",(()=>{(0,t.extend)(c().prototype,"badges",(function(o){this.isLocked()&&o.add("locked",m(i(),{type:"locked",label:r().translator.trans("flarum-lock.forum.badge.locked_tooltip"),icon:"fas fa-lock"}))})),(0,t.extend)(u(),"moderationControls",(function(o,e){e.canLock()&&o.add("lock",m(g(),{icon:"fas fa-lock",onclick:this.lockAction.bind(e)},r().translator.trans(`flarum-lock.forum.discussion_controls.${e.isLocked()?"unlock":"lock"}_button`)))})),u().lockAction=function(){this.save({isLocked:!this.isLocked()}).then((()=>{r().current.matches(f())&&r().current.get("stream").update(),m.redraw()}))},(0,t.extend)("flarum/forum/components/NotificationGrid","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=e})();
+(()=>{var o={n:e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},d:(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(o,e)=>Object.prototype.hasOwnProperty.call(o,e),r:o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})}},e={};(()=>{"use strict";o.r(e),o.d(e,{extend:()=>N});const t=flarum.reg.get("core","common/extend"),n=flarum.reg.get("core","forum/app");var r=o.n(n);const s=flarum.reg.get("core","common/models/Discussion");var c=o.n(s);const a=flarum.reg.get("core","common/components/Badge");var i=o.n(a);const l=flarum.reg.get("core","forum/utils/DiscussionControls");var u=o.n(l);const d=flarum.reg.get("core","forum/components/DiscussionPage");var f=o.n(d);const k=flarum.reg.get("core","common/components/Button");var g=o.n(k);const p=flarum.reg.get("core","common/extenders");var b=o.n(p);const y=flarum.reg.get("core","forum/components/EventPost");var _=o.n(y);class v extends(_()){icon(){return this.attrs.post.content().locked?"fas fa-lock":"fas fa-unlock"}descriptionKey(){return this.attrs.post.content().locked?"flarum-lock.forum.post_stream.discussion_locked_text":"flarum-lock.forum.post_stream.discussion_unlocked_text"}}flarum.reg.add("flarum-lock","forum/components/DiscussionLockedPost",v);const x=flarum.reg.get("core","common/query/IGambit"),L=flarum.reg.get("core","common/app");var h=o.n(L);class P extends x.BooleanGambit{key(){return h().translator.trans("flarum-lock.lib.gambits.discussions.locked.key",{},!0)}filterKey(){return"locked"}}flarum.reg.add("flarum-lock","common/query/discussions/LockedGambit",P);const w=[(new(b().Search)).gambit("discussions",P)],S=flarum.reg.get("core","forum/components/Notification");var j=o.n(S);class D extends(j()){icon(){return"fas fa-lock"}href(){const o=this.attrs.notification;return r().route.discussion(o.subject(),o.content().postNumber)}content(){return r().translator.trans("flarum-lock.forum.notifications.discussion_locked_text",{user:this.attrs.notification.fromUser()})}excerpt(){return null}}flarum.reg.add("flarum-lock","forum/components/DiscussionLockedNotification",D);const N=[...w,(new(b().PostTypes)).add("discussionLocked",v),(new(b().Notification)).add("discussionLocked",D),new(b().Model)(c()).attribute("isLocked").attribute("canLock")];r().initializers.add("flarum-lock",(()=>{(0,t.extend)(c().prototype,"badges",(function(o){this.isLocked()&&o.add("locked",m(i(),{type:"locked",label:r().translator.trans("flarum-lock.forum.badge.locked_tooltip"),icon:"fas fa-lock",tabindex:"0"}))})),(0,t.extend)(u(),"moderationControls",(function(o,e){e.canLock()&&o.add("lock",m(g(),{icon:"fas fa-lock",onclick:this.lockAction.bind(e)},r().translator.trans(`flarum-lock.forum.discussion_controls.${e.isLocked()?"unlock":"lock"}_button`)))})),u().lockAction=function(){this.save({isLocked:!this.isLocked()}).then((()=>{r().current.matches(f())&&r().current.get("stream").update(),m.redraw()}))},(0,t.extend)("flarum/forum/components/NotificationGrid","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=e})();
//# 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 86fe4c414..029c72af1 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.reg.get('core', 'common/extend')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/utils/DiscussionControls')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/components/DiscussionPage')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/components/EventPost')\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedPost.js","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/lock/./src/common/query/discussions/LockedGambit.ts","webpack://@flarum/lock/./src/common/extend.ts","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/components/Notification')\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedNotification.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.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/DiscussionControls');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/EventPost');","import EventPost from 'flarum/forum/components/EventPost';\nexport default class DiscussionLockedPost extends EventPost {\n icon() {\n return this.attrs.post.content().locked ? 'fas fa-lock' : 'fas fa-unlock';\n }\n descriptionKey() {\n return this.attrs.post.content().locked ? 'flarum-lock.forum.post_stream.discussion_locked_text' : 'flarum-lock.forum.post_stream.discussion_unlocked_text';\n }\n}\nflarum.reg.add('flarum-lock', 'forum/components/DiscussionLockedPost', DiscussionLockedPost);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","import { BooleanGambit } from 'flarum/common/query/IGambit';\nimport app from 'flarum/common/app';\nexport default class LockedGambit extends BooleanGambit {\n key() {\n return app.translator.trans('flarum-lock.lib.gambits.discussions.locked.key', {}, true);\n }\n filterKey() {\n return 'locked';\n }\n}\nflarum.reg.add('flarum-lock', 'common/query/discussions/LockedGambit', LockedGambit);","import Extend from 'flarum/common/extenders';\nimport LockedGambit from './query/discussions/LockedGambit';\nexport default [new Extend.Search() //\n.gambit('discussions', LockedGambit)];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Notification');","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nexport default class DiscussionLockedNotification extends Notification {\n icon() {\n return 'fas fa-lock';\n }\n href() {\n const notification = this.attrs.notification;\n return app.route.discussion(notification.subject(), notification.content().postNumber);\n }\n content() {\n return app.translator.trans('flarum-lock.forum.notifications.discussion_locked_text', {\n user: this.attrs.notification.fromUser()\n });\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-lock', 'forum/components/DiscussionLockedNotification', DiscussionLockedNotification);","import Extend from 'flarum/common/extenders';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionLockedPost from './components/DiscussionLockedPost';\nimport commonExtend from '../common/extend';\nimport DiscussionLockedNotification from './components/DiscussionLockedNotification';\nexport default [...commonExtend, new Extend.PostTypes() //\n.add('discussionLocked', DiscussionLockedPost), new Extend.Notification() //\n.add('discussionLocked', DiscussionLockedNotification), new Extend.Model(Discussion) //\n.attribute('isLocked').attribute('canLock')];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport addLockBadge from './addLockBadge';\nimport addLockControl from './addLockControl';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-lock', () => {\n addLockBadge();\n addLockControl();\n extend('flarum/forum/components/NotificationGrid', '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});","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';\nexport default function addLockBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isLocked()) {\n badges.add('locked', m(Badge, {\n type: \"locked\",\n label: app.translator.trans('flarum-lock.forum.badge.locked_tooltip'),\n icon: \"fas fa-lock\"\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';\nexport default function addLockControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canLock()) {\n items.add('lock', m(Button, {\n icon: \"fas fa-lock\",\n onclick: this.lockAction.bind(discussion)\n }, app.translator.trans(`flarum-lock.forum.discussion_controls.${discussion.isLocked() ? 'unlock' : 'lock'}_button`)));\n }\n });\n DiscussionControls.lockAction = function () {\n this.save({\n isLocked: !this.isLocked()\n }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n m.redraw();\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","reg","DiscussionLockedPost","icon","this","attrs","post","content","locked","descriptionKey","add","LockedGambit","BooleanGambit","trans","filterKey","gambit","DiscussionLockedNotification","href","notification","discussion","subject","postNumber","user","fromUser","excerpt","attribute","extend","badges","isLocked","m","type","label","items","canLock","onclick","lockAction","bind","save","then","matches","update","redraw","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.reg.get('core', 'common/extend')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/utils/DiscussionControls')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/components/DiscussionPage')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/components/EventPost')\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedPost.js","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/lock/./src/common/query/discussions/LockedGambit.ts","webpack://@flarum/lock/./src/common/extend.ts","webpack://@flarum/lock/external root \"flarum.reg.get('core', 'forum/components/Notification')\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedNotification.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.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/DiscussionControls');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/EventPost');","import EventPost from 'flarum/forum/components/EventPost';\nexport default class DiscussionLockedPost extends EventPost {\n icon() {\n return this.attrs.post.content().locked ? 'fas fa-lock' : 'fas fa-unlock';\n }\n descriptionKey() {\n return this.attrs.post.content().locked ? 'flarum-lock.forum.post_stream.discussion_locked_text' : 'flarum-lock.forum.post_stream.discussion_unlocked_text';\n }\n}\nflarum.reg.add('flarum-lock', 'forum/components/DiscussionLockedPost', DiscussionLockedPost);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","import { BooleanGambit } from 'flarum/common/query/IGambit';\nimport app from 'flarum/common/app';\nexport default class LockedGambit extends BooleanGambit {\n key() {\n return app.translator.trans('flarum-lock.lib.gambits.discussions.locked.key', {}, true);\n }\n filterKey() {\n return 'locked';\n }\n}\nflarum.reg.add('flarum-lock', 'common/query/discussions/LockedGambit', LockedGambit);","import Extend from 'flarum/common/extenders';\nimport LockedGambit from './query/discussions/LockedGambit';\nexport default [new Extend.Search() //\n.gambit('discussions', LockedGambit)];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Notification');","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nexport default class DiscussionLockedNotification extends Notification {\n icon() {\n return 'fas fa-lock';\n }\n href() {\n const notification = this.attrs.notification;\n return app.route.discussion(notification.subject(), notification.content().postNumber);\n }\n content() {\n return app.translator.trans('flarum-lock.forum.notifications.discussion_locked_text', {\n user: this.attrs.notification.fromUser()\n });\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-lock', 'forum/components/DiscussionLockedNotification', DiscussionLockedNotification);","import Extend from 'flarum/common/extenders';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionLockedPost from './components/DiscussionLockedPost';\nimport commonExtend from '../common/extend';\nimport DiscussionLockedNotification from './components/DiscussionLockedNotification';\nexport default [...commonExtend, new Extend.PostTypes() //\n.add('discussionLocked', DiscussionLockedPost), new Extend.Notification() //\n.add('discussionLocked', DiscussionLockedNotification), new Extend.Model(Discussion) //\n.attribute('isLocked').attribute('canLock')];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport addLockBadge from './addLockBadge';\nimport addLockControl from './addLockControl';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-lock', () => {\n addLockBadge();\n addLockControl();\n extend('flarum/forum/components/NotificationGrid', '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});","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';\nexport default function addLockBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isLocked()) {\n badges.add('locked', m(Badge, {\n type: \"locked\",\n label: app.translator.trans('flarum-lock.forum.badge.locked_tooltip'),\n icon: \"fas fa-lock\",\n tabindex: \"0\"\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';\nexport default function addLockControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canLock()) {\n items.add('lock', m(Button, {\n icon: \"fas fa-lock\",\n onclick: this.lockAction.bind(discussion)\n }, app.translator.trans(`flarum-lock.forum.discussion_controls.${discussion.isLocked() ? 'unlock' : 'lock'}_button`)));\n }\n });\n DiscussionControls.lockAction = function () {\n this.save({\n isLocked: !this.isLocked()\n }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n m.redraw();\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","reg","DiscussionLockedPost","icon","this","attrs","post","content","locked","descriptionKey","add","LockedGambit","BooleanGambit","trans","filterKey","gambit","DiscussionLockedNotification","href","notification","discussion","subject","postNumber","user","fromUser","excerpt","attribute","extend","badges","isLocked","m","type","label","tabindex","items","canLock","onclick","lockAction","bind","save","then","matches","update","redraw","name"],"sourceRoot":""}
\ No newline at end of file
diff --git a/extensions/sticky/js/dist/forum.js b/extensions/sticky/js/dist/forum.js
index 44da573d2..09d8e454e 100644
--- a/extensions/sticky/js/dist/forum.js
+++ b/extensions/sticky/js/dist/forum.js
@@ -1,2 +1,2 @@
-(()=>{var t={n:e=>{var s=e&&e.__esModule?()=>e.default:()=>e;return t.d(s,{a:s}),s},d:(e,s)=>{for(var r in s)t.o(s,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:s[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e),t.d(e,{extend:()=>B});const s=flarum.reg.get("core","forum/app");var r=t.n(s);const o=flarum.reg.get("core","common/extend"),n=flarum.reg.get("core","common/models/Discussion");var c=t.n(n);const i=flarum.reg.get("core","common/components/Badge");var a=t.n(i);const u=flarum.reg.get("core","forum/utils/DiscussionControls");var l=t.n(u);const d=flarum.reg.get("core","forum/components/DiscussionPage");var f=t.n(d);const y=flarum.reg.get("core","common/components/Button");var g=t.n(y);const p=flarum.reg.get("core","forum/states/DiscussionListState");var k=t.n(p);const b=flarum.reg.get("core","forum/components/DiscussionListItem");var v=t.n(b);const S=flarum.reg.get("core","forum/components/IndexPage");var h=t.n(S);const x=flarum.reg.get("core","common/utils/string"),P=flarum.reg.get("core","common/utils/classList");var _=t.n(P);const D=flarum.reg.get("core","common/extenders");var w=t.n(D);const I=flarum.reg.get("core","forum/components/EventPost");var O=t.n(I);class j extends(O()){icon(){return"fas fa-thumbtack"}descriptionKey(){return this.attrs.post.content().sticky?"flarum-sticky.forum.post_stream.discussion_stickied_text":"flarum-sticky.forum.post_stream.discussion_unstickied_text"}}flarum.reg.add("flarum-sticky","forum/components/DiscussionStickiedPost",j);const q=flarum.reg.get("core","common/query/IGambit"),L=flarum.reg.get("core","common/app");var M=t.n(L);class A extends q.BooleanGambit{key(){return M().translator.trans("flarum-sticky.lib.gambits.discussions.sticky.key",{},!0)}filterKey(){return"sticky"}}flarum.reg.add("flarum-sticky","common/query/discussions/StickyGambit",A);const B=[(new(w().Search)).gambit("discussions",A),(new(w().PostTypes)).add("discussionStickied",j),new(w().Model)(c()).attribute("isSticky").attribute("canSticky")];r().initializers.add("flarum-sticky",(()=>{(0,o.extend)(c().prototype,"badges",(function(t){this.isSticky()&&t.add("sticky",m(a(),{type:"sticky",label:r().translator.trans("flarum-sticky.forum.badge.sticky_tooltip"),icon:"fas fa-thumbtack"}),10)})),(0,o.extend)(l(),"moderationControls",(function(t,e){e.canSticky()&&t.add("sticky",m(g(),{icon:"fas fa-thumbtack",onclick:this.stickyAction.bind(e)},r().translator.trans(`flarum-sticky.forum.discussion_controls.${e.isSticky()?"unsticky":"sticky"}_button`)))})),l().stickyAction=function(){this.save({isSticky:!this.isSticky()}).then((()=>{r().current.matches(f())&&r().current.get("stream").update(),m.redraw()}))},(0,o.extend)(k().prototype,"requestParams",(function(t){r().forum.attribute("excerptDisplayEnabled")&&(r().current.matches(h())||r().current.matches(f()))&&t.include.push("firstPost")})),(0,o.extend)(v().prototype,"infoItems",(function(t){const e=this.attrs.discussion;if(r().forum.attribute("excerptDisplayEnabled")&&e.isSticky()&&!this.attrs.params.q&&!e.lastReadPostNumber()){const s=e.firstPost();if(s){const e=(0,x.truncate)(s.contentPlain(),175);t.add("excerpt",m("div",null,e),-100)}}})),(0,o.extend)(v().prototype,"elementAttrs",(function(t){this.attrs.discussion.isSticky()&&(t.className=_()(t.className,"DiscussionListItem--sticky"))}))}))})(),module.exports=e})();
+(()=>{var t={n:e=>{var s=e&&e.__esModule?()=>e.default:()=>e;return t.d(s,{a:s}),s},d:(e,s)=>{for(var r in s)t.o(s,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:s[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e),t.d(e,{extend:()=>B});const s=flarum.reg.get("core","forum/app");var r=t.n(s);const o=flarum.reg.get("core","common/extend"),n=flarum.reg.get("core","common/models/Discussion");var c=t.n(n);const i=flarum.reg.get("core","common/components/Badge");var a=t.n(i);const u=flarum.reg.get("core","forum/utils/DiscussionControls");var l=t.n(u);const d=flarum.reg.get("core","forum/components/DiscussionPage");var f=t.n(d);const y=flarum.reg.get("core","common/components/Button");var g=t.n(y);const p=flarum.reg.get("core","forum/states/DiscussionListState");var k=t.n(p);const b=flarum.reg.get("core","forum/components/DiscussionListItem");var v=t.n(b);const S=flarum.reg.get("core","forum/components/IndexPage");var h=t.n(S);const x=flarum.reg.get("core","common/utils/string"),P=flarum.reg.get("core","common/utils/classList");var _=t.n(P);const D=flarum.reg.get("core","common/extenders");var w=t.n(D);const I=flarum.reg.get("core","forum/components/EventPost");var O=t.n(I);class j extends(O()){icon(){return"fas fa-thumbtack"}descriptionKey(){return this.attrs.post.content().sticky?"flarum-sticky.forum.post_stream.discussion_stickied_text":"flarum-sticky.forum.post_stream.discussion_unstickied_text"}}flarum.reg.add("flarum-sticky","forum/components/DiscussionStickiedPost",j);const q=flarum.reg.get("core","common/query/IGambit"),L=flarum.reg.get("core","common/app");var M=t.n(L);class A extends q.BooleanGambit{key(){return M().translator.trans("flarum-sticky.lib.gambits.discussions.sticky.key",{},!0)}filterKey(){return"sticky"}}flarum.reg.add("flarum-sticky","common/query/discussions/StickyGambit",A);const B=[(new(w().Search)).gambit("discussions",A),(new(w().PostTypes)).add("discussionStickied",j),new(w().Model)(c()).attribute("isSticky").attribute("canSticky")];r().initializers.add("flarum-sticky",(()=>{(0,o.extend)(c().prototype,"badges",(function(t){this.isSticky()&&t.add("sticky",m(a(),{type:"sticky",label:r().translator.trans("flarum-sticky.forum.badge.sticky_tooltip"),icon:"fas fa-thumbtack",tabindex:"0"}),10)})),(0,o.extend)(l(),"moderationControls",(function(t,e){e.canSticky()&&t.add("sticky",m(g(),{icon:"fas fa-thumbtack",onclick:this.stickyAction.bind(e)},r().translator.trans(`flarum-sticky.forum.discussion_controls.${e.isSticky()?"unsticky":"sticky"}_button`)))})),l().stickyAction=function(){this.save({isSticky:!this.isSticky()}).then((()=>{r().current.matches(f())&&r().current.get("stream").update(),m.redraw()}))},(0,o.extend)(k().prototype,"requestParams",(function(t){r().forum.attribute("excerptDisplayEnabled")&&(r().current.matches(h())||r().current.matches(f()))&&t.include.push("firstPost")})),(0,o.extend)(v().prototype,"infoItems",(function(t){const e=this.attrs.discussion;if(r().forum.attribute("excerptDisplayEnabled")&&e.isSticky()&&!this.attrs.params.q&&!e.lastReadPostNumber()){const s=e.firstPost();if(s){const e=(0,x.truncate)(s.contentPlain(),175);t.add("excerpt",m("div",null,e),-100)}}})),(0,o.extend)(v().prototype,"elementAttrs",(function(t){this.attrs.discussion.isSticky()&&(t.className=_()(t.className,"DiscussionListItem--sticky"))}))}))})(),module.exports=e})();
//# 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 6cb937807..aa25881aa 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.reg.get('core', 'forum/app')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/utils/DiscussionControls')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/DiscussionPage')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/states/DiscussionListState')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/DiscussionListItem')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/IndexPage')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/utils/string')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/utils/classList')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/EventPost')\"","webpack://@flarum/sticky/./src/forum/components/DiscussionStickiedPost.js","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/sticky/./src/common/query/discussions/StickyGambit.ts","webpack://@flarum/sticky/./src/common/extend.ts","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.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/DiscussionControls');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/states/DiscussionListState');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionListItem');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/IndexPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/string');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/classList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/EventPost');","import EventPost from 'flarum/forum/components/EventPost';\nexport default class DiscussionStickiedPost extends EventPost {\n icon() {\n return 'fas fa-thumbtack';\n }\n descriptionKey() {\n return this.attrs.post.content().sticky ? 'flarum-sticky.forum.post_stream.discussion_stickied_text' : 'flarum-sticky.forum.post_stream.discussion_unstickied_text';\n }\n}\nflarum.reg.add('flarum-sticky', 'forum/components/DiscussionStickiedPost', DiscussionStickiedPost);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","import { BooleanGambit } from 'flarum/common/query/IGambit';\nimport app from 'flarum/common/app';\nexport default class StickyGambit extends BooleanGambit {\n key() {\n return app.translator.trans('flarum-sticky.lib.gambits.discussions.sticky.key', {}, true);\n }\n filterKey() {\n return 'sticky';\n }\n}\nflarum.reg.add('flarum-sticky', 'common/query/discussions/StickyGambit', StickyGambit);","import Extend from 'flarum/common/extenders';\nimport StickyGambit from './query/discussions/StickyGambit';\nexport default [new Extend.Search() //\n.gambit('discussions', StickyGambit)];","import Extend from 'flarum/common/extenders';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionStickiedPost from './components/DiscussionStickiedPost';\nimport commonExtend from '../common/extend';\nexport default [...commonExtend, new Extend.PostTypes() //\n.add('discussionStickied', DiscussionStickiedPost), new Extend.Model(Discussion) //\n.attribute('isSticky').attribute('canSticky')];","import app from 'flarum/forum/app';\nimport addStickyBadge from './addStickyBadge';\nimport addStickyControl from './addStickyControl';\nimport addStickyExcerpt from './addStickyExcerpt';\nimport addStickyClass from './addStickyClass';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-sticky', () => {\n addStickyBadge();\n addStickyControl();\n addStickyExcerpt();\n addStickyClass();\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';\nexport default function addStickyBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isSticky()) {\n badges.add('sticky', m(Badge, {\n type: \"sticky\",\n label: app.translator.trans('flarum-sticky.forum.badge.sticky_tooltip'),\n icon: \"fas fa-thumbtack\"\n }), 10);\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';\nexport default function addStickyControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canSticky()) {\n items.add('sticky', m(Button, {\n icon: \"fas fa-thumbtack\",\n onclick: this.stickyAction.bind(discussion)\n }, app.translator.trans(`flarum-sticky.forum.discussion_controls.${discussion.isSticky() ? 'unsticky' : 'sticky'}_button`)));\n }\n });\n DiscussionControls.stickyAction = function () {\n this.save({\n isSticky: !this.isSticky()\n }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n m.redraw();\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';\nexport default function addStickyExcerpt() {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.forum.attribute('excerptDisplayEnabled') && (app.current.matches(IndexPage) || app.current.matches(DiscussionPage))) {\n params.include.push('firstPost');\n }\n });\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const discussion = this.attrs.discussion;\n if (app.forum.attribute('excerptDisplayEnabled') && discussion.isSticky() && !this.attrs.params.q && !discussion.lastReadPostNumber()) {\n const firstPost = discussion.firstPost();\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', m(\"div\", null, excerpt), -100);\n }\n }\n });\n}","import { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\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}"],"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","reg","DiscussionStickiedPost","icon","descriptionKey","this","attrs","post","content","sticky","add","StickyGambit","BooleanGambit","trans","filterKey","gambit","attribute","extend","badges","isSticky","m","type","label","items","discussion","canSticky","onclick","stickyAction","bind","save","then","matches","update","redraw","params","include","push","q","lastReadPostNumber","firstPost","excerpt","truncate","contentPlain","className"],"sourceRoot":""}
\ No newline at end of file
+{"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.reg.get('core', 'forum/app')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/utils/DiscussionControls')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/DiscussionPage')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/states/DiscussionListState')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/DiscussionListItem')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/IndexPage')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/utils/string')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/utils/classList')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'forum/components/EventPost')\"","webpack://@flarum/sticky/./src/forum/components/DiscussionStickiedPost.js","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/sticky/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/sticky/./src/common/query/discussions/StickyGambit.ts","webpack://@flarum/sticky/./src/common/extend.ts","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.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/DiscussionControls');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/states/DiscussionListState');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionListItem');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/IndexPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/string');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/classList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/EventPost');","import EventPost from 'flarum/forum/components/EventPost';\nexport default class DiscussionStickiedPost extends EventPost {\n icon() {\n return 'fas fa-thumbtack';\n }\n descriptionKey() {\n return this.attrs.post.content().sticky ? 'flarum-sticky.forum.post_stream.discussion_stickied_text' : 'flarum-sticky.forum.post_stream.discussion_unstickied_text';\n }\n}\nflarum.reg.add('flarum-sticky', 'forum/components/DiscussionStickiedPost', DiscussionStickiedPost);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","import { BooleanGambit } from 'flarum/common/query/IGambit';\nimport app from 'flarum/common/app';\nexport default class StickyGambit extends BooleanGambit {\n key() {\n return app.translator.trans('flarum-sticky.lib.gambits.discussions.sticky.key', {}, true);\n }\n filterKey() {\n return 'sticky';\n }\n}\nflarum.reg.add('flarum-sticky', 'common/query/discussions/StickyGambit', StickyGambit);","import Extend from 'flarum/common/extenders';\nimport StickyGambit from './query/discussions/StickyGambit';\nexport default [new Extend.Search() //\n.gambit('discussions', StickyGambit)];","import Extend from 'flarum/common/extenders';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionStickiedPost from './components/DiscussionStickiedPost';\nimport commonExtend from '../common/extend';\nexport default [...commonExtend, new Extend.PostTypes() //\n.add('discussionStickied', DiscussionStickiedPost), new Extend.Model(Discussion) //\n.attribute('isSticky').attribute('canSticky')];","import app from 'flarum/forum/app';\nimport addStickyBadge from './addStickyBadge';\nimport addStickyControl from './addStickyControl';\nimport addStickyExcerpt from './addStickyExcerpt';\nimport addStickyClass from './addStickyClass';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-sticky', () => {\n addStickyBadge();\n addStickyControl();\n addStickyExcerpt();\n addStickyClass();\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';\nexport default function addStickyBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isSticky()) {\n badges.add('sticky', m(Badge, {\n type: \"sticky\",\n label: app.translator.trans('flarum-sticky.forum.badge.sticky_tooltip'),\n icon: \"fas fa-thumbtack\",\n tabindex: \"0\"\n }), 10);\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';\nexport default function addStickyControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canSticky()) {\n items.add('sticky', m(Button, {\n icon: \"fas fa-thumbtack\",\n onclick: this.stickyAction.bind(discussion)\n }, app.translator.trans(`flarum-sticky.forum.discussion_controls.${discussion.isSticky() ? 'unsticky' : 'sticky'}_button`)));\n }\n });\n DiscussionControls.stickyAction = function () {\n this.save({\n isSticky: !this.isSticky()\n }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n m.redraw();\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';\nexport default function addStickyExcerpt() {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.forum.attribute('excerptDisplayEnabled') && (app.current.matches(IndexPage) || app.current.matches(DiscussionPage))) {\n params.include.push('firstPost');\n }\n });\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const discussion = this.attrs.discussion;\n if (app.forum.attribute('excerptDisplayEnabled') && discussion.isSticky() && !this.attrs.params.q && !discussion.lastReadPostNumber()) {\n const firstPost = discussion.firstPost();\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', m(\"div\", null, excerpt), -100);\n }\n }\n });\n}","import { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\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}"],"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","reg","DiscussionStickiedPost","icon","descriptionKey","this","attrs","post","content","sticky","add","StickyGambit","BooleanGambit","trans","filterKey","gambit","attribute","extend","badges","isSticky","m","type","label","tabindex","items","discussion","canSticky","onclick","stickyAction","bind","save","then","matches","update","redraw","params","include","push","q","lastReadPostNumber","firstPost","excerpt","truncate","contentPlain","className"],"sourceRoot":""}
\ No newline at end of file
diff --git a/extensions/subscriptions/js/dist/forum.js b/extensions/subscriptions/js/dist/forum.js
index a07ebea0e..ac8dde8a5 100644
--- a/extensions/subscriptions/js/dist/forum.js
+++ b/extensions/subscriptions/js/dist/forum.js
@@ -1,2 +1,2 @@
-(()=>{var o={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return o.d(s,{a:s}),s},d:(t,s)=>{for(var n in s)o.o(s,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},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:()=>V});const s=flarum.reg.get("core","common/extend"),n=flarum.reg.get("core","forum/app");var r=o.n(n);const e=flarum.reg.get("core","common/models/Discussion");var i=o.n(e);const a=flarum.reg.get("core","common/components/Badge");var l=o.n(a);const u=flarum.reg.get("core","common/components/Button");var c=o.n(u);const f=flarum.reg.get("core","forum/components/DiscussionPage");var p=o.n(f);const b=flarum.reg.get("core","forum/utils/DiscussionControls");var g=o.n(b);function d(o){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},d(o)}function _(o,t,s){return(t=function(o){var t=function(o){if("object"!=d(o)||!o)return o;var t=o[Symbol.toPrimitive];if(void 0!==t){var s=t.call(o,"string");if("object"!=d(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(o)}(o);return"symbol"==d(t)?t:t+""}(t))in o?Object.defineProperty(o,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):o[t]=s,o}const y=flarum.reg.get("core","common/components/Dropdown");var w=o.n(y);const v=flarum.reg.get("core","common/utils/extractText");var h=o.n(v);const S=flarum.reg.get("core","common/components/DetailedDropdownItem");var x=o.n(S);const P=flarum.reg.get("core","common/components/SplitDropdown");var A=o.n(P);class N extends(w()){constructor(){super(...arguments),_(this,"options",[{subscription:null,icon:"far fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.not_following_button"),description:r().translator.trans("flarum-subscriptions.forum.sub_controls.not_following_text")},{subscription:"follow",icon:"fas fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.following_button"),description:r().translator.trans("flarum-subscriptions.forum.sub_controls.following_text")},{subscription:"ignore",icon:"far fa-eye-slash",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.ignoring_button"),description:r().translator.trans("flarum-subscriptions.forum.sub_controls.ignoring_text")}]),_(this,"possibleButtonAttrs",{null:{icon:"far fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.follow_button")},follow:{icon:"fas fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.following_button")},ignore:{icon:"far fa-eye-slash",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.ignoring_button")}})}view(){const o=this.attrs.discussion,t=o.subscription(),s=this.possibleButtonAttrs[t??"null"]??this.possibleButtonAttrs.null,n=r().session.user.preferences(),e=n.notify_newPost_email,i=n.notify_newPost_alert,a=h()(r().translator.trans(e?"flarum-subscriptions.forum.sub_controls.notify_email_tooltip":"flarum-subscriptions.forum.sub_controls.notify_alert_tooltip")),l=(e||i)&&null===t;return m(A(),{className:"SubscriptionMenu",buttonClassName:`SubscriptionMenu-button--${t}`,tooltip:l?a:null,mainAction:m(c(),{className:"SubscriptionMenu-button",icon:s.icon,onclick:this.saveSubscription.bind(this,o,-1!==["follow","ignore"].indexOf(t)?null:"follow")},s.label)},this.options.map((s=>m(x(),Object.assign({},s,{onclick:this.saveSubscription.bind(this,o,s.subscription),active:t===s.subscription})))))}saveSubscription(o,t){o.save({subscription:t}),this.$(".SubscriptionMenu-button").tooltip("hide")}}flarum.reg.add("flarum-subscriptions","forum/components/SubscriptionMenu",N);const k=flarum.reg.get("core","common/components/LinkButton");var j=o.n(k);const M=flarum.reg.get("core","forum/components/IndexPage");var D=o.n(M);const F=flarum.reg.get("core","forum/components/IndexSidebar");var L=o.n(F);const O=flarum.reg.get("core","forum/states/DiscussionListState");var B=o.n(O);const I=flarum.reg.get("core","forum/states/GlobalSearchState");var R=o.n(I);const T=flarum.reg.get("core","common/components/Switch");var G=o.n(T);const $=flarum.reg.get("core","common/extenders");var q=o.n($);const C=flarum.reg.get("core","common/app");var K=o.n(C);const z=flarum.reg.get("core","common/query/IGambit");class E extends z.BooleanGambit{key(){return[K().translator.trans("flarum-subscriptions.lib.gambits.discussions.subscription.following_key",{},!0),K().translator.trans("flarum-subscriptions.lib.gambits.discussions.subscription.ignoring_key",{},!0)]}toFilter(o,t){const s=(t?"-":"")+this.filterKey();return{[s]:o[1]}}filterKey(){return"subscription"}fromFilter(o,t){return`${t?"-":""}is:${o}`}enabled(){return!!K().session.user}}flarum.reg.add("flarum-subscriptions","common/query/discussions/SubscriptionGambit",E);const U=[(new(q().Search)).gambit("discussions",E)],H=flarum.reg.get("core","forum/components/Notification");var J=o.n(H);class Q extends(J()){icon(){return"fas fa-star"}href(){const o=this.attrs.notification,t=o.subject(),s=o.content()||{};return r().route.discussion(t,s.postNumber)}content(){return r().translator.trans("flarum-subscriptions.forum.notifications.new_post_text",{user:this.attrs.notification.fromUser()})}excerpt(){return null}}flarum.reg.add("flarum-subscriptions","forum/components/NewPostNotification",Q);const V=[...U,(new(q().Routes)).add("following","/following",D()),(new(q().Notification)).add("newPost",Q),new(q().Model)(i()).attribute("subscription")];r().initializers.add("flarum-subscriptions",(()=>{(0,s.extend)(i().prototype,"badges",(function(o){let t;switch(this.subscription()){case"follow":t=m(l(),{label:r().translator.trans("flarum-subscriptions.forum.badge.following_tooltip"),icon:"fas fa-star",type:"following"});break;case"ignore":t=m(l(),{label:r().translator.trans("flarum-subscriptions.forum.badge.ignoring_tooltip"),icon:"far fa-eye-slash",type:"ignoring"})}t&&o.add("subscription",t)})),(0,s.extend)(g(),"userControls",(function(o,t,s){if(r().session.user&&!(s instanceof p())){const s={none:{label:r().translator.trans("flarum-subscriptions.forum.discussion_controls.follow_button"),icon:"fas fa-star",save:"follow"},follow:{label:r().translator.trans("flarum-subscriptions.forum.discussion_controls.unfollow_button"),icon:"far fa-star",save:null},ignore:{label:r().translator.trans("flarum-subscriptions.forum.discussion_controls.unignore_button"),icon:"fas fa-eye",save:null}},n=t.subscription()||"none";o.add("subscription",m(c(),{icon:s[n].icon,onclick:t.save.bind(t,{subscription:s[n].save})},s[n].label))}})),(0,s.extend)(p().prototype,"sidebarItems",(function(o){if(r().session.user){const t=this.discussion;o.add("subscription",m(N,{discussion:t}),80)}})),(0,s.extend)(L().prototype,"navItems",(function(o){if(r().session.user){const t=r().search.state.stickyParams();o.add("following",m(j(),{href:r().route("following",t),icon:"fas fa-star"},r().translator.trans("flarum-subscriptions.forum.index.following_link")),50)}})),(0,s.extend)(D().prototype,"setTitle",(function(){"following"===r().current.get("routeName")&&r().setTitle(r().translator.trans("flarum-subscriptions.forum.following.meta_title_text"))})),(0,s.extend)(R().prototype,"params",(function(o){o.onFollowing="following"===r().current.get("routeName")})),(0,s.extend)(B().prototype,"requestParams",(function(o){this.params.onFollowing&&(o.filter||={},o.filter.subscription="following")})),(0,s.extend)("flarum/forum/components/SettingsPage","notificationsItems",(function(o){o.add("followAfterReply",m(G(),{state:this.user.preferences().followAfterReply,onchange:o=>{this.followAfterReplyLoading=!0,this.user.savePreferences({followAfterReply:o}).then((()=>{this.followAfterReplyLoading=!1,m.redraw()}))},loading:this.followAfterReplyLoading},r().translator.trans("flarum-subscriptions.forum.settings.follow_after_reply_label"))),o.add("notifyForAllPosts",m(G(),{id:"flarum_subscriptions__notify_for_all_posts",state:!!this.user.preferences()?.["flarum-subscriptions.notify_for_all_posts"],onchange:o=>{this.notifyForAllPostsLoading=!0,this.user.savePreferences({"flarum-subscriptions.notify_for_all_posts":o}).then((()=>{this.notifyForAllPostsLoading=!1,m.redraw()}))},loading:this.notifyForAllPostsLoading},r().translator.trans("flarum-subscriptions.forum.settings.notify_for_all_posts_label")))})),(0,s.extend)("flarum/forum/components/NotificationGrid","notificationTypes",(function(o){o.add("newPost",{name:"newPost",icon:"fas fa-star",label:r().translator.trans("flarum-subscriptions.forum.settings.notify_new_post_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 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:()=>V});const n=flarum.reg.get("core","common/extend"),s=flarum.reg.get("core","forum/app");var r=o.n(s);const e=flarum.reg.get("core","common/models/Discussion");var i=o.n(e);const a=flarum.reg.get("core","common/components/Badge");var l=o.n(a);const u=flarum.reg.get("core","common/components/Button");var c=o.n(u);const f=flarum.reg.get("core","forum/components/DiscussionPage");var b=o.n(f);const p=flarum.reg.get("core","forum/utils/DiscussionControls");var g=o.n(p);function d(o){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},d(o)}function _(o,t,n){return(t=function(o){var t=function(o){if("object"!=d(o)||!o)return o;var t=o[Symbol.toPrimitive];if(void 0!==t){var n=t.call(o,"string");if("object"!=d(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(o)}(o);return"symbol"==d(t)?t:t+""}(t))in o?Object.defineProperty(o,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):o[t]=n,o}const y=flarum.reg.get("core","common/components/Dropdown");var w=o.n(y);const v=flarum.reg.get("core","common/utils/extractText");var h=o.n(v);const x=flarum.reg.get("core","common/components/DetailedDropdownItem");var S=o.n(x);const P=flarum.reg.get("core","common/components/SplitDropdown");var A=o.n(P);class N extends(w()){constructor(){super(...arguments),_(this,"options",[{subscription:null,icon:"far fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.not_following_button"),description:r().translator.trans("flarum-subscriptions.forum.sub_controls.not_following_text")},{subscription:"follow",icon:"fas fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.following_button"),description:r().translator.trans("flarum-subscriptions.forum.sub_controls.following_text")},{subscription:"ignore",icon:"far fa-eye-slash",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.ignoring_button"),description:r().translator.trans("flarum-subscriptions.forum.sub_controls.ignoring_text")}]),_(this,"possibleButtonAttrs",{null:{icon:"far fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.follow_button")},follow:{icon:"fas fa-star",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.following_button")},ignore:{icon:"far fa-eye-slash",label:r().translator.trans("flarum-subscriptions.forum.sub_controls.ignoring_button")}})}view(){const o=this.attrs.discussion,t=o.subscription(),n=this.possibleButtonAttrs[t??"null"]??this.possibleButtonAttrs.null,s=r().session.user.preferences(),e=s.notify_newPost_email,i=s.notify_newPost_alert,a=h()(r().translator.trans(e?"flarum-subscriptions.forum.sub_controls.notify_email_tooltip":"flarum-subscriptions.forum.sub_controls.notify_alert_tooltip")),l=(e||i)&&null===t;return m(A(),{className:"SubscriptionMenu",buttonClassName:`SubscriptionMenu-button--${t}`,tooltip:l?a:null,mainAction:m(c(),{className:"SubscriptionMenu-button",icon:n.icon,onclick:this.saveSubscription.bind(this,o,-1!==["follow","ignore"].indexOf(t)?null:"follow")},n.label)},this.options.map((n=>m(S(),Object.assign({},n,{onclick:this.saveSubscription.bind(this,o,n.subscription),active:t===n.subscription})))))}saveSubscription(o,t){o.save({subscription:t}),this.$(".SubscriptionMenu-button").tooltip("hide")}}flarum.reg.add("flarum-subscriptions","forum/components/SubscriptionMenu",N);const k=flarum.reg.get("core","common/components/LinkButton");var j=o.n(k);const M=flarum.reg.get("core","forum/components/IndexPage");var D=o.n(M);const F=flarum.reg.get("core","forum/components/IndexSidebar");var L=o.n(F);const O=flarum.reg.get("core","forum/states/DiscussionListState");var B=o.n(O);const I=flarum.reg.get("core","forum/states/GlobalSearchState");var R=o.n(I);const T=flarum.reg.get("core","common/components/Switch");var G=o.n(T);const $=flarum.reg.get("core","common/extenders");var q=o.n($);const C=flarum.reg.get("core","common/app");var K=o.n(C);const z=flarum.reg.get("core","common/query/IGambit");class E extends z.BooleanGambit{key(){return[K().translator.trans("flarum-subscriptions.lib.gambits.discussions.subscription.following_key",{},!0),K().translator.trans("flarum-subscriptions.lib.gambits.discussions.subscription.ignoring_key",{},!0)]}toFilter(o,t){const n=(t?"-":"")+this.filterKey();return{[n]:o[1]}}filterKey(){return"subscription"}fromFilter(o,t){return`${t?"-":""}is:${o}`}enabled(){return!!K().session.user}}flarum.reg.add("flarum-subscriptions","common/query/discussions/SubscriptionGambit",E);const U=[(new(q().Search)).gambit("discussions",E)],H=flarum.reg.get("core","forum/components/Notification");var J=o.n(H);class Q extends(J()){icon(){return"fas fa-star"}href(){const o=this.attrs.notification,t=o.subject(),n=o.content()||{};return r().route.discussion(t,n.postNumber)}content(){return r().translator.trans("flarum-subscriptions.forum.notifications.new_post_text",{user:this.attrs.notification.fromUser()})}excerpt(){return null}}flarum.reg.add("flarum-subscriptions","forum/components/NewPostNotification",Q);const V=[...U,(new(q().Routes)).add("following","/following",D()),(new(q().Notification)).add("newPost",Q),new(q().Model)(i()).attribute("subscription")];r().initializers.add("flarum-subscriptions",(()=>{(0,n.extend)(i().prototype,"badges",(function(o){let t;switch(this.subscription()){case"follow":t=m(l(),{label:r().translator.trans("flarum-subscriptions.forum.badge.following_tooltip"),icon:"fas fa-star",type:"following",tabindex:"0"});break;case"ignore":t=m(l(),{label:r().translator.trans("flarum-subscriptions.forum.badge.ignoring_tooltip"),icon:"far fa-eye-slash",type:"ignoring",tabindex:"0"})}t&&o.add("subscription",t)})),(0,n.extend)(g(),"userControls",(function(o,t,n){if(r().session.user&&!(n instanceof b())){const n={none:{label:r().translator.trans("flarum-subscriptions.forum.discussion_controls.follow_button"),icon:"fas fa-star",save:"follow"},follow:{label:r().translator.trans("flarum-subscriptions.forum.discussion_controls.unfollow_button"),icon:"far fa-star",save:null},ignore:{label:r().translator.trans("flarum-subscriptions.forum.discussion_controls.unignore_button"),icon:"fas fa-eye",save:null}},s=t.subscription()||"none";o.add("subscription",m(c(),{icon:n[s].icon,onclick:t.save.bind(t,{subscription:n[s].save})},n[s].label))}})),(0,n.extend)(b().prototype,"sidebarItems",(function(o){if(r().session.user){const t=this.discussion;o.add("subscription",m(N,{discussion:t}),80)}})),(0,n.extend)(L().prototype,"navItems",(function(o){if(r().session.user){const t=r().search.state.stickyParams();o.add("following",m(j(),{href:r().route("following",t),icon:"fas fa-star"},r().translator.trans("flarum-subscriptions.forum.index.following_link")),50)}})),(0,n.extend)(D().prototype,"setTitle",(function(){"following"===r().current.get("routeName")&&r().setTitle(r().translator.trans("flarum-subscriptions.forum.following.meta_title_text"))})),(0,n.extend)(R().prototype,"params",(function(o){o.onFollowing="following"===r().current.get("routeName")})),(0,n.extend)(B().prototype,"requestParams",(function(o){this.params.onFollowing&&(o.filter||={},o.filter.subscription="following")})),(0,n.extend)("flarum/forum/components/SettingsPage","notificationsItems",(function(o){o.add("followAfterReply",m(G(),{state:this.user.preferences().followAfterReply,onchange:o=>{this.followAfterReplyLoading=!0,this.user.savePreferences({followAfterReply:o}).then((()=>{this.followAfterReplyLoading=!1,m.redraw()}))},loading:this.followAfterReplyLoading},r().translator.trans("flarum-subscriptions.forum.settings.follow_after_reply_label"))),o.add("notifyForAllPosts",m(G(),{id:"flarum_subscriptions__notify_for_all_posts",state:!!this.user.preferences()?.["flarum-subscriptions.notify_for_all_posts"],onchange:o=>{this.notifyForAllPostsLoading=!0,this.user.savePreferences({"flarum-subscriptions.notify_for_all_posts":o}).then((()=>{this.notifyForAllPostsLoading=!1,m.redraw()}))},loading:this.notifyForAllPostsLoading},r().translator.trans("flarum-subscriptions.forum.settings.notify_for_all_posts_label")))})),(0,n.extend)("flarum/forum/components/NotificationGrid","notificationTypes",(function(o){o.add("newPost",{name:"newPost",icon:"fas fa-star",label:r().translator.trans("flarum-subscriptions.forum.settings.notify_new_post_label")})}))}))})(),module.exports=t})();
//# sourceMappingURL=forum.js.map
\ No newline at end of file
diff --git a/extensions/subscriptions/js/dist/forum.js.map b/extensions/subscriptions/js/dist/forum.js.map
index ced4d365c..c7fdd4c3d 100644
--- a/extensions/subscriptions/js/dist/forum.js.map
+++ b/extensions/subscriptions/js/dist/forum.js.map
@@ -1 +1 @@
-{"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.reg.get('core', 'common/extend')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/DiscussionPage')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/utils/DiscussionControls')\"","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Dropdown')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/utils/extractText')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/DetailedDropdownItem')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/SplitDropdown')\"","webpack://@flarum/subscriptions/./src/forum/components/SubscriptionMenu.tsx","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/LinkButton')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/IndexPage')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/IndexSidebar')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/states/DiscussionListState')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/states/GlobalSearchState')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Switch')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/subscriptions/./src/common/query/discussions/SubscriptionGambit.ts","webpack://@flarum/subscriptions/./src/common/extend.ts","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/Notification')\"","webpack://@flarum/subscriptions/./src/forum/components/NewPostNotification.js","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.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/DiscussionControls');","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Dropdown');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/extractText');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/DetailedDropdownItem');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/SplitDropdown');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/forum/app';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport DetailedDropdownItem from 'flarum/common/components/DetailedDropdownItem';\nimport SplitDropdown from 'flarum/common/components/SplitDropdown';\nexport default class SubscriptionMenu extends Dropdown {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"options\", [{\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 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 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 _defineProperty(this, \"possibleButtonAttrs\", {\n null: {\n icon: 'far fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.follow_button')\n },\n follow: {\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button')\n },\n ignore: {\n icon: 'far fa-eye-slash',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button')\n }\n });\n }\n view() {\n const discussion = this.attrs.discussion;\n const subscription = discussion.subscription();\n const buttonAttrs = this.possibleButtonAttrs[subscription ?? 'null'] ?? this.possibleButtonAttrs.null;\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(app.translator.trans(notifyEmail ? 'flarum-subscriptions.forum.sub_controls.notify_email_tooltip' : 'flarum-subscriptions.forum.sub_controls.notify_alert_tooltip'));\n const shouldShowTooltip = (notifyEmail || notifyAlert) && subscription === null;\n return m(SplitDropdown, {\n className: \"SubscriptionMenu\",\n buttonClassName: `SubscriptionMenu-button--${subscription}`,\n tooltip: shouldShowTooltip ? tooltipText : null,\n mainAction: m(Button, {\n className: 'SubscriptionMenu-button',\n icon: buttonAttrs.icon,\n onclick: this.saveSubscription.bind(this, discussion, ['follow', 'ignore'].indexOf(subscription) !== -1 ? null : 'follow')\n }, buttonAttrs.label)\n }, this.options.map(attrs => m(DetailedDropdownItem, Object.assign({}, attrs, {\n onclick: this.saveSubscription.bind(this, discussion, attrs.subscription),\n active: subscription === attrs.subscription\n }))));\n }\n saveSubscription(discussion, subscription) {\n discussion.save({\n subscription\n });\n\n // @ts-ignore\n this.$('.SubscriptionMenu-button').tooltip('hide');\n }\n}\nflarum.reg.add('flarum-subscriptions', 'forum/components/SubscriptionMenu', SubscriptionMenu);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LinkButton');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/IndexPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/IndexSidebar');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/states/DiscussionListState');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/states/GlobalSearchState');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Switch');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","import app from 'flarum/common/app';\nimport { BooleanGambit } from 'flarum/common/query/IGambit';\nexport default class SubscriptionGambit extends BooleanGambit {\n key() {\n return [app.translator.trans('flarum-subscriptions.lib.gambits.discussions.subscription.following_key', {}, true), app.translator.trans('flarum-subscriptions.lib.gambits.discussions.subscription.ignoring_key', {}, true)];\n }\n toFilter(matches, negate) {\n const key = (negate ? '-' : '') + this.filterKey();\n return {\n [key]: matches[1]\n };\n }\n filterKey() {\n return 'subscription';\n }\n fromFilter(value, negate) {\n return `${negate ? '-' : ''}is:${value}`;\n }\n enabled() {\n return !!app.session.user;\n }\n}\nflarum.reg.add('flarum-subscriptions', 'common/query/discussions/SubscriptionGambit', SubscriptionGambit);","import Extend from 'flarum/common/extenders';\nimport SubscriptionGambit from './query/discussions/SubscriptionGambit';\nexport default [new Extend.Search() //\n.gambit('discussions', SubscriptionGambit)];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Notification');","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nexport default class NewPostNotification extends Notification {\n icon() {\n return 'fas fa-star';\n }\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n return app.route.discussion(discussion, content.postNumber);\n }\n content() {\n return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', {\n user: this.attrs.notification.fromUser()\n });\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-subscriptions', 'forum/components/NewPostNotification', NewPostNotification);","import Extend from 'flarum/common/extenders';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Discussion from 'flarum/common/models/Discussion';\nimport commonExtend from '../common/extend';\nimport NewPostNotification from './components/NewPostNotification';\nexport default [...commonExtend, new Extend.Routes() //\n.add('following', '/following', IndexPage), new Extend.Notification() //\n.add('newPost', NewPostNotification), new Extend.Model(Discussion) //\n.attribute('subscription')];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport addSubscriptionBadge from './addSubscriptionBadge';\nimport addSubscriptionControls from './addSubscriptionControls';\nimport addSubscriptionFilter from './addSubscriptionFilter';\nimport addSubscriptionSettings from './addSubscriptionSettings';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-subscriptions', () => {\n addSubscriptionBadge();\n addSubscriptionControls();\n addSubscriptionFilter();\n addSubscriptionSettings();\n extend('flarum/forum/components/NotificationGrid', '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});","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';\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n let badge;\n switch (this.subscription()) {\n case 'follow':\n badge = m(Badge, {\n label: app.translator.trans('flarum-subscriptions.forum.badge.following_tooltip'),\n icon: \"fas fa-star\",\n type: \"following\"\n });\n break;\n case 'ignore':\n badge = m(Badge, {\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 if (badge) {\n badges.add('subscription', badge);\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';\nimport SubscriptionMenu from './components/SubscriptionMenu';\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: {\n label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.follow_button'),\n icon: 'fas fa-star',\n save: 'follow'\n },\n follow: {\n label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unfollow_button'),\n icon: 'far fa-star',\n save: null\n },\n ignore: {\n label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unignore_button'),\n icon: 'fas fa-eye',\n save: null\n }\n };\n const subscription = discussion.subscription() || 'none';\n items.add('subscription', m(Button, {\n icon: states[subscription].icon,\n onclick: discussion.save.bind(discussion, {\n subscription: states[subscription].save\n })\n }, states[subscription].label));\n }\n });\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (app.session.user) {\n const discussion = this.discussion;\n items.add('subscription', m(SubscriptionMenu, {\n discussion: discussion\n }), 80);\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 IndexSidebar from 'flarum/forum/components/IndexSidebar';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nexport default function addSubscriptionFilter() {\n extend(IndexSidebar.prototype, 'navItems', function (items) {\n if (app.session.user) {\n const params = app.search.state.stickyParams();\n items.add('following', m(LinkButton, {\n href: app.route('following', params),\n icon: \"fas fa-star\"\n }, app.translator.trans('flarum-subscriptions.forum.index.following_link')), 50);\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 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 extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (this.params.onFollowing) {\n params.filter ||= {};\n params.filter.subscription = 'following';\n }\n });\n}","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Switch from 'flarum/common/components/Switch';\nexport default function () {\n extend('flarum/forum/components/SettingsPage', 'notificationsItems', function (items) {\n items.add('followAfterReply', m(Switch, {\n state: this.user.preferences().followAfterReply,\n onchange: value => {\n this.followAfterReplyLoading = true;\n this.user.savePreferences({\n followAfterReply: value\n }).then(() => {\n this.followAfterReplyLoading = false;\n m.redraw();\n });\n },\n loading: this.followAfterReplyLoading\n }, app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label')));\n items.add('notifyForAllPosts', m(Switch, {\n id: \"flarum_subscriptions__notify_for_all_posts\",\n state: !!this.user.preferences()?.['flarum-subscriptions.notify_for_all_posts'],\n onchange: val => {\n this.notifyForAllPostsLoading = true;\n this.user.savePreferences({\n 'flarum-subscriptions.notify_for_all_posts': val\n }).then(() => {\n this.notifyForAllPostsLoading = false;\n m.redraw();\n });\n },\n loading: this.notifyForAllPostsLoading\n }, app.translator.trans('flarum-subscriptions.forum.settings.notify_for_all_posts_label')));\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","reg","_typeof","iterator","constructor","_defineProperty","e","r","t","i","toPrimitive","TypeError","String","toPropertyKey","configurable","writable","SubscriptionMenu","super","arguments","this","subscription","icon","label","trans","description","null","follow","ignore","view","discussion","attrs","buttonAttrs","possibleButtonAttrs","preferences","user","notifyEmail","notifyAlert","tooltipText","shouldShowTooltip","m","className","buttonClassName","tooltip","mainAction","onclick","saveSubscription","bind","indexOf","options","map","assign","active","save","$","add","SubscriptionGambit","BooleanGambit","toFilter","matches","negate","filterKey","fromFilter","enabled","gambit","NewPostNotification","href","notification","subject","content","postNumber","fromUser","excerpt","attribute","extend","badges","badge","type","items","context","states","none","params","state","stickyParams","onFollowing","filter","followAfterReply","onchange","followAfterReplyLoading","savePreferences","then","redraw","loading","id","val","notifyForAllPostsLoading","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.reg.get('core', 'common/extend')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/models/Discussion')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/DiscussionPage')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/utils/DiscussionControls')\"","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Dropdown')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/utils/extractText')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/DetailedDropdownItem')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/SplitDropdown')\"","webpack://@flarum/subscriptions/./src/forum/components/SubscriptionMenu.tsx","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/LinkButton')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/IndexPage')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/IndexSidebar')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/states/DiscussionListState')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/states/GlobalSearchState')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/components/Switch')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/subscriptions/./src/common/query/discussions/SubscriptionGambit.ts","webpack://@flarum/subscriptions/./src/common/extend.ts","webpack://@flarum/subscriptions/external root \"flarum.reg.get('core', 'forum/components/Notification')\"","webpack://@flarum/subscriptions/./src/forum/components/NewPostNotification.js","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.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/Discussion');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/DiscussionPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/DiscussionControls');","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Dropdown');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/extractText');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/DetailedDropdownItem');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/SplitDropdown');","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport app from 'flarum/forum/app';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport extractText from 'flarum/common/utils/extractText';\nimport DetailedDropdownItem from 'flarum/common/components/DetailedDropdownItem';\nimport SplitDropdown from 'flarum/common/components/SplitDropdown';\nexport default class SubscriptionMenu extends Dropdown {\n constructor() {\n super(...arguments);\n _defineProperty(this, \"options\", [{\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 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 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 _defineProperty(this, \"possibleButtonAttrs\", {\n null: {\n icon: 'far fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.follow_button')\n },\n follow: {\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button')\n },\n ignore: {\n icon: 'far fa-eye-slash',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button')\n }\n });\n }\n view() {\n const discussion = this.attrs.discussion;\n const subscription = discussion.subscription();\n const buttonAttrs = this.possibleButtonAttrs[subscription ?? 'null'] ?? this.possibleButtonAttrs.null;\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(app.translator.trans(notifyEmail ? 'flarum-subscriptions.forum.sub_controls.notify_email_tooltip' : 'flarum-subscriptions.forum.sub_controls.notify_alert_tooltip'));\n const shouldShowTooltip = (notifyEmail || notifyAlert) && subscription === null;\n return m(SplitDropdown, {\n className: \"SubscriptionMenu\",\n buttonClassName: `SubscriptionMenu-button--${subscription}`,\n tooltip: shouldShowTooltip ? tooltipText : null,\n mainAction: m(Button, {\n className: 'SubscriptionMenu-button',\n icon: buttonAttrs.icon,\n onclick: this.saveSubscription.bind(this, discussion, ['follow', 'ignore'].indexOf(subscription) !== -1 ? null : 'follow')\n }, buttonAttrs.label)\n }, this.options.map(attrs => m(DetailedDropdownItem, Object.assign({}, attrs, {\n onclick: this.saveSubscription.bind(this, discussion, attrs.subscription),\n active: subscription === attrs.subscription\n }))));\n }\n saveSubscription(discussion, subscription) {\n discussion.save({\n subscription\n });\n\n // @ts-ignore\n this.$('.SubscriptionMenu-button').tooltip('hide');\n }\n}\nflarum.reg.add('flarum-subscriptions', 'forum/components/SubscriptionMenu', SubscriptionMenu);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/LinkButton');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/IndexPage');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/IndexSidebar');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/states/DiscussionListState');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/states/GlobalSearchState');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Switch');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","import app from 'flarum/common/app';\nimport { BooleanGambit } from 'flarum/common/query/IGambit';\nexport default class SubscriptionGambit extends BooleanGambit {\n key() {\n return [app.translator.trans('flarum-subscriptions.lib.gambits.discussions.subscription.following_key', {}, true), app.translator.trans('flarum-subscriptions.lib.gambits.discussions.subscription.ignoring_key', {}, true)];\n }\n toFilter(matches, negate) {\n const key = (negate ? '-' : '') + this.filterKey();\n return {\n [key]: matches[1]\n };\n }\n filterKey() {\n return 'subscription';\n }\n fromFilter(value, negate) {\n return `${negate ? '-' : ''}is:${value}`;\n }\n enabled() {\n return !!app.session.user;\n }\n}\nflarum.reg.add('flarum-subscriptions', 'common/query/discussions/SubscriptionGambit', SubscriptionGambit);","import Extend from 'flarum/common/extenders';\nimport SubscriptionGambit from './query/discussions/SubscriptionGambit';\nexport default [new Extend.Search() //\n.gambit('discussions', SubscriptionGambit)];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Notification');","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nexport default class NewPostNotification extends Notification {\n icon() {\n return 'fas fa-star';\n }\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n return app.route.discussion(discussion, content.postNumber);\n }\n content() {\n return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', {\n user: this.attrs.notification.fromUser()\n });\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-subscriptions', 'forum/components/NewPostNotification', NewPostNotification);","import Extend from 'flarum/common/extenders';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Discussion from 'flarum/common/models/Discussion';\nimport commonExtend from '../common/extend';\nimport NewPostNotification from './components/NewPostNotification';\nexport default [...commonExtend, new Extend.Routes() //\n.add('following', '/following', IndexPage), new Extend.Notification() //\n.add('newPost', NewPostNotification), new Extend.Model(Discussion) //\n.attribute('subscription')];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport addSubscriptionBadge from './addSubscriptionBadge';\nimport addSubscriptionControls from './addSubscriptionControls';\nimport addSubscriptionFilter from './addSubscriptionFilter';\nimport addSubscriptionSettings from './addSubscriptionSettings';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-subscriptions', () => {\n addSubscriptionBadge();\n addSubscriptionControls();\n addSubscriptionFilter();\n addSubscriptionSettings();\n extend('flarum/forum/components/NotificationGrid', '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});","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';\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n let badge;\n switch (this.subscription()) {\n case 'follow':\n badge = m(Badge, {\n label: app.translator.trans('flarum-subscriptions.forum.badge.following_tooltip'),\n icon: \"fas fa-star\",\n type: \"following\",\n tabindex: \"0\"\n });\n break;\n case 'ignore':\n badge = m(Badge, {\n label: app.translator.trans('flarum-subscriptions.forum.badge.ignoring_tooltip'),\n icon: \"far fa-eye-slash\",\n type: \"ignoring\",\n tabindex: \"0\"\n });\n break;\n }\n if (badge) {\n badges.add('subscription', badge);\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';\nimport SubscriptionMenu from './components/SubscriptionMenu';\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: {\n label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.follow_button'),\n icon: 'fas fa-star',\n save: 'follow'\n },\n follow: {\n label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unfollow_button'),\n icon: 'far fa-star',\n save: null\n },\n ignore: {\n label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unignore_button'),\n icon: 'fas fa-eye',\n save: null\n }\n };\n const subscription = discussion.subscription() || 'none';\n items.add('subscription', m(Button, {\n icon: states[subscription].icon,\n onclick: discussion.save.bind(discussion, {\n subscription: states[subscription].save\n })\n }, states[subscription].label));\n }\n });\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (app.session.user) {\n const discussion = this.discussion;\n items.add('subscription', m(SubscriptionMenu, {\n discussion: discussion\n }), 80);\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 IndexSidebar from 'flarum/forum/components/IndexSidebar';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nexport default function addSubscriptionFilter() {\n extend(IndexSidebar.prototype, 'navItems', function (items) {\n if (app.session.user) {\n const params = app.search.state.stickyParams();\n items.add('following', m(LinkButton, {\n href: app.route('following', params),\n icon: \"fas fa-star\"\n }, app.translator.trans('flarum-subscriptions.forum.index.following_link')), 50);\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 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 extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (this.params.onFollowing) {\n params.filter ||= {};\n params.filter.subscription = 'following';\n }\n });\n}","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Switch from 'flarum/common/components/Switch';\nexport default function () {\n extend('flarum/forum/components/SettingsPage', 'notificationsItems', function (items) {\n items.add('followAfterReply', m(Switch, {\n state: this.user.preferences().followAfterReply,\n onchange: value => {\n this.followAfterReplyLoading = true;\n this.user.savePreferences({\n followAfterReply: value\n }).then(() => {\n this.followAfterReplyLoading = false;\n m.redraw();\n });\n },\n loading: this.followAfterReplyLoading\n }, app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label')));\n items.add('notifyForAllPosts', m(Switch, {\n id: \"flarum_subscriptions__notify_for_all_posts\",\n state: !!this.user.preferences()?.['flarum-subscriptions.notify_for_all_posts'],\n onchange: val => {\n this.notifyForAllPostsLoading = true;\n this.user.savePreferences({\n 'flarum-subscriptions.notify_for_all_posts': val\n }).then(() => {\n this.notifyForAllPostsLoading = false;\n m.redraw();\n });\n },\n loading: this.notifyForAllPostsLoading\n }, app.translator.trans('flarum-subscriptions.forum.settings.notify_for_all_posts_label')));\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","reg","_typeof","iterator","constructor","_defineProperty","e","r","t","i","toPrimitive","TypeError","String","toPropertyKey","configurable","writable","SubscriptionMenu","super","arguments","this","subscription","icon","label","trans","description","null","follow","ignore","view","discussion","attrs","buttonAttrs","possibleButtonAttrs","preferences","user","notifyEmail","notifyAlert","tooltipText","shouldShowTooltip","m","className","buttonClassName","tooltip","mainAction","onclick","saveSubscription","bind","indexOf","options","map","assign","active","save","$","add","SubscriptionGambit","BooleanGambit","toFilter","matches","negate","filterKey","fromFilter","enabled","gambit","NewPostNotification","href","notification","subject","content","postNumber","fromUser","excerpt","attribute","extend","badges","badge","type","tabindex","items","context","states","none","params","state","stickyParams","onFollowing","filter","followAfterReply","onchange","followAfterReplyLoading","savePreferences","then","redraw","loading","id","val","notifyForAllPostsLoading","name"],"sourceRoot":""}
\ No newline at end of file
diff --git a/extensions/suspend/js/dist/forum.js b/extensions/suspend/js/dist/forum.js
index a17f7f4b5..97b22ed88 100644
--- a/extensions/suspend/js/dist/forum.js
+++ b/extensions/suspend/js/dist/forum.js
@@ -1,2 +1,2 @@
-(()=>{var t={720:function(t){t.exports=function(){"use strict";var t=6e4,e=36e5,s="millisecond",n="second",r="minute",a="hour",u="day",i="week",o="month",l="quarter",c="year",d="date",f="Invalid Date",m=/^(\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,p={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"],s=t%100;return"["+t+(e[(s-20)%10]||e[s]||e[0])+"]"}},g=function(t,e,s){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(s)+t},$={s:g,z:function(t){var e=-t.utcOffset(),s=Math.abs(e),n=Math.floor(s/60),r=s%60;return(e<=0?"+":"-")+g(n,2,"0")+":"+g(r,2,"0")},m:function t(e,s){if(e.date()1)return t(u[0])}else{var i=e.name;y[i]=e,r=i}return!n&&r&&(v=r),r||!n&&v},_=function(t,e){if(M(t))return t.clone();var s="object"==typeof e?e:{};return s.date=t,s.args=arguments,new w(s)},D=$;D.l=S,D.i=M,D.w=function(t,e){return _(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var w=function(){function p(t){this.$L=S(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[b]=!0}var g=p.prototype;return g.parse=function(t){this.$d=function(t){var e=t.date,s=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(m);if(n){var r=n[2]-1||0,a=(n[7]||"0").substring(0,3);return s?new Date(Date.UTC(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,a)):new Date(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,a)}}return new Date(e)}(t),this.init()},g.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},g.$utils=function(){return D},g.isValid=function(){return!(this.$d.toString()===f)},g.isSame=function(t,e){var s=_(t);return this.startOf(e)<=s&&s<=this.endOf(e)},g.isAfter=function(t,e){return _(t){var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";s.r(n),s.d(n,{extend:()=>E});const t=flarum.reg.get("core","common/extend"),e=flarum.reg.get("core","forum/app");var r=s.n(e);const a=flarum.reg.get("core","forum/utils/UserControls");var u=s.n(a);const i=flarum.reg.get("core","common/components/Button");var o=s.n(i);const l=flarum.reg.get("core","common/components/Badge");var c=s.n(l);const d=flarum.reg.get("core","common/models/User");var f=s.n(d);const h=flarum.reg.get("core","common/components/FormModal");var p=s.n(h);const g=flarum.reg.get("core","common/utils/Stream");var $=s.n(g);const v=flarum.reg.get("core","common/utils/withAttr");var y=s.n(v);const b=flarum.reg.get("core","common/utils/ItemList");var M=s.n(b);const S=flarum.reg.get("core","common/components/Form");var _=s.n(S);const D=flarum.reg.get("core","common/components/FieldSet");var w=s.n(D),x=s(720),O=s.n(x),k=s(153),T=s.n(k);function U(){return new Date("2038-01-01")}function N(t){return O().utc(t).isSame(O().utc("2038-01-01"))}O().extend(T()),flarum.reg.add("flarum-suspend","forum/helpers/suspensionHelper",{getPermanentSuspensionDate:U,isPermanentSuspensionDate:N,localStorageKey:function(){return"flarum-suspend.acknowledge-suspension"}});class C extends(p()){oninit(t){super.oninit(t);let e=this.attrs.user.suspendedUntil();const s=this.attrs.user.suspendReason(),n=this.attrs.user.suspendMessage();let r=null;new Date>e&&(e=null),e&&(r=9999===e.getFullYear()?"indefinitely":"limited"),this.status=$()(r),this.reason=$()(s),this.message=$()(n),this.daysRemaining=$()("limited"===r&&1-dayjs().diff(e,"days"))}className(){return"SuspendUserModal Modal--medium"}title(){return r().translator.trans("flarum-suspend.forum.suspend_user.title",{user:this.attrs.user})}content(){return m("div",{className:"Modal-body"},m(_(),null,this.formItems().toArray(),m("div",{className:"Form-group Form-controls"},m(o(),{className:"Button Button--primary",loading:this.loading,type:"submit"},r().translator.trans("flarum-suspend.forum.suspend_user.submit_button")))))}radioItems(){const t=new(M());return t.add("not-suspended",m("label",{className:"checkbox"},m("input",{type:"radio",name:"status",checked:!this.status(),value:"",onclick:y()("value",this.status)}),r().translator.trans("flarum-suspend.forum.suspend_user.not_suspended_label")),100),t.add("indefinitely",m("label",{className:"checkbox"},m("input",{type:"radio",name:"status",checked:"indefinitely"===this.status(),value:"indefinitely",onclick:y()("value",this.status)}),r().translator.trans("flarum-suspend.forum.suspend_user.indefinitely_label")),90),t.add("time-suspension",m("label",{className:"checkbox SuspendUserModal-days"},m("input",{type:"radio",name:"status",checked:"limited"===this.status(),value:"limited",onclick:t=>{this.status(t.target.value),m.redraw.sync(),this.$(".SuspendUserModal-days-input input").select(),t.redraw=!1}}),r().translator.trans("flarum-suspend.forum.suspend_user.limited_time_label"),"limited"===this.status()&&m("div",{className:"SuspendUserModal-days-input"},m("input",{type:"number",min:"0",value:this.daysRemaining(),oninput:y()("value",this.daysRemaining),className:"FormControl"}),r().translator.trans("flarum-suspend.forum.suspend_user.limited_time_days_text"))),80),t}formItems(){const t=new(M());return t.add("radioItems",m(w(),{label:r().translator.trans("flarum-suspend.forum.suspend_user.status_heading")},this.radioItems().toArray()),100),t.add("reason",m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-suspend.forum.suspend_user.reason")),m("textarea",{className:"FormControl",bidi:this.reason,placeholder:r().translator.trans("flarum-suspend.forum.suspend_user.placeholder_optional"),rows:"4"})),90),t.add("message",m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-suspend.forum.suspend_user.display_message")),m("textarea",{className:"FormControl",bidi:this.message,placeholder:r().translator.trans("flarum-suspend.forum.suspend_user.placeholder_optional"),rows:"4"})),80),t}onsubmit(t){t.preventDefault(),this.loading=!0;let e=null;switch(this.status()){case"indefinitely":e=U();break;case"limited":e=dayjs().add(this.daysRemaining(),"days").toDate()}this.attrs.user.save({suspendedUntil:e,suspendReason:this.reason(),suspendMessage:this.message()}).then((()=>this.hide()),this.loaded.bind(this))}}flarum.reg.add("flarum-suspend","forum/components/SuspendUserModal",C);const Y=flarum.reg.get("core","common/components/Modal");var I=s.n(Y);const F=flarum.reg.get("core","common/helpers/fullTime");var H=s.n(F);class j extends(I()){oninit(t){super.oninit(t),this.message=this.attrs.message,this.until=this.attrs.until}className(){return"SuspensionInfoModal Modal"}title(){return r().translator.trans("flarum-suspend.forum.suspension_info.title")}content(){const t=N(new Date(this.until))?r().translator.trans("flarum-suspend.forum.suspension_info.indefinite"):r().translator.trans("flarum-suspend.forum.suspension_info.limited",{date:H()(this.until)});return m("div",{className:"Modal-body"},m(_(),{className:"Form--centered"},m("p",{className:"helpText"},this.message),m("p",{className:"helpText"},t),m("div",{className:"Form-group Form-controls"},m(o(),{className:"Button Button--primary Button--block",onclick:this.hide.bind(this)},r().translator.trans("flarum-suspend.forum.suspension_info.dismiss_button")))))}hide(){localStorage.setItem("flarum-suspend.acknowledge-suspension",this.attrs.until.getTime()),this.attrs.state.close()}}flarum.reg.add("flarum-suspend","forum/components/SuspensionInfoModal",j);const L=flarum.reg.get("core","common/extenders");var A=s.n(L);const W=flarum.reg.get("core","common/Model");var B=s.n(W);const R=flarum.reg.get("core","common/app");var P=s.n(R);const z=flarum.reg.get("core","common/query/IGambit");class Z extends z.BooleanGambit{key(){return P().translator.trans("flarum-suspend.lib.gambits.users.suspended.key",{},!0)}filterKey(){return"suspended"}enabled(){return!!P().session.user&&P().forum.attribute("canSuspendUsers")}}flarum.reg.add("flarum-suspend","common/query/users/SuspendedGambit",Z);const J=[(new(A().Search)).gambit("users",Z),new(A().Model)(f()).attribute("canSuspend")],q=flarum.reg.get("core","forum/components/Notification");var G=s.n(q);class V extends(G()){icon(){return"fas fa-ban"}href(){return r().route.user(this.attrs.notification.subject())}content(){const t=this.attrs.notification,e=t.content(),s=dayjs(e).from(t.createdAt(),!0);return N(e)?r().translator.trans("flarum-suspend.forum.notifications.user_suspended_indefinite_text"):r().translator.trans("flarum-suspend.forum.notifications.user_suspended_text",{timeReadable:s})}excerpt(){return null}}flarum.reg.add("flarum-suspend","forum/components/UserSuspendedNotification",V);class K extends(G()){icon(){return"fas fa-ban"}href(){return r().route.user(this.attrs.notification.subject())}content(){return this.attrs.notification,r().translator.trans("flarum-suspend.forum.notifications.user_unsuspended_text")}excerpt(){return null}}flarum.reg.add("flarum-suspend","forum/components/UserUnsuspendedNotification",K);const E=[...J,(new(A().Notification)).add("userSuspended",V).add("userUnsuspended",K),new(A().Model)(f()).attribute("suspendedUntil",B().transformDate).attribute("suspendReason").attribute("suspendMessage")];r().initializers.add("flarum-suspend",(()=>{(0,t.extend)(u(),"moderationControls",((t,e)=>{e.canSuspend()&&t.add("suspend",m(o(),{icon:"fas fa-ban",onclick:()=>r().modal.show(C,{user:e})},r().translator.trans("flarum-suspend.forum.user_controls.suspend_button")))})),(0,t.extend)(f().prototype,"badges",(function(t){const e=this.suspendedUntil();new Date{if(r().session.user){const t=r().session.user.suspendMessage(),e=r().session.user.suspendedUntil(),s=t&&e&&new Date{var t={720:function(t){t.exports=function(){"use strict";var t=6e4,e=36e5,s="millisecond",n="second",r="minute",a="hour",u="day",i="week",o="month",l="quarter",c="year",d="date",f="Invalid Date",m=/^(\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,p={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"],s=t%100;return"["+t+(e[(s-20)%10]||e[s]||e[0])+"]"}},g=function(t,e,s){var n=String(t);return!n||n.length>=e?t:""+Array(e+1-n.length).join(s)+t},$={s:g,z:function(t){var e=-t.utcOffset(),s=Math.abs(e),n=Math.floor(s/60),r=s%60;return(e<=0?"+":"-")+g(n,2,"0")+":"+g(r,2,"0")},m:function t(e,s){if(e.date()1)return t(u[0])}else{var i=e.name;y[i]=e,r=i}return!n&&r&&(v=r),r||!n&&v},_=function(t,e){if(M(t))return t.clone();var s="object"==typeof e?e:{};return s.date=t,s.args=arguments,new w(s)},D=$;D.l=S,D.i=M,D.w=function(t,e){return _(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var w=function(){function p(t){this.$L=S(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[b]=!0}var g=p.prototype;return g.parse=function(t){this.$d=function(t){var e=t.date,s=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var n=e.match(m);if(n){var r=n[2]-1||0,a=(n[7]||"0").substring(0,3);return s?new Date(Date.UTC(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,a)):new Date(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,a)}}return new Date(e)}(t),this.init()},g.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},g.$utils=function(){return D},g.isValid=function(){return!(this.$d.toString()===f)},g.isSame=function(t,e){var s=_(t);return this.startOf(e)<=s&&s<=this.endOf(e)},g.isAfter=function(t,e){return _(t){var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";s.r(n),s.d(n,{extend:()=>E});const t=flarum.reg.get("core","common/extend"),e=flarum.reg.get("core","forum/app");var r=s.n(e);const a=flarum.reg.get("core","forum/utils/UserControls");var u=s.n(a);const i=flarum.reg.get("core","common/components/Button");var o=s.n(i);const l=flarum.reg.get("core","common/components/Badge");var c=s.n(l);const d=flarum.reg.get("core","common/models/User");var f=s.n(d);const h=flarum.reg.get("core","common/components/FormModal");var p=s.n(h);const g=flarum.reg.get("core","common/utils/Stream");var $=s.n(g);const v=flarum.reg.get("core","common/utils/withAttr");var y=s.n(v);const b=flarum.reg.get("core","common/utils/ItemList");var M=s.n(b);const S=flarum.reg.get("core","common/components/Form");var _=s.n(S);const D=flarum.reg.get("core","common/components/FieldSet");var w=s.n(D),x=s(720),O=s.n(x),k=s(153),T=s.n(k);function U(){return new Date("2038-01-01")}function N(t){return O().utc(t).isSame(O().utc("2038-01-01"))}O().extend(T()),flarum.reg.add("flarum-suspend","forum/helpers/suspensionHelper",{getPermanentSuspensionDate:U,isPermanentSuspensionDate:N,localStorageKey:function(){return"flarum-suspend.acknowledge-suspension"}});class C extends(p()){oninit(t){super.oninit(t);let e=this.attrs.user.suspendedUntil();const s=this.attrs.user.suspendReason(),n=this.attrs.user.suspendMessage();let r=null;new Date>e&&(e=null),e&&(r=9999===e.getFullYear()?"indefinitely":"limited"),this.status=$()(r),this.reason=$()(s),this.message=$()(n),this.daysRemaining=$()("limited"===r&&1-dayjs().diff(e,"days"))}className(){return"SuspendUserModal Modal--medium"}title(){return r().translator.trans("flarum-suspend.forum.suspend_user.title",{user:this.attrs.user})}content(){return m("div",{className:"Modal-body"},m(_(),null,this.formItems().toArray(),m("div",{className:"Form-group Form-controls"},m(o(),{className:"Button Button--primary",loading:this.loading,type:"submit"},r().translator.trans("flarum-suspend.forum.suspend_user.submit_button")))))}radioItems(){const t=new(M());return t.add("not-suspended",m("label",{className:"checkbox"},m("input",{type:"radio",name:"status",checked:!this.status(),value:"",onclick:y()("value",this.status)}),r().translator.trans("flarum-suspend.forum.suspend_user.not_suspended_label")),100),t.add("indefinitely",m("label",{className:"checkbox"},m("input",{type:"radio",name:"status",checked:"indefinitely"===this.status(),value:"indefinitely",onclick:y()("value",this.status)}),r().translator.trans("flarum-suspend.forum.suspend_user.indefinitely_label")),90),t.add("time-suspension",m("label",{className:"checkbox SuspendUserModal-days"},m("input",{type:"radio",name:"status",checked:"limited"===this.status(),value:"limited",onclick:t=>{this.status(t.target.value),m.redraw.sync(),this.$(".SuspendUserModal-days-input input").select(),t.redraw=!1}}),r().translator.trans("flarum-suspend.forum.suspend_user.limited_time_label"),"limited"===this.status()&&m("div",{className:"SuspendUserModal-days-input"},m("input",{type:"number",min:"0",value:this.daysRemaining(),oninput:y()("value",this.daysRemaining),className:"FormControl"}),r().translator.trans("flarum-suspend.forum.suspend_user.limited_time_days_text"))),80),t}formItems(){const t=new(M());return t.add("radioItems",m(w(),{label:r().translator.trans("flarum-suspend.forum.suspend_user.status_heading")},this.radioItems().toArray()),100),t.add("reason",m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-suspend.forum.suspend_user.reason")),m("textarea",{className:"FormControl",bidi:this.reason,placeholder:r().translator.trans("flarum-suspend.forum.suspend_user.placeholder_optional"),rows:"4"})),90),t.add("message",m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-suspend.forum.suspend_user.display_message")),m("textarea",{className:"FormControl",bidi:this.message,placeholder:r().translator.trans("flarum-suspend.forum.suspend_user.placeholder_optional"),rows:"4"})),80),t}onsubmit(t){t.preventDefault(),this.loading=!0;let e=null;switch(this.status()){case"indefinitely":e=U();break;case"limited":e=dayjs().add(this.daysRemaining(),"days").toDate()}this.attrs.user.save({suspendedUntil:e,suspendReason:this.reason(),suspendMessage:this.message()}).then((()=>this.hide()),this.loaded.bind(this))}}flarum.reg.add("flarum-suspend","forum/components/SuspendUserModal",C);const Y=flarum.reg.get("core","common/components/Modal");var I=s.n(Y);const F=flarum.reg.get("core","common/helpers/fullTime");var H=s.n(F);class j extends(I()){oninit(t){super.oninit(t),this.message=this.attrs.message,this.until=this.attrs.until}className(){return"SuspensionInfoModal Modal"}title(){return r().translator.trans("flarum-suspend.forum.suspension_info.title")}content(){const t=N(new Date(this.until))?r().translator.trans("flarum-suspend.forum.suspension_info.indefinite"):r().translator.trans("flarum-suspend.forum.suspension_info.limited",{date:H()(this.until)});return m("div",{className:"Modal-body"},m(_(),{className:"Form--centered"},m("p",{className:"helpText"},this.message),m("p",{className:"helpText"},t),m("div",{className:"Form-group Form-controls"},m(o(),{className:"Button Button--primary Button--block",onclick:this.hide.bind(this)},r().translator.trans("flarum-suspend.forum.suspension_info.dismiss_button")))))}hide(){localStorage.setItem("flarum-suspend.acknowledge-suspension",this.attrs.until.getTime()),this.attrs.state.close()}}flarum.reg.add("flarum-suspend","forum/components/SuspensionInfoModal",j);const L=flarum.reg.get("core","common/extenders");var A=s.n(L);const W=flarum.reg.get("core","common/Model");var B=s.n(W);const R=flarum.reg.get("core","common/app");var P=s.n(R);const z=flarum.reg.get("core","common/query/IGambit");class Z extends z.BooleanGambit{key(){return P().translator.trans("flarum-suspend.lib.gambits.users.suspended.key",{},!0)}filterKey(){return"suspended"}enabled(){return!!P().session.user&&P().forum.attribute("canSuspendUsers")}}flarum.reg.add("flarum-suspend","common/query/users/SuspendedGambit",Z);const J=[(new(A().Search)).gambit("users",Z),new(A().Model)(f()).attribute("canSuspend")],q=flarum.reg.get("core","forum/components/Notification");var G=s.n(q);class V extends(G()){icon(){return"fas fa-ban"}href(){return r().route.user(this.attrs.notification.subject())}content(){const t=this.attrs.notification,e=t.content(),s=dayjs(e).from(t.createdAt(),!0);return N(e)?r().translator.trans("flarum-suspend.forum.notifications.user_suspended_indefinite_text"):r().translator.trans("flarum-suspend.forum.notifications.user_suspended_text",{timeReadable:s})}excerpt(){return null}}flarum.reg.add("flarum-suspend","forum/components/UserSuspendedNotification",V);class K extends(G()){icon(){return"fas fa-ban"}href(){return r().route.user(this.attrs.notification.subject())}content(){return this.attrs.notification,r().translator.trans("flarum-suspend.forum.notifications.user_unsuspended_text")}excerpt(){return null}}flarum.reg.add("flarum-suspend","forum/components/UserUnsuspendedNotification",K);const E=[...J,(new(A().Notification)).add("userSuspended",V).add("userUnsuspended",K),new(A().Model)(f()).attribute("suspendedUntil",B().transformDate).attribute("suspendReason").attribute("suspendMessage")];r().initializers.add("flarum-suspend",(()=>{(0,t.extend)(u(),"moderationControls",((t,e)=>{e.canSuspend()&&t.add("suspend",m(o(),{icon:"fas fa-ban",onclick:()=>r().modal.show(C,{user:e})},r().translator.trans("flarum-suspend.forum.user_controls.suspend_button")))})),(0,t.extend)(f().prototype,"badges",(function(t){const e=this.suspendedUntil();new Date{if(r().session.user){const t=r().session.user.suspendMessage(),e=r().session.user.suspendedUntil(),s=t&&e&&new Date=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.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($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.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()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(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.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/UserControls');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/User');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FormModal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/Stream');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/withAttr');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/ItemList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Form');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FieldSet');","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\ndayjs.extend(utc);\nexport function getPermanentSuspensionDate() {\n return new Date('2038-01-01');\n}\nexport function isPermanentSuspensionDate(date) {\n return dayjs.utc(date).isSame(dayjs.utc('2038-01-01'));\n}\nexport function localStorageKey() {\n return 'flarum-suspend.acknowledge-suspension';\n}\nflarum.reg.add('flarum-suspend', 'forum/helpers/suspensionHelper', { getPermanentSuspensionDate: getPermanentSuspensionDate,isPermanentSuspensionDate: isPermanentSuspensionDate,localStorageKey: localStorageKey, });","import app from 'flarum/forum/app';\nimport FormModal from 'flarum/common/components/FormModal';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Form from 'flarum/common/components/Form';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport { getPermanentSuspensionDate } from '../helpers/suspensionHelper';\nexport default class SuspendUserModal extends FormModal {\n oninit(vnode) {\n super.oninit(vnode);\n let until = this.attrs.user.suspendedUntil();\n const reason = this.attrs.user.suspendReason();\n const message = this.attrs.user.suspendMessage();\n let status = null;\n if (new Date() > until) until = null;\n if (until) {\n if (until.getFullYear() === 9999) status = 'indefinitely';else status = 'limited';\n }\n this.status = Stream(status);\n this.reason = Stream(reason);\n this.message = Stream(message);\n this.daysRemaining = Stream(status === 'limited' && -dayjs().diff(until, 'days') + 1);\n }\n className() {\n return 'SuspendUserModal Modal--medium';\n }\n title() {\n return app.translator.trans('flarum-suspend.forum.suspend_user.title', {\n user: this.attrs.user\n });\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, null, this.formItems().toArray(), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, m(Button, {\n className: \"Button Button--primary\",\n loading: this.loading,\n type: \"submit\"\n }, app.translator.trans('flarum-suspend.forum.suspend_user.submit_button')))));\n }\n radioItems() {\n const items = new ItemList();\n items.add('not-suspended', m(\"label\", {\n className: \"checkbox\"\n }, m(\"input\", {\n type: \"radio\",\n name: \"status\",\n checked: !this.status(),\n value: \"\",\n onclick: withAttr('value', this.status)\n }), app.translator.trans('flarum-suspend.forum.suspend_user.not_suspended_label')), 100);\n items.add('indefinitely', m(\"label\", {\n className: \"checkbox\"\n }, m(\"input\", {\n type: \"radio\",\n name: \"status\",\n checked: this.status() === 'indefinitely',\n value: \"indefinitely\",\n onclick: withAttr('value', this.status)\n }), app.translator.trans('flarum-suspend.forum.suspend_user.indefinitely_label')), 90);\n items.add('time-suspension', m(\"label\", {\n className: \"checkbox SuspendUserModal-days\"\n }, m(\"input\", {\n type: \"radio\",\n name: \"status\",\n checked: this.status() === 'limited',\n value: \"limited\",\n onclick: e => {\n this.status(e.target.value);\n m.redraw.sync();\n this.$('.SuspendUserModal-days-input input').select();\n e.redraw = false;\n }\n }), app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_label'), this.status() === 'limited' && m(\"div\", {\n className: \"SuspendUserModal-days-input\"\n }, m(\"input\", {\n type: \"number\",\n min: \"0\",\n value: this.daysRemaining(),\n oninput: withAttr('value', this.daysRemaining),\n className: \"FormControl\"\n }), app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_days_text'))), 80);\n return items;\n }\n formItems() {\n const items = new ItemList();\n items.add('radioItems', m(FieldSet, {\n label: app.translator.trans('flarum-suspend.forum.suspend_user.status_heading')\n }, this.radioItems().toArray()), 100);\n items.add('reason', m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-suspend.forum.suspend_user.reason')), m(\"textarea\", {\n className: \"FormControl\",\n bidi: this.reason,\n placeholder: app.translator.trans('flarum-suspend.forum.suspend_user.placeholder_optional'),\n rows: \"4\"\n })), 90);\n items.add('message', m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-suspend.forum.suspend_user.display_message')), m(\"textarea\", {\n className: \"FormControl\",\n bidi: this.message,\n placeholder: app.translator.trans('flarum-suspend.forum.suspend_user.placeholder_optional'),\n rows: \"4\"\n })), 80);\n return items;\n }\n onsubmit(e) {\n e.preventDefault();\n this.loading = true;\n let suspendedUntil = null;\n switch (this.status()) {\n case 'indefinitely':\n suspendedUntil = getPermanentSuspensionDate();\n break;\n case 'limited':\n suspendedUntil = dayjs().add(this.daysRemaining(), 'days').toDate();\n break;\n default:\n // no default\n }\n this.attrs.user.save({\n suspendedUntil,\n suspendReason: this.reason(),\n suspendMessage: this.message()\n }).then(() => this.hide(), this.loaded.bind(this));\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/SuspendUserModal', SuspendUserModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Modal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/fullTime');","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport fullTime from 'flarum/common/helpers/fullTime';\nimport Form from 'flarum/common/components/Form';\nimport { isPermanentSuspensionDate, localStorageKey } from '../helpers/suspensionHelper';\nexport default class SuspensionInfoModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n this.message = this.attrs.message;\n this.until = this.attrs.until;\n }\n className() {\n return 'SuspensionInfoModal Modal';\n }\n title() {\n return app.translator.trans('flarum-suspend.forum.suspension_info.title');\n }\n content() {\n const timespan = isPermanentSuspensionDate(new Date(this.until)) ? app.translator.trans('flarum-suspend.forum.suspension_info.indefinite') : app.translator.trans('flarum-suspend.forum.suspension_info.limited', {\n date: fullTime(this.until)\n });\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, {\n className: \"Form--centered\"\n }, m(\"p\", {\n className: \"helpText\"\n }, this.message), m(\"p\", {\n className: \"helpText\"\n }, timespan), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, m(Button, {\n className: \"Button Button--primary Button--block\",\n onclick: this.hide.bind(this)\n }, app.translator.trans('flarum-suspend.forum.suspension_info.dismiss_button')))));\n }\n hide() {\n localStorage.setItem(localStorageKey(), this.attrs.until.getTime());\n this.attrs.state.close();\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/SuspensionInfoModal', SuspensionInfoModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","import app from 'flarum/common/app';\nimport { BooleanGambit } from 'flarum/common/query/IGambit';\nexport default class SuspendedGambit extends BooleanGambit {\n key() {\n return app.translator.trans('flarum-suspend.lib.gambits.users.suspended.key', {}, true);\n }\n filterKey() {\n return 'suspended';\n }\n enabled() {\n return !!app.session.user && app.forum.attribute('canSuspendUsers');\n }\n}\nflarum.reg.add('flarum-suspend', 'common/query/users/SuspendedGambit', SuspendedGambit);","import Extend from 'flarum/common/extenders';\nimport SuspendedGambit from './query/users/SuspendedGambit';\nimport User from 'flarum/common/models/User';\n\n// prettier-ignore\nexport default [new Extend.Search().gambit('users', SuspendedGambit), new Extend.Model(User).attribute('canSuspend')];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Notification');","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { isPermanentSuspensionDate } from '../helpers/suspensionHelper';\nexport default class UserSuspendedNotification extends Notification {\n icon() {\n return 'fas fa-ban';\n }\n href() {\n return app.route.user(this.attrs.notification.subject());\n }\n content() {\n const notification = this.attrs.notification;\n const suspendedUntil = notification.content();\n const timeReadable = dayjs(suspendedUntil).from(notification.createdAt(), true);\n return isPermanentSuspensionDate(suspendedUntil) ? app.translator.trans('flarum-suspend.forum.notifications.user_suspended_indefinite_text') : app.translator.trans('flarum-suspend.forum.notifications.user_suspended_text', {\n timeReadable\n });\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/UserSuspendedNotification', UserSuspendedNotification);","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nexport default class UserUnsuspendedNotification extends Notification {\n icon() {\n return 'fas fa-ban';\n }\n href() {\n return app.route.user(this.attrs.notification.subject());\n }\n content() {\n const notification = this.attrs.notification;\n return app.translator.trans('flarum-suspend.forum.notifications.user_unsuspended_text');\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/UserUnsuspendedNotification', UserUnsuspendedNotification);","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport commonExtend from '../common/extend';\nimport UserSuspendedNotification from './components/UserSuspendedNotification';\nimport UserUnsuspendedNotification from './components/UserUnsuspendedNotification';\nexport default [...commonExtend, new Extend.Notification() //\n.add('userSuspended', UserSuspendedNotification).add('userUnsuspended', UserUnsuspendedNotification), new Extend.Model(User).attribute('suspendedUntil', Model.transformDate).attribute('suspendReason').attribute('suspendMessage')];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\nimport Badge from 'flarum/common/components/Badge';\nimport User from 'flarum/common/models/User';\nimport SuspendUserModal from './components/SuspendUserModal';\nimport checkForSuspension from './checkForSuspension';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-suspend', () => {\n extend(UserControls, 'moderationControls', (items, user) => {\n if (user.canSuspend()) {\n items.add('suspend', m(Button, {\n icon: \"fas fa-ban\",\n onclick: () => app.modal.show(SuspendUserModal, {\n user\n })\n }, app.translator.trans('flarum-suspend.forum.user_controls.suspend_button')));\n }\n });\n extend(User.prototype, 'badges', function (items) {\n const until = this.suspendedUntil();\n if (new Date() < until) {\n items.add('suspended', m(Badge, {\n icon: \"fas fa-ban\",\n type: \"suspended\",\n label: app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip')\n }), 100);\n }\n });\n checkForSuspension();\n});\nimport './forum';","import app from 'flarum/forum/app';\nimport SuspensionInfoModal from './components/SuspensionInfoModal';\nimport { localStorageKey } from './helpers/suspensionHelper';\nexport default function () {\n return setTimeout(() => {\n if (app.session.user) {\n const message = app.session.user.suspendMessage();\n const until = app.session.user.suspendedUntil();\n const isSuspended = message && until && new Date() < until;\n const alreadyDisplayed = localStorage.getItem(localStorageKey()) === until?.getTime().toString();\n if (isSuspended && !alreadyDisplayed) {\n app.modal.show(SuspensionInfoModal, {\n message,\n until\n });\n } else if (localStorage.getItem(localStorageKey())) {\n localStorage.removeItem(localStorageKey());\n }\n }\n }, 0);\n}"],"names":["module","exports","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","t","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","local","call","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","__webpack_module_cache__","__webpack_require__","moduleId","flarum","reg","_webpack_runtimes","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","key","Object","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","getPermanentSuspensionDate","isPermanentSuspensionDate","localStorageKey","SuspendUserModal","oninit","vnode","super","until","attrs","user","suspendedUntil","reason","suspendReason","message","suspendMessage","status","daysRemaining","dayjs","className","title","trans","content","formItems","toArray","loading","type","radioItems","items","checked","onclick","target","redraw","sync","select","oninput","label","bidi","placeholder","rows","onsubmit","preventDefault","save","then","hide","loaded","bind","SuspensionInfoModal","timespan","localStorage","setItem","state","close","SuspendedGambit","BooleanGambit","filterKey","enabled","attribute","gambit","UserSuspendedNotification","icon","href","notification","subject","timeReadable","from","createdAt","excerpt","UserUnsuspendedNotification","canSuspend","show","setTimeout","isSuspended","alreadyDisplayed","getItem","removeItem"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"forum.js","mappings":"6BAAoEA,EAAOC,QAAmI,WAAW,aAAa,IAAUC,EAAE,IAAIC,EAAE,KAAKC,EAAE,cAAcC,EAAE,SAASC,EAAE,SAASC,EAAE,OAAOC,EAAE,MAAMC,EAAE,OAAOC,EAAE,QAAQC,EAAE,UAAUC,EAAE,OAAOC,EAAE,OAAOC,EAAE,eAAeC,EAAE,6FAA6FC,EAAE,sFAAsFC,EAAE,CAACC,KAAK,KAAKC,SAAS,2DAA2DC,MAAM,KAAKC,OAAO,wFAAwFD,MAAM,KAAKE,QAAQ,SAASC,GAAG,IAAIrB,EAAE,CAAC,KAAK,KAAK,KAAK,MAAMC,EAAEoB,EAAE,IAAI,MAAM,IAAIA,GAAGrB,GAAGC,EAAE,IAAI,KAAKD,EAAEC,IAAID,EAAE,IAAI,GAAG,GAAGsB,EAAE,SAASD,EAAErB,EAAEC,GAAG,IAAIC,EAAEqB,OAAOF,GAAG,OAAOnB,GAAGA,EAAEsB,QAAQxB,EAAEqB,EAAE,GAAGI,MAAMzB,EAAE,EAAEE,EAAEsB,QAAQE,KAAKzB,GAAGoB,CAAC,EAAEM,EAAE,CAACvB,EAAEkB,EAAEM,EAAE,SAASP,GAAG,IAAIrB,GAAGqB,EAAEQ,YAAY5B,EAAE6B,KAAKC,IAAI/B,GAAGE,EAAE4B,KAAKE,MAAM/B,EAAE,IAAIE,EAAEF,EAAE,GAAG,OAAOD,GAAG,EAAE,IAAI,KAAKsB,EAAEpB,EAAE,EAAE,KAAK,IAAIoB,EAAEnB,EAAE,EAAE,IAAI,EAAEmB,EAAE,SAASD,EAAErB,EAAEC,GAAG,GAAGD,EAAEiC,OAAOhC,EAAEgC,OAAO,OAAOZ,EAAEpB,EAAED,GAAG,IAAIE,EAAE,IAAID,EAAEiC,OAAOlC,EAAEkC,SAASjC,EAAEkC,QAAQnC,EAAEmC,SAAShC,EAAEH,EAAEoC,QAAQC,IAAInC,EAAEM,GAAGJ,EAAEH,EAAEE,EAAE,EAAEE,EAAEL,EAAEoC,QAAQC,IAAInC,GAAGE,GAAG,EAAE,GAAGI,GAAG,UAAUN,GAAGD,EAAEE,IAAIC,EAAED,EAAEE,EAAEA,EAAEF,KAAK,EAAE,EAAEG,EAAE,SAASe,GAAG,OAAOA,EAAE,EAAES,KAAKQ,KAAKjB,IAAI,EAAES,KAAKE,MAAMX,EAAE,EAAEkB,EAAE,SAASlB,GAAG,MAAM,CAACN,EAAEP,EAAEM,EAAEJ,EAAE8B,EAAEjC,EAAEI,EAAEL,EAAEmC,EAAE9B,EAAED,EAAEL,EAAEiB,EAAElB,EAAEA,EAAED,EAAEuC,GAAGxC,EAAEyC,EAAElC,GAAGY,IAAIE,OAAOF,GAAG,IAAIuB,cAAcC,QAAQ,KAAK,GAAG,EAAExC,EAAE,SAASgB,GAAG,YAAO,IAASA,CAAC,GAAGyB,EAAE,KAAKL,EAAE,CAAC,EAAEA,EAAEK,GAAG/B,EAAE,IAAIwB,EAAE,iBAAiBQ,EAAE,SAAS1B,GAAG,OAAOA,aAAa2B,MAAM3B,IAAIA,EAAEkB,GAAG,EAAEC,EAAE,SAASnB,EAAErB,EAAEC,EAAEC,GAAG,IAAIC,EAAE,IAAIH,EAAE,OAAO8C,EAAE,GAAG,iBAAiB9C,EAAE,CAAC,IAAII,EAAEJ,EAAE4C,cAAcH,EAAErC,KAAKD,EAAEC,GAAGH,IAAIwC,EAAErC,GAAGH,EAAEE,EAAEC,GAAG,IAAIC,EAAEL,EAAEkB,MAAM,KAAK,IAAIf,GAAGE,EAAEmB,OAAO,EAAE,OAAOH,EAAEhB,EAAE,GAAG,KAAK,CAAC,IAAIC,EAAEN,EAAEgB,KAAKyB,EAAEnC,GAAGN,EAAEG,EAAEG,CAAC,CAAC,OAAOJ,GAAGC,IAAI2C,EAAE3C,GAAGA,IAAID,GAAG4C,CAAC,EAAEG,EAAE,SAAS5B,EAAErB,GAAG,GAAG+C,EAAE1B,GAAG,OAAOA,EAAEe,QAAQ,IAAInC,EAAE,iBAAiBD,EAAEA,EAAE,CAAC,EAAE,OAAOC,EAAEgC,KAAKZ,EAAEpB,EAAEiD,KAAKC,UAAU,IAAIH,EAAE/C,EAAE,EAAEmD,EAAEzB,EAAEyB,EAAExC,EAAE4B,EAAEY,EAAEjD,EAAE4C,EAAEK,EAAEZ,EAAE,SAASnB,EAAErB,GAAG,OAAOiD,EAAE5B,EAAE,CAACgC,OAAOrD,EAAEsD,GAAGC,IAAIvD,EAAEwD,GAAGC,EAAEzD,EAAE0D,GAAGC,QAAQ3D,EAAE2D,SAAS,EAAE,IAAIX,EAAE,WAAW,SAASjC,EAAEM,GAAGuC,KAAKN,GAAGd,EAAEnB,EAAEgC,OAAO,MAAK,GAAIO,KAAKC,MAAMxC,GAAGuC,KAAKF,GAAGE,KAAKF,IAAIrC,EAAEoC,GAAG,CAAC,EAAEG,KAAKrB,IAAG,CAAE,CAAC,IAAIjB,EAAEP,EAAE+C,UAAU,OAAOxC,EAAEuC,MAAM,SAASxC,GAAGuC,KAAKG,GAAG,SAAS1C,GAAG,IAAIrB,EAAEqB,EAAEY,KAAKhC,EAAEoB,EAAEkC,IAAI,GAAG,OAAOvD,EAAE,OAAO,IAAIgE,KAAKC,KAAK,GAAGb,EAAE/C,EAAEL,GAAG,OAAO,IAAIgE,KAAK,GAAGhE,aAAagE,KAAK,OAAO,IAAIA,KAAKhE,GAAG,GAAG,iBAAiBA,IAAI,MAAMkE,KAAKlE,GAAG,CAAC,IAAIE,EAAEF,EAAEmE,MAAMtD,GAAG,GAAGX,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAG,GAAG,EAAEE,GAAGF,EAAE,IAAI,KAAKkE,UAAU,EAAE,GAAG,OAAOnE,EAAE,IAAI+D,KAAKA,KAAKK,IAAInE,EAAE,GAAGC,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEE,IAAI,IAAI4D,KAAK9D,EAAE,GAAGC,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEE,EAAE,CAAC,CAAC,OAAO,IAAI4D,KAAKhE,EAAE,CAA3X,CAA6XqB,GAAGuC,KAAKU,MAAM,EAAEhD,EAAEgD,KAAK,WAAW,IAAIjD,EAAEuC,KAAKG,GAAGH,KAAKW,GAAGlD,EAAEmD,cAAcZ,KAAKa,GAAGpD,EAAEqD,WAAWd,KAAKe,GAAGtD,EAAEuD,UAAUhB,KAAKiB,GAAGxD,EAAEyD,SAASlB,KAAKmB,GAAG1D,EAAE2D,WAAWpB,KAAKqB,GAAG5D,EAAE6D,aAAatB,KAAKuB,GAAG9D,EAAE+D,aAAaxB,KAAKyB,IAAIhE,EAAEiE,iBAAiB,EAAEhE,EAAEiE,OAAO,WAAW,OAAOnC,CAAC,EAAE9B,EAAEkE,QAAQ,WAAW,QAAQ5B,KAAKG,GAAG0B,aAAa7E,EAAE,EAAEU,EAAEoE,OAAO,SAASrE,EAAErB,GAAG,IAAIC,EAAEgD,EAAE5B,GAAG,OAAOuC,KAAK+B,QAAQ3F,IAAIC,GAAGA,GAAG2D,KAAKgC,MAAM5F,EAAE,EAAEsB,EAAEuE,QAAQ,SAASxE,EAAErB,GAAG,OAAOiD,EAAE5B,GAAGuC,KAAK+B,QAAQ3F,EAAE,EAAEsB,EAAEwE,SAAS,SAASzE,EAAErB,GAAG,OAAO4D,KAAKgC,MAAM5F,GAAGiD,EAAE5B,EAAE,EAAEC,EAAEyE,GAAG,SAAS1E,EAAErB,EAAEC,GAAG,OAAOmD,EAAE/C,EAAEgB,GAAGuC,KAAK5D,GAAG4D,KAAKoC,IAAI/F,EAAEoB,EAAE,EAAEC,EAAE2E,KAAK,WAAW,OAAOnE,KAAKE,MAAM4B,KAAKsC,UAAU,IAAI,EAAE5E,EAAE4E,QAAQ,WAAW,OAAOtC,KAAKG,GAAGoC,SAAS,EAAE7E,EAAEqE,QAAQ,SAAStE,EAAErB,GAAG,IAAIC,EAAE2D,KAAK1D,IAAIkD,EAAE/C,EAAEL,IAAIA,EAAES,EAAE2C,EAAEb,EAAElB,GAAGT,EAAE,SAASS,EAAErB,GAAG,IAAIG,EAAEiD,EAAEZ,EAAEvC,EAAEuD,GAAGQ,KAAKK,IAAIpE,EAAEsE,GAAGvE,EAAEqB,GAAG,IAAI2C,KAAK/D,EAAEsE,GAAGvE,EAAEqB,GAAGpB,GAAG,OAAOC,EAAEC,EAAEA,EAAEyF,MAAMtF,EAAE,EAAEO,EAAE,SAASQ,EAAErB,GAAG,OAAOoD,EAAEZ,EAAEvC,EAAEmG,SAAS/E,GAAGgF,MAAMpG,EAAEmG,OAAO,MAAMlG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMoG,MAAMtG,IAAIC,EAAE,EAAEa,EAAE8C,KAAKiB,GAAG9D,EAAE6C,KAAKa,GAAGnD,EAAEsC,KAAKe,GAAGhD,EAAE,OAAOiC,KAAKJ,GAAG,MAAM,IAAI,OAAO/C,GAAG,KAAKC,EAAE,OAAOR,EAAEU,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAKJ,EAAE,OAAON,EAAEU,EAAE,EAAEG,GAAGH,EAAE,EAAEG,EAAE,GAAG,KAAKR,EAAE,IAAIuC,EAAEc,KAAK2C,UAAUC,WAAW,EAAE/D,GAAG3B,EAAEgC,EAAEhC,EAAE,EAAEA,GAAGgC,EAAE,OAAOlC,EAAEV,EAAEoB,EAAEmB,EAAEnB,GAAG,EAAEmB,GAAG1B,GAAG,KAAKT,EAAE,KAAKK,EAAE,OAAOE,EAAEc,EAAE,QAAQ,GAAG,KAAKtB,EAAE,OAAOQ,EAAEc,EAAE,UAAU,GAAG,KAAKvB,EAAE,OAAOS,EAAEc,EAAE,UAAU,GAAG,KAAKxB,EAAE,OAAOU,EAAEc,EAAE,eAAe,GAAG,QAAQ,OAAOiC,KAAKxB,QAAQ,EAAEd,EAAEsE,MAAM,SAASvE,GAAG,OAAOuC,KAAK+B,QAAQtE,GAAE,EAAG,EAAEC,EAAEmF,KAAK,SAASpF,EAAErB,GAAG,IAAIC,EAAEM,EAAE6C,EAAEb,EAAElB,GAAGZ,EAAE,OAAOmD,KAAKJ,GAAG,MAAM,IAAI5C,GAAGX,EAAE,CAAC,EAAEA,EAAEK,GAAGG,EAAE,OAAOR,EAAEU,GAAGF,EAAE,OAAOR,EAAEO,GAAGC,EAAE,QAAQR,EAAES,GAAGD,EAAE,WAAWR,EAAEI,GAAGI,EAAE,QAAQR,EAAEG,GAAGK,EAAE,UAAUR,EAAEE,GAAGM,EAAE,UAAUR,EAAEC,GAAGO,EAAE,eAAeR,GAAGM,GAAGM,EAAEN,IAAID,EAAEsD,KAAKe,IAAI3E,EAAE4D,KAAKiB,IAAI7E,EAAE,GAAGO,IAAIC,GAAGD,IAAIG,EAAE,CAAC,IAAII,EAAE8C,KAAKxB,QAAQ4D,IAAIrF,EAAE,GAAGG,EAAEiD,GAAGnD,GAAGC,GAAGC,EAAEwD,OAAOV,KAAKG,GAAGjD,EAAEkF,IAAIrF,EAAEmB,KAAK4E,IAAI9C,KAAKe,GAAG7D,EAAE6F,gBAAgB5C,EAAE,MAAMnD,GAAGgD,KAAKG,GAAGnD,GAAGC,GAAG,OAAO+C,KAAKU,OAAOV,IAAI,EAAEtC,EAAE0E,IAAI,SAAS3E,EAAErB,GAAG,OAAO4D,KAAKxB,QAAQqE,KAAKpF,EAAErB,EAAE,EAAEsB,EAAEsF,IAAI,SAASvF,GAAG,OAAOuC,KAAKR,EAAEb,EAAElB,KAAK,EAAEC,EAAEe,IAAI,SAASnC,EAAEO,GAAG,IAAIE,EAAEC,EAAEgD,KAAK1D,EAAE2G,OAAO3G,GAAG,IAAIW,EAAEuC,EAAEb,EAAE9B,GAAGK,EAAE,SAASO,GAAG,IAAIrB,EAAEiD,EAAErC,GAAG,OAAOwC,EAAEZ,EAAExC,EAAEiC,KAAKjC,EAAEiC,OAAOH,KAAKgF,MAAMzF,EAAEnB,IAAIU,EAAE,EAAE,GAAGC,IAAIL,EAAE,OAAOoD,KAAKoC,IAAIxF,EAAEoD,KAAKa,GAAGvE,GAAG,GAAGW,IAAIH,EAAE,OAAOkD,KAAKoC,IAAItF,EAAEkD,KAAKW,GAAGrE,GAAG,GAAGW,IAAIP,EAAE,OAAOQ,EAAE,GAAG,GAAGD,IAAIN,EAAE,OAAOO,EAAE,GAAG,IAAIC,GAAGJ,EAAE,CAAC,EAAEA,EAAEP,GAAGJ,EAAEW,EAAEN,GAAGJ,EAAEU,EAAER,GAA50I,IAAi1IQ,GAAGE,IAAI,EAAES,EAAEsC,KAAKG,GAAGoC,UAAUjG,EAAEa,EAAE,OAAOqC,EAAEZ,EAAElB,EAAEsC,KAAK,EAAEtC,EAAEyF,SAAS,SAAS1F,EAAErB,GAAG,OAAO4D,KAAKvB,KAAK,EAAEhB,EAAErB,EAAE,EAAEsB,EAAE0F,OAAO,SAAS3F,GAAG,IAAIrB,EAAE4D,KAAK3D,EAAE2D,KAAK2C,UAAU,IAAI3C,KAAK4B,UAAU,OAAOvF,EAAEgH,aAAarG,EAAE,IAAIV,EAAEmB,GAAG,uBAAuBlB,EAAEiD,EAAExB,EAAEgC,MAAMxD,EAAEwD,KAAKmB,GAAG1E,EAAEuD,KAAKqB,GAAG3E,EAAEsD,KAAKa,GAAGlE,EAAEN,EAAEgB,SAAST,EAAEP,EAAEkB,OAAOV,EAAER,EAAEiH,SAASxG,EAAE,SAASW,EAAEpB,EAAEE,EAAEC,GAAG,OAAOiB,IAAIA,EAAEpB,IAAIoB,EAAErB,EAAEE,KAAKC,EAAEF,GAAGqG,MAAM,EAAElG,EAAE,EAAEO,EAAE,SAASU,GAAG,OAAO+B,EAAEhD,EAAEA,EAAE,IAAI,GAAGiB,EAAE,IAAI,EAAER,EAAEJ,GAAG,SAASY,EAAErB,EAAEC,GAAG,IAAIC,EAAEmB,EAAE,GAAG,KAAK,KAAK,OAAOpB,EAAEC,EAAE0C,cAAc1C,CAAC,EAAE,OAAOA,EAAE2C,QAAQ/B,GAAG,SAASO,EAAEnB,GAAG,OAAOA,GAAG,SAASmB,GAAG,OAAOA,GAAG,IAAI,KAAK,OAAOE,OAAOvB,EAAEuE,IAAI+B,OAAO,GAAG,IAAI,OAAO,OAAOlD,EAAEhD,EAAEJ,EAAEuE,GAAG,EAAE,KAAK,IAAI,IAAI,OAAOjE,EAAE,EAAE,IAAI,KAAK,OAAO8C,EAAEhD,EAAEE,EAAE,EAAE,EAAE,KAAK,IAAI,MAAM,OAAOI,EAAET,EAAEkH,YAAY7G,EAAEE,EAAE,GAAG,IAAI,OAAO,OAAOE,EAAEF,EAAEF,GAAG,IAAI,IAAI,OAAON,EAAE2E,GAAG,IAAI,KAAK,OAAOvB,EAAEhD,EAAEJ,EAAE2E,GAAG,EAAE,KAAK,IAAI,IAAI,OAAOpD,OAAOvB,EAAE6E,IAAI,IAAI,KAAK,OAAOnE,EAAET,EAAEmH,YAAYpH,EAAE6E,GAAGtE,EAAE,GAAG,IAAI,MAAM,OAAOG,EAAET,EAAEoH,cAAcrH,EAAE6E,GAAGtE,EAAE,GAAG,IAAI,OAAO,OAAOA,EAAEP,EAAE6E,IAAI,IAAI,IAAI,OAAOtD,OAAOnB,GAAG,IAAI,KAAK,OAAOgD,EAAEhD,EAAEA,EAAE,EAAE,KAAK,IAAI,IAAI,OAAOO,EAAE,GAAG,IAAI,KAAK,OAAOA,EAAE,GAAG,IAAI,IAAI,OAAOE,EAAET,EAAEC,GAAE,GAAI,IAAI,IAAI,OAAOQ,EAAET,EAAEC,GAAE,GAAI,IAAI,IAAI,OAAOkB,OAAOlB,GAAG,IAAI,KAAK,OAAO+C,EAAEhD,EAAEC,EAAE,EAAE,KAAK,IAAI,IAAI,OAAOkB,OAAOvB,EAAEmF,IAAI,IAAI,KAAK,OAAO/B,EAAEhD,EAAEJ,EAAEmF,GAAG,EAAE,KAAK,IAAI,MAAM,OAAO/B,EAAEhD,EAAEJ,EAAEqF,IAAI,EAAE,KAAK,IAAI,IAAI,OAAOlF,EAAE,OAAO,IAAI,CAAptB,CAAstBkB,IAAIlB,EAAE0C,QAAQ,IAAI,GAAG,GAAG,EAAEvB,EAAEO,UAAU,WAAW,OAAO,IAAIC,KAAKgF,MAAMlD,KAAKG,GAAGuD,oBAAoB,GAAG,EAAEhG,EAAEiG,KAAK,SAASrH,EAAES,EAAEC,GAAG,IAAIC,EAAEC,EAAE8C,KAAK7C,EAAEqC,EAAEb,EAAE5B,GAAGW,EAAE2B,EAAE/C,GAAGyB,GAAGL,EAAEO,YAAY+B,KAAK/B,aAAa7B,EAAE8C,EAAEc,KAAKtC,EAAEmB,EAAE,WAAW,OAAOW,EAAE9B,EAAER,EAAEQ,EAAE,EAAE,OAAOP,GAAG,KAAKL,EAAEG,EAAE4B,IAAI,GAAG,MAAM,KAAKjC,EAAEK,EAAE4B,IAAI,MAAM,KAAKhC,EAAEI,EAAE4B,IAAI,EAAE,MAAM,KAAKlC,EAAEM,GAAGiC,EAAEnB,GAAG,OAAO,MAAM,KAAKrB,EAAEO,GAAGiC,EAAEnB,GAAG,MAAM,MAAM,KAAKtB,EAAEQ,EAAEiC,EAAE7C,EAAE,MAAM,KAAKG,EAAES,EAAEiC,EAAE9C,EAAE,MAAM,KAAKG,EAAEU,EAAEiC,EAA18L,IAA88L,MAAM,QAAQjC,EAAEiC,EAAE,OAAOlC,EAAEC,EAAEuC,EAAE9C,EAAEO,EAAE,EAAES,EAAEqF,YAAY,WAAW,OAAO/C,KAAKgC,MAAMpF,GAAGmE,EAAE,EAAErD,EAAEiF,QAAQ,WAAW,OAAO9D,EAAEmB,KAAKN,GAAG,EAAEhC,EAAE+B,OAAO,SAAShC,EAAErB,GAAG,IAAIqB,EAAE,OAAOuC,KAAKN,GAAG,IAAIrD,EAAE2D,KAAKxB,QAAQlC,EAAEsC,EAAEnB,EAAErB,GAAE,GAAI,OAAOE,IAAID,EAAEqD,GAAGpD,GAAGD,CAAC,EAAEqB,EAAEc,MAAM,WAAW,OAAOgB,EAAEZ,EAAEoB,KAAKG,GAAGH,KAAK,EAAEtC,EAAE8E,OAAO,WAAW,OAAO,IAAIpC,KAAKJ,KAAKsC,UAAU,EAAE5E,EAAEkG,OAAO,WAAW,OAAO5D,KAAK4B,UAAU5B,KAAK6D,cAAc,IAAI,EAAEnG,EAAEmG,YAAY,WAAW,OAAO7D,KAAKG,GAAG0D,aAAa,EAAEnG,EAAEmE,SAAS,WAAW,OAAO7B,KAAKG,GAAG2D,aAAa,EAAE3G,CAAC,CAA/sJ,GAAmtJ4G,EAAE3E,EAAEc,UAAU,OAAOb,EAAEa,UAAU6D,EAAE,CAAC,CAAC,MAAMzH,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKC,GAAG,CAAC,KAAKE,GAAG,CAAC,KAAKE,GAAG,CAAC,KAAKC,IAAIiH,SAAS,SAASvG,GAAGsG,EAAEtG,EAAE,IAAI,SAASrB,GAAG,OAAO4D,KAAKmC,GAAG/F,EAAEqB,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAI4B,EAAE4E,OAAO,SAASxG,EAAErB,GAAG,OAAOqB,EAAEyG,KAAKzG,EAAErB,EAAEgD,EAAEC,GAAG5B,EAAEyG,IAAG,GAAI7E,CAAC,EAAEA,EAAEI,OAAOb,EAAES,EAAE8E,QAAQhF,EAAEE,EAAEgD,KAAK,SAAS5E,GAAG,OAAO4B,EAAE,IAAI5B,EAAE,EAAE4B,EAAE+E,GAAGvF,EAAEK,GAAGG,EAAEgF,GAAGxF,EAAEQ,EAAEV,EAAE,CAAC,EAAEU,CAAC,CAAj6NjD,E,kBCAfF,EAAOC,QAA8I,WAAW,aAAa,IAAIsB,EAAE,SAASlB,EAAE,uBAAuBH,EAAE,eAAe,OAAO,SAASI,EAAEK,EAAER,GAAG,IAAII,EAAEI,EAAEqD,UAAU7D,EAAEsD,IAAI,SAASlC,GAAwC,OAAO,IAAIZ,EAA1C,CAACwB,KAAKZ,EAAEkC,KAAI,EAAGL,KAAKC,WAA0B,EAAE9C,EAAEkD,IAAI,SAASpD,GAAG,IAAIH,EAAEC,EAAE2D,KAAKwC,SAAS,CAAC/C,OAAOO,KAAKN,GAAGC,KAAI,IAAK,OAAOpD,EAAEH,EAAEqC,IAAIuB,KAAK/B,YAAYR,GAAGrB,CAAC,EAAEK,EAAE6H,MAAM,WAAW,OAAOjI,EAAE2D,KAAKwC,SAAS,CAAC/C,OAAOO,KAAKN,GAAGC,KAAI,GAAI,EAAE,IAAIhD,EAAEF,EAAEwD,MAAMxD,EAAEwD,MAAM,SAASxC,GAAGA,EAAEkC,MAAMK,KAAKJ,IAAG,GAAII,KAAK2B,SAASlF,EAAEgB,EAAEsC,WAAWC,KAAKD,QAAQtC,EAAEsC,SAASpD,EAAE4H,KAAKvE,KAAKvC,EAAE,EAAE,IAAInB,EAAEG,EAAEiE,KAAKjE,EAAEiE,KAAK,WAAW,GAAGV,KAAKJ,GAAG,CAAC,IAAInC,EAAEuC,KAAKG,GAAGH,KAAKW,GAAGlD,EAAE+G,iBAAiBxE,KAAKa,GAAGpD,EAAEgH,cAAczE,KAAKe,GAAGtD,EAAEiH,aAAa1E,KAAKiB,GAAGxD,EAAEkH,YAAY3E,KAAKmB,GAAG1D,EAAEmH,cAAc5E,KAAKqB,GAAG5D,EAAEoH,gBAAgB7E,KAAKuB,GAAG9D,EAAEqH,gBAAgB9E,KAAKyB,IAAIhE,EAAEsH,oBAAoB,MAAMzI,EAAEiI,KAAKvE,KAAK,EAAE,IAAItD,EAAED,EAAEwB,UAAUxB,EAAEwB,UAAU,SAASzB,EAAEK,GAAG,IAAIR,EAAE2D,KAAK2B,SAASlF,EAAE,GAAGJ,EAAEG,GAAG,OAAOwD,KAAKJ,GAAG,EAAEvD,EAAE2D,KAAKD,SAASrD,EAAE6H,KAAKvE,MAAMA,KAAKD,QAAQ,GAAG,iBAAiBvD,IAAIA,EAAE,SAASiB,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAIjB,EAAEiB,EAAE8C,MAAMhE,GAAG,IAAIC,EAAE,OAAO,KAAK,IAAIK,GAAG,GAAGL,EAAE,IAAI+D,MAAMnE,IAAI,CAAC,IAAI,EAAE,GAAGC,EAAEQ,EAAE,GAAGJ,EAAE,IAAII,EAAE,KAAKA,EAAE,GAAG,OAAO,IAAIJ,EAAE,EAAE,MAAMJ,EAAEI,GAAGA,CAAC,CAA1J,CAA4JD,GAAG,OAAOA,GAAG,OAAOwD,KAAK,IAAIvD,EAAEyB,KAAKC,IAAI3B,IAAI,GAAG,GAAGA,EAAEA,EAAEG,EAAEqD,KAAK,GAAGnD,EAAE,OAAOF,EAAEoD,QAAQtD,EAAEE,EAAEiD,GAAG,IAAIpD,EAAEG,EAAE,GAAG,IAAIH,EAAE,CAAC,IAAIF,EAAE0D,KAAKJ,GAAGI,KAAKwC,SAASkB,qBAAqB,EAAE1D,KAAK/B,aAAatB,EAAEqD,KAAKsE,QAAQ7F,IAAIhC,EAAEH,EAAEmB,IAAIsC,QAAQtD,EAAEE,EAAEmD,GAAGkF,aAAa1I,CAAC,MAAMK,EAAEqD,KAAKL,MAAM,OAAOhD,CAAC,EAAE,IAAIG,EAAEL,EAAE2G,OAAO3G,EAAE2G,OAAO,SAAS3F,GAAG,IAAIlB,EAAEkB,IAAIuC,KAAKJ,GAAG,yBAAyB,IAAI,OAAO9C,EAAEyH,KAAKvE,KAAKzD,EAAE,EAAEE,EAAE6F,QAAQ,WAAW,IAAI7E,EAAEuC,KAAK2B,SAASlF,EAAEuD,KAAKD,SAAS,EAAEC,KAAKD,SAASC,KAAKF,GAAGkF,cAAchF,KAAKG,GAAGuD,qBAAqB,OAAO1D,KAAKG,GAAGmC,UAAU,IAAI7E,CAAC,EAAEhB,EAAEwI,MAAM,WAAW,QAAQjF,KAAKJ,EAAE,EAAEnD,EAAEoH,YAAY,WAAW,OAAO7D,KAAKwC,SAASqB,aAAa,EAAEpH,EAAEoF,SAAS,WAAW,OAAO7B,KAAKwC,SAASsB,aAAa,EAAE,IAAI9G,EAAEP,EAAE+F,OAAO/F,EAAE+F,OAAO,SAAS/E,GAAG,MAAM,MAAMA,GAAGuC,KAAKD,QAAQ1D,EAAE2D,KAAKoD,OAAO,4BAA4BZ,SAASxF,EAAEuH,KAAKvE,KAAK,EAAE,IAAIpD,EAAEH,EAAEkH,KAAKlH,EAAEkH,KAAK,SAASlG,EAAElB,EAAEH,GAAG,GAAGqB,GAAGuC,KAAKJ,KAAKnC,EAAEmC,GAAG,OAAOhD,EAAE2H,KAAKvE,KAAKvC,EAAElB,EAAEH,GAAG,IAAII,EAAEwD,KAAKsE,QAAQzH,EAAER,EAAEoB,GAAG6G,QAAQ,OAAO1H,EAAE2H,KAAK/H,EAAEK,EAAEN,EAAEH,EAAE,CAAC,CAAC,CAAtnEG,E,GCC/E2I,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAC5BC,OAAOC,IAAIC,kBAAkB,oBAAsBJ,EACnD,IAAIK,EAAeN,EAAyBE,GAC5C,QAAqBK,IAAjBD,EACH,OAAOA,EAAarJ,QAGrB,IAAID,EAASgJ,EAAyBE,GAAY,CAGjDjJ,QAAS,CAAC,GAOX,OAHAuJ,EAAoBN,GAAUb,KAAKrI,EAAOC,QAASD,EAAQA,EAAOC,QAASgJ,GAGpEjJ,EAAOC,OACf,CCrBAgJ,EAAoB9I,EAAKH,IACxB,IAAIyJ,EAASzJ,GAAUA,EAAO0J,WAC7B,IAAO1J,EAAiB,QACxB,IAAM,EAEP,OADAiJ,EAAoBpI,EAAE4I,EAAQ,CAAEjJ,EAAGiJ,IAC5BA,CAAM,ECLdR,EAAoBpI,EAAI,CAACZ,EAAS0J,KACjC,IAAI,IAAIC,KAAOD,EACXV,EAAoBxI,EAAEkJ,EAAYC,KAASX,EAAoBxI,EAAER,EAAS2J,IAC5EC,OAAOC,eAAe7J,EAAS2J,EAAK,CAAEG,YAAY,EAAMjD,IAAK6C,EAAWC,IAE1E,ECNDX,EAAoBxI,EAAI,CAACuJ,EAAKC,IAAUJ,OAAO7F,UAAUkG,eAAe7B,KAAK2B,EAAKC,GCClFhB,EAAoB7I,EAAKH,IACH,oBAAXkK,QAA0BA,OAAOC,aAC1CP,OAAOC,eAAe7J,EAASkK,OAAOC,YAAa,CAAEC,MAAO,WAE7DR,OAAOC,eAAe7J,EAAS,aAAc,CAAEoK,OAAO,GAAO,E,yDCL9D,MAAM,EAA+BlB,OAAOC,IAAItC,IAAI,OAAQ,iBCAtD,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,a,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,4B,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,4B,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,2B,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,sB,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,+B,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,uB,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,yB,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,yB,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,0B,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,8B,iDCGrD,SAASwD,IACd,OAAO,IAAIpG,KAAK,aAClB,CACO,SAASqG,EAA0BpI,GACxC,OAAO,QAAUA,GAAMyD,OAAO,QAAU,cAC1C,CANA,WAAa,KAUbuD,OAAOC,IAAI7G,IAAI,iBAAkB,iCAAkC,CAAE+H,2BAA4BA,EAA2BC,0BAA2BA,EAA0BC,gBAH1K,WACL,MAAO,uCACT,ICFe,MAAMC,UAAyB,KAC5C,MAAAC,CAAOC,GACLC,MAAMF,OAAOC,GACb,IAAIE,EAAQ/G,KAAKgH,MAAMC,KAAKC,iBAC5B,MAAMC,EAASnH,KAAKgH,MAAMC,KAAKG,gBACzBC,EAAUrH,KAAKgH,MAAMC,KAAKK,iBAChC,IAAIC,EAAS,KACT,IAAInH,KAAS2G,IAAOA,EAAQ,MAC5BA,IACgCQ,EAAN,OAAxBR,EAAMnG,cAAiC,eAA6B,WAE1EZ,KAAKuH,OAAS,IAAOA,GACrBvH,KAAKmH,OAAS,IAAOA,GACrBnH,KAAKqH,QAAU,IAAOA,GACtBrH,KAAKwH,cAAgB,IAAkB,YAAXD,GAAuD,EAA9BE,QAAQ9D,KAAKoD,EAAO,QAC3E,CACA,SAAAW,GACE,MAAO,gCACT,CACA,KAAAC,GACE,OAAO,eAAeC,MAAM,0CAA2C,CACrEX,KAAMjH,KAAKgH,MAAMC,MAErB,CACA,OAAAY,GACE,OAAOnK,EAAE,MAAO,CACdgK,UAAW,cACVhK,EAAE,IAAM,KAAMsC,KAAK8H,YAAYC,UAAWrK,EAAE,MAAO,CACpDgK,UAAW,4BACVhK,EAAE,IAAQ,CACXgK,UAAW,yBACXM,QAAShI,KAAKgI,QACdC,KAAM,UACL,eAAeL,MAAM,sDAC1B,CACA,UAAAM,GACE,MAAMC,EAAQ,IAAI,KAyClB,OAxCAA,EAAM1J,IAAI,gBAAiBf,EAAE,QAAS,CACpCgK,UAAW,YACVhK,EAAE,QAAS,CACZuK,KAAM,QACN7K,KAAM,SACNgL,SAAUpI,KAAKuH,SACfhB,MAAO,GACP8B,QAAS,IAAS,QAASrI,KAAKuH,UAC9B,eAAeK,MAAM,0DAA2D,KACpFO,EAAM1J,IAAI,eAAgBf,EAAE,QAAS,CACnCgK,UAAW,YACVhK,EAAE,QAAS,CACZuK,KAAM,QACN7K,KAAM,SACNgL,QAA2B,iBAAlBpI,KAAKuH,SACdhB,MAAO,eACP8B,QAAS,IAAS,QAASrI,KAAKuH,UAC9B,eAAeK,MAAM,yDAA0D,IACnFO,EAAM1J,IAAI,kBAAmBf,EAAE,QAAS,CACtCgK,UAAW,kCACVhK,EAAE,QAAS,CACZuK,KAAM,QACN7K,KAAM,SACNgL,QAA2B,YAAlBpI,KAAKuH,SACdhB,MAAO,UACP8B,QAASjM,IACP4D,KAAKuH,OAAOnL,EAAEkM,OAAO/B,OACrB7I,EAAE6K,OAAOC,OACTxI,KAAK/C,EAAE,sCAAsCwL,SAC7CrM,EAAEmM,QAAS,CAAK,IAEhB,eAAeX,MAAM,wDAA2E,YAAlB5H,KAAKuH,UAA0B7J,EAAE,MAAO,CACxHgK,UAAW,+BACVhK,EAAE,QAAS,CACZuK,KAAM,SACNnF,IAAK,IACLyD,MAAOvG,KAAKwH,gBACZkB,QAAS,IAAS,QAAS1I,KAAKwH,eAChCE,UAAW,gBACT,eAAeE,MAAM,8DAA+D,IACjFO,CACT,CACA,SAAAL,GACE,MAAMK,EAAQ,IAAI,KAoBlB,OAnBAA,EAAM1J,IAAI,aAAcf,EAAE,IAAU,CAClCiL,MAAO,eAAef,MAAM,qDAC3B5H,KAAKkI,aAAaH,WAAY,KACjCI,EAAM1J,IAAI,SAAUf,EAAE,MAAO,CAC3BgK,UAAW,cACVhK,EAAE,QAAS,KAAM,eAAekK,MAAM,6CAA8ClK,EAAE,WAAY,CACnGgK,UAAW,cACXkB,KAAM5I,KAAKmH,OACX0B,YAAa,eAAejB,MAAM,0DAClCkB,KAAM,OACH,IACLX,EAAM1J,IAAI,UAAWf,EAAE,MAAO,CAC5BgK,UAAW,cACVhK,EAAE,QAAS,KAAM,eAAekK,MAAM,sDAAuDlK,EAAE,WAAY,CAC5GgK,UAAW,cACXkB,KAAM5I,KAAKqH,QACXwB,YAAa,eAAejB,MAAM,0DAClCkB,KAAM,OACH,IACEX,CACT,CACA,QAAAY,CAAS3M,GACPA,EAAE4M,iBACFhJ,KAAKgI,SAAU,EACf,IAAId,EAAiB,KACrB,OAAQlH,KAAKuH,UACX,IAAK,eACHL,EAAiBV,IACjB,MACF,IAAK,UACHU,EAAiBO,QAAQhJ,IAAIuB,KAAKwH,gBAAiB,QAAQhF,SAK/DxC,KAAKgH,MAAMC,KAAKgC,KAAK,CACnB/B,iBACAE,cAAepH,KAAKmH,SACpBG,eAAgBtH,KAAKqH,YACpB6B,MAAK,IAAMlJ,KAAKmJ,QAAQnJ,KAAKoJ,OAAOC,KAAKrJ,MAC9C,EAEFqF,OAAOC,IAAI7G,IAAI,iBAAkB,oCAAqCkI,GCpItE,MAAM,EAA+BtB,OAAOC,IAAItC,IAAI,OAAQ,2B,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,2B,aCM7C,MAAMsG,UAA4B,KAC/C,MAAA1C,CAAOC,GACLC,MAAMF,OAAOC,GACb7G,KAAKqH,QAAUrH,KAAKgH,MAAMK,QAC1BrH,KAAK+G,MAAQ/G,KAAKgH,MAAMD,KAC1B,CACA,SAAAW,GACE,MAAO,2BACT,CACA,KAAAC,GACE,OAAO,eAAeC,MAAM,6CAC9B,CACA,OAAAC,GACE,MAAM0B,EAAW9C,EAA0B,IAAIrG,KAAKJ,KAAK+G,QAAU,eAAea,MAAM,mDAAqD,eAAeA,MAAM,+CAAgD,CAChNvJ,KAAM,IAAS2B,KAAK+G,SAEtB,OAAOrJ,EAAE,MAAO,CACdgK,UAAW,cACVhK,EAAE,IAAM,CACTgK,UAAW,kBACVhK,EAAE,IAAK,CACRgK,UAAW,YACV1H,KAAKqH,SAAU3J,EAAE,IAAK,CACvBgK,UAAW,YACV6B,GAAW7L,EAAE,MAAO,CACrBgK,UAAW,4BACVhK,EAAE,IAAQ,CACXgK,UAAW,uCACXW,QAASrI,KAAKmJ,KAAKE,KAAKrJ,OACvB,eAAe4H,MAAM,0DAC1B,CACA,IAAAuB,GACEK,aAAaC,QJ5BR,wCI4BmCzJ,KAAKgH,MAAMD,MAAMxE,WACzDvC,KAAKgH,MAAM0C,MAAMC,OACnB,EAEFtE,OAAOC,IAAI7G,IAAI,iBAAkB,uCAAwC6K,GC1CzE,MAAM,EAA+BjE,OAAOC,IAAItC,IAAI,OAAQ,oB,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,gB,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,c,aCA5D,MAAM,EAA+BqC,OAAOC,IAAItC,IAAI,OAAQ,wBCE7C,MAAM4G,UAAwB,EAAAC,cAC3C,GAAA/D,GACE,OAAO,eAAe8B,MAAM,iDAAkD,CAAC,GAAG,EACpF,CACA,SAAAkC,GACE,MAAO,WACT,CACA,OAAAC,GACE,QAAS,YAAY9C,MAAQ,UAAU+C,UAAU,kBACnD,EAEF3E,OAAOC,IAAI7G,IAAI,iBAAkB,qCAAsCmL,GCRvE,UAAgB,IAAI,aAAgBK,OAAO,QAASL,GAAkB,IAAI,WAAa,KAAMI,UAAU,eCLjG,EAA+B3E,OAAOC,IAAItC,IAAI,OAAQ,iC,aCG7C,MAAMkH,UAAkC,KACrD,IAAAC,GACE,MAAO,YACT,CACA,IAAAC,GACE,OAAO,UAAUnD,KAAKjH,KAAKgH,MAAMqD,aAAaC,UAChD,CACA,OAAAzC,GACE,MAAMwC,EAAerK,KAAKgH,MAAMqD,aAC1BnD,EAAiBmD,EAAaxC,UAC9B0C,EAAe9C,MAAMP,GAAgBsD,KAAKH,EAAaI,aAAa,GAC1E,OAAOhE,EAA0BS,GAAkB,eAAeU,MAAM,qEAAuE,eAAeA,MAAM,yDAA0D,CAC5N2C,gBAEJ,CACA,OAAAG,GACE,OAAO,IACT,EAEFrF,OAAOC,IAAI7G,IAAI,iBAAkB,6CAA8CyL,GCpBhE,MAAMS,UAAoC,KACvD,IAAAR,GACE,MAAO,YACT,CACA,IAAAC,GACE,OAAO,UAAUnD,KAAKjH,KAAKgH,MAAMqD,aAAaC,UAChD,CACA,OAAAzC,GAEE,OADqB7H,KAAKgH,MAAMqD,aACzB,eAAezC,MAAM,2DAC9B,CACA,OAAA8C,GACE,OAAO,IACT,EAEFrF,OAAOC,IAAI7G,IAAI,iBAAkB,+CAAgDkM,GCXjF,YAAmB,GAAc,IAAI,mBACpClM,IAAI,gBAAiByL,GAA2BzL,IAAI,kBAAmBkM,GAA8B,IAAI,WAAa,KAAMX,UAAU,iBAAkB,mBAAqBA,UAAU,iBAAiBA,UAAU,mBCEnN,iBAAiBvL,IAAI,kBAAkB,MACrC,IAAAwF,QAAO,IAAc,sBAAsB,CAACkE,EAAOlB,KAC7CA,EAAK2D,cACPzC,EAAM1J,IAAI,UAAWf,EAAE,IAAQ,CAC7ByM,KAAM,aACN9B,QAAS,IAAM,UAAUwC,KAAKlE,EAAkB,CAC9CM,UAED,eAAeW,MAAM,sDAC1B,KAEF,IAAA3D,QAAO,cAAgB,UAAU,SAAUkE,GACzC,MAAMpB,EAAQ/G,KAAKkH,iBACf,IAAI9G,KAAS2G,GACfoB,EAAM1J,IAAI,YAAaf,EAAE,IAAO,CAC9ByM,KAAM,aACNlC,KAAM,YACNU,MAAO,eAAef,MAAM,qDAC5BkD,SAAU,MACR,IAER,IC1BOC,YAAW,KAChB,GAAI,YAAY9D,KAAM,CACpB,MAAMI,EAAU,YAAYJ,KAAKK,iBAC3BP,EAAQ,YAAYE,KAAKC,iBACzB8D,EAAc3D,GAAWN,GAAS,IAAI3G,KAAS2G,EAC/CkE,EAAmBzB,aAAa0B,QhBCnC,2CgBDkEnE,GAAOxE,UAAUV,WAClFmJ,IAAgBC,EAClB,UAAUJ,KAAKvB,EAAqB,CAClCjC,UACAN,UAEOyC,aAAa0B,QhBLrB,0CgBMD1B,aAAa2B,WhBNZ,wCgBQL,IACC,EDYiB,G","sources":["webpack://@flarum/suspend/../../../node_modules/dayjs/dayjs.min.js","webpack://@flarum/suspend/../../../node_modules/dayjs/plugin/utc.js","webpack://@flarum/suspend/webpack/bootstrap","webpack://@flarum/suspend/webpack/runtime/compat get default export","webpack://@flarum/suspend/webpack/runtime/define property getters","webpack://@flarum/suspend/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/suspend/webpack/runtime/make namespace object","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/extend')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'forum/app')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'forum/utils/UserControls')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/components/Button')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/components/Badge')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/models/User')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/components/FormModal')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/utils/Stream')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/utils/withAttr')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/utils/ItemList')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/components/Form')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/components/FieldSet')\"","webpack://@flarum/suspend/./src/forum/helpers/suspensionHelper.ts","webpack://@flarum/suspend/./src/forum/components/SuspendUserModal.js","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/components/Modal')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/helpers/fullTime')\"","webpack://@flarum/suspend/./src/forum/components/SuspensionInfoModal.js","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/extenders')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/Model')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/app')\"","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'common/query/IGambit')\"","webpack://@flarum/suspend/./src/common/query/users/SuspendedGambit.ts","webpack://@flarum/suspend/./src/common/extend.ts","webpack://@flarum/suspend/external root \"flarum.reg.get('core', 'forum/components/Notification')\"","webpack://@flarum/suspend/./src/forum/components/UserSuspendedNotification.js","webpack://@flarum/suspend/./src/forum/components/UserUnsuspendedNotification.js","webpack://@flarum/suspend/./src/forum/extend.ts","webpack://@flarum/suspend/./src/forum/index.js","webpack://@flarum/suspend/./src/forum/checkForSuspension.js"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|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])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.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($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.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()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(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.reg.get('core', 'common/extend');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/utils/UserControls');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Button');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Badge');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/models/User');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FormModal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/Stream');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/withAttr');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/utils/ItemList');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Form');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/FieldSet');","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\ndayjs.extend(utc);\nexport function getPermanentSuspensionDate() {\n return new Date('2038-01-01');\n}\nexport function isPermanentSuspensionDate(date) {\n return dayjs.utc(date).isSame(dayjs.utc('2038-01-01'));\n}\nexport function localStorageKey() {\n return 'flarum-suspend.acknowledge-suspension';\n}\nflarum.reg.add('flarum-suspend', 'forum/helpers/suspensionHelper', { getPermanentSuspensionDate: getPermanentSuspensionDate,isPermanentSuspensionDate: isPermanentSuspensionDate,localStorageKey: localStorageKey, });","import app from 'flarum/forum/app';\nimport FormModal from 'flarum/common/components/FormModal';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Form from 'flarum/common/components/Form';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport { getPermanentSuspensionDate } from '../helpers/suspensionHelper';\nexport default class SuspendUserModal extends FormModal {\n oninit(vnode) {\n super.oninit(vnode);\n let until = this.attrs.user.suspendedUntil();\n const reason = this.attrs.user.suspendReason();\n const message = this.attrs.user.suspendMessage();\n let status = null;\n if (new Date() > until) until = null;\n if (until) {\n if (until.getFullYear() === 9999) status = 'indefinitely';else status = 'limited';\n }\n this.status = Stream(status);\n this.reason = Stream(reason);\n this.message = Stream(message);\n this.daysRemaining = Stream(status === 'limited' && -dayjs().diff(until, 'days') + 1);\n }\n className() {\n return 'SuspendUserModal Modal--medium';\n }\n title() {\n return app.translator.trans('flarum-suspend.forum.suspend_user.title', {\n user: this.attrs.user\n });\n }\n content() {\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, null, this.formItems().toArray(), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, m(Button, {\n className: \"Button Button--primary\",\n loading: this.loading,\n type: \"submit\"\n }, app.translator.trans('flarum-suspend.forum.suspend_user.submit_button')))));\n }\n radioItems() {\n const items = new ItemList();\n items.add('not-suspended', m(\"label\", {\n className: \"checkbox\"\n }, m(\"input\", {\n type: \"radio\",\n name: \"status\",\n checked: !this.status(),\n value: \"\",\n onclick: withAttr('value', this.status)\n }), app.translator.trans('flarum-suspend.forum.suspend_user.not_suspended_label')), 100);\n items.add('indefinitely', m(\"label\", {\n className: \"checkbox\"\n }, m(\"input\", {\n type: \"radio\",\n name: \"status\",\n checked: this.status() === 'indefinitely',\n value: \"indefinitely\",\n onclick: withAttr('value', this.status)\n }), app.translator.trans('flarum-suspend.forum.suspend_user.indefinitely_label')), 90);\n items.add('time-suspension', m(\"label\", {\n className: \"checkbox SuspendUserModal-days\"\n }, m(\"input\", {\n type: \"radio\",\n name: \"status\",\n checked: this.status() === 'limited',\n value: \"limited\",\n onclick: e => {\n this.status(e.target.value);\n m.redraw.sync();\n this.$('.SuspendUserModal-days-input input').select();\n e.redraw = false;\n }\n }), app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_label'), this.status() === 'limited' && m(\"div\", {\n className: \"SuspendUserModal-days-input\"\n }, m(\"input\", {\n type: \"number\",\n min: \"0\",\n value: this.daysRemaining(),\n oninput: withAttr('value', this.daysRemaining),\n className: \"FormControl\"\n }), app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_days_text'))), 80);\n return items;\n }\n formItems() {\n const items = new ItemList();\n items.add('radioItems', m(FieldSet, {\n label: app.translator.trans('flarum-suspend.forum.suspend_user.status_heading')\n }, this.radioItems().toArray()), 100);\n items.add('reason', m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-suspend.forum.suspend_user.reason')), m(\"textarea\", {\n className: \"FormControl\",\n bidi: this.reason,\n placeholder: app.translator.trans('flarum-suspend.forum.suspend_user.placeholder_optional'),\n rows: \"4\"\n })), 90);\n items.add('message', m(\"div\", {\n className: \"Form-group\"\n }, m(\"label\", null, app.translator.trans('flarum-suspend.forum.suspend_user.display_message')), m(\"textarea\", {\n className: \"FormControl\",\n bidi: this.message,\n placeholder: app.translator.trans('flarum-suspend.forum.suspend_user.placeholder_optional'),\n rows: \"4\"\n })), 80);\n return items;\n }\n onsubmit(e) {\n e.preventDefault();\n this.loading = true;\n let suspendedUntil = null;\n switch (this.status()) {\n case 'indefinitely':\n suspendedUntil = getPermanentSuspensionDate();\n break;\n case 'limited':\n suspendedUntil = dayjs().add(this.daysRemaining(), 'days').toDate();\n break;\n default:\n // no default\n }\n this.attrs.user.save({\n suspendedUntil,\n suspendReason: this.reason(),\n suspendMessage: this.message()\n }).then(() => this.hide(), this.loaded.bind(this));\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/SuspendUserModal', SuspendUserModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/components/Modal');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/helpers/fullTime');","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport fullTime from 'flarum/common/helpers/fullTime';\nimport Form from 'flarum/common/components/Form';\nimport { isPermanentSuspensionDate, localStorageKey } from '../helpers/suspensionHelper';\nexport default class SuspensionInfoModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n this.message = this.attrs.message;\n this.until = this.attrs.until;\n }\n className() {\n return 'SuspensionInfoModal Modal';\n }\n title() {\n return app.translator.trans('flarum-suspend.forum.suspension_info.title');\n }\n content() {\n const timespan = isPermanentSuspensionDate(new Date(this.until)) ? app.translator.trans('flarum-suspend.forum.suspension_info.indefinite') : app.translator.trans('flarum-suspend.forum.suspension_info.limited', {\n date: fullTime(this.until)\n });\n return m(\"div\", {\n className: \"Modal-body\"\n }, m(Form, {\n className: \"Form--centered\"\n }, m(\"p\", {\n className: \"helpText\"\n }, this.message), m(\"p\", {\n className: \"helpText\"\n }, timespan), m(\"div\", {\n className: \"Form-group Form-controls\"\n }, m(Button, {\n className: \"Button Button--primary Button--block\",\n onclick: this.hide.bind(this)\n }, app.translator.trans('flarum-suspend.forum.suspension_info.dismiss_button')))));\n }\n hide() {\n localStorage.setItem(localStorageKey(), this.attrs.until.getTime());\n this.attrs.state.close();\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/SuspensionInfoModal', SuspensionInfoModal);","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/extenders');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/Model');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/app');","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'common/query/IGambit');","import app from 'flarum/common/app';\nimport { BooleanGambit } from 'flarum/common/query/IGambit';\nexport default class SuspendedGambit extends BooleanGambit {\n key() {\n return app.translator.trans('flarum-suspend.lib.gambits.users.suspended.key', {}, true);\n }\n filterKey() {\n return 'suspended';\n }\n enabled() {\n return !!app.session.user && app.forum.attribute('canSuspendUsers');\n }\n}\nflarum.reg.add('flarum-suspend', 'common/query/users/SuspendedGambit', SuspendedGambit);","import Extend from 'flarum/common/extenders';\nimport SuspendedGambit from './query/users/SuspendedGambit';\nimport User from 'flarum/common/models/User';\n\n// prettier-ignore\nexport default [new Extend.Search().gambit('users', SuspendedGambit), new Extend.Model(User).attribute('canSuspend')];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.reg.get('core', 'forum/components/Notification');","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { isPermanentSuspensionDate } from '../helpers/suspensionHelper';\nexport default class UserSuspendedNotification extends Notification {\n icon() {\n return 'fas fa-ban';\n }\n href() {\n return app.route.user(this.attrs.notification.subject());\n }\n content() {\n const notification = this.attrs.notification;\n const suspendedUntil = notification.content();\n const timeReadable = dayjs(suspendedUntil).from(notification.createdAt(), true);\n return isPermanentSuspensionDate(suspendedUntil) ? app.translator.trans('flarum-suspend.forum.notifications.user_suspended_indefinite_text') : app.translator.trans('flarum-suspend.forum.notifications.user_suspended_text', {\n timeReadable\n });\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/UserSuspendedNotification', UserSuspendedNotification);","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nexport default class UserUnsuspendedNotification extends Notification {\n icon() {\n return 'fas fa-ban';\n }\n href() {\n return app.route.user(this.attrs.notification.subject());\n }\n content() {\n const notification = this.attrs.notification;\n return app.translator.trans('flarum-suspend.forum.notifications.user_unsuspended_text');\n }\n excerpt() {\n return null;\n }\n}\nflarum.reg.add('flarum-suspend', 'forum/components/UserUnsuspendedNotification', UserUnsuspendedNotification);","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport commonExtend from '../common/extend';\nimport UserSuspendedNotification from './components/UserSuspendedNotification';\nimport UserUnsuspendedNotification from './components/UserUnsuspendedNotification';\nexport default [...commonExtend, new Extend.Notification() //\n.add('userSuspended', UserSuspendedNotification).add('userUnsuspended', UserUnsuspendedNotification), new Extend.Model(User).attribute('suspendedUntil', Model.transformDate).attribute('suspendReason').attribute('suspendMessage')];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\nimport Badge from 'flarum/common/components/Badge';\nimport User from 'flarum/common/models/User';\nimport SuspendUserModal from './components/SuspendUserModal';\nimport checkForSuspension from './checkForSuspension';\nexport { default as extend } from './extend';\napp.initializers.add('flarum-suspend', () => {\n extend(UserControls, 'moderationControls', (items, user) => {\n if (user.canSuspend()) {\n items.add('suspend', m(Button, {\n icon: \"fas fa-ban\",\n onclick: () => app.modal.show(SuspendUserModal, {\n user\n })\n }, app.translator.trans('flarum-suspend.forum.user_controls.suspend_button')));\n }\n });\n extend(User.prototype, 'badges', function (items) {\n const until = this.suspendedUntil();\n if (new Date() < until) {\n items.add('suspended', m(Badge, {\n icon: \"fas fa-ban\",\n type: \"suspended\",\n label: app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip'),\n tabindex: \"0\"\n }), 100);\n }\n });\n checkForSuspension();\n});\nimport './forum';","import app from 'flarum/forum/app';\nimport SuspensionInfoModal from './components/SuspensionInfoModal';\nimport { localStorageKey } from './helpers/suspensionHelper';\nexport default function () {\n return setTimeout(() => {\n if (app.session.user) {\n const message = app.session.user.suspendMessage();\n const until = app.session.user.suspendedUntil();\n const isSuspended = message && until && new Date() < until;\n const alreadyDisplayed = localStorage.getItem(localStorageKey()) === until?.getTime().toString();\n if (isSuspended && !alreadyDisplayed) {\n app.modal.show(SuspensionInfoModal, {\n message,\n until\n });\n } else if (localStorage.getItem(localStorageKey())) {\n localStorage.removeItem(localStorageKey());\n }\n }\n }, 0);\n}"],"names":["module","exports","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","t","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","local","call","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","__webpack_module_cache__","__webpack_require__","moduleId","flarum","reg","_webpack_runtimes","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","key","Object","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","getPermanentSuspensionDate","isPermanentSuspensionDate","localStorageKey","SuspendUserModal","oninit","vnode","super","until","attrs","user","suspendedUntil","reason","suspendReason","message","suspendMessage","status","daysRemaining","dayjs","className","title","trans","content","formItems","toArray","loading","type","radioItems","items","checked","onclick","target","redraw","sync","select","oninput","label","bidi","placeholder","rows","onsubmit","preventDefault","save","then","hide","loaded","bind","SuspensionInfoModal","timespan","localStorage","setItem","state","close","SuspendedGambit","BooleanGambit","filterKey","enabled","attribute","gambit","UserSuspendedNotification","icon","href","notification","subject","timeReadable","from","createdAt","excerpt","UserUnsuspendedNotification","canSuspend","show","tabindex","setTimeout","isSuspended","alreadyDisplayed","getItem","removeItem"],"sourceRoot":""}
\ No newline at end of file
diff --git a/framework/core/js/dist-typings/common/utils/a11y.d.ts b/framework/core/js/dist-typings/common/utils/a11y.d.ts
new file mode 100644
index 000000000..b9145db42
--- /dev/null
+++ b/framework/core/js/dist-typings/common/utils/a11y.d.ts
@@ -0,0 +1,5 @@
+/**
+ * Fix a11y skip links by manually focusing on the href target element.
+ * This prevents unwanted/unexpected reloads of the page.
+ */
+export declare function prepareSkipLinks(): void;
diff --git a/framework/core/js/dist/admin.js b/framework/core/js/dist/admin.js
index bcba828cb..02833a9a4 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,e,n={5710:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(8805);class s{constructor(){(0,r.A)(this,"element",void 0),(0,r.A)(this,"attrs",void 0),(0,r.A)(this,"state",void 0)}oninit(t){this.setAttrs(t.attrs)}oncreate(t){this.element=t.dom}onbeforeupdate(t){this.setAttrs(t.attrs)}onupdate(t){}onbeforeremove(t){}onremove(t){}$(t){const e=$(this.element);return t?e.find(t):e}static component(t,e){void 0===t&&(t={}),void 0===e&&(e=null);const n={...t};return m(this,n,e)}setAttrs(t){if(void 0===t&&(t={}),this.constructor.initAttrs(t),t){if("children"in t)throw new Error(`[${this.constructor.name}] The "children" attribute of attrs should never be used. Either pass children in as the vnode children or rename the attribute`);if("tag"in t)throw new Error(`[${this.constructor.name}] You cannot use the "tag" attribute name with Mithril 2.`)}this.attrs=t}static initAttrs(t){}}flarum.reg.add("core","common/Component",s)},5420:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(8805),s=n(5114);class i{constructor(t,e){void 0===t&&(t={}),void 0===e&&(e=s.A.store),(0,r.A)(this,"data",{}),(0,r.A)(this,"freshness",new Date),(0,r.A)(this,"exists",!1),(0,r.A)(this,"store",void 0),this.data=t,this.store=e}id(){return"id"in this.data?this.data.id:void 0}attribute(t){return this.data?.attributes?.[t]}pushData(t){if("id"in t&&(this.data.id=t.id),"type"in t&&(this.data.type=t.type),"attributes"in t){this.data.attributes||={};for(const e in t.attributes){const n=t.attributes[e];n&&n instanceof i&&delete t.attributes[e]}Object.assign(this.data.attributes,t.attributes)}if("relationships"in t){const e=this.data.relationships??{};for(const n in t.relationships){const r=t.relationships[n];if(null===r){delete e[n],delete t.relationships[n];continue}let s;s=r instanceof i?{data:i.getIdentifier(r)}:r instanceof Array?{data:r.map(i.getIdentifier)}:r,t.relationships[n]=s,e[n]=s}this.data.relationships=e}return this.freshness=new Date,this}pushAttributes(t){this.pushData({attributes:t})}save(t,e){void 0===e&&(e={});const n={type:this.data.type,attributes:t};if("id"in this.data&&(n.id=this.data.id),t.relationships&&!("relationships"in this)){n.relationships={};for(const e in t.relationships){const r=t.relationships[e];null!==r&&(n.relationships[e]={data:r instanceof Array?r.map(i.getIdentifier):i.getIdentifier(r)})}delete t.relationships}const r=this.copyData();this.pushData(n);const a={data:n,meta:e.meta||void 0};return s.A.request({method:this.exists?"PATCH":"POST",url:s.A.forum.attribute("apiUrl")+this.apiEndpoint(),body:a,...e}).then((t=>this.store.pushPayload(t)),(t=>{throw this.pushData(r),m.redraw(),t}))}delete(t,e){return void 0===t&&(t={}),void 0===e&&(e={}),this.exists?s.A.request({method:"DELETE",url:s.A.forum.attribute("apiUrl")+this.apiEndpoint(),body:t,...e}).then((()=>{this.exists=!1,this.store.remove(this)})):Promise.resolve()}apiEndpoint(){return"/"+this.data.type+("id"in this.data?"/"+this.data.id:"")}copyData(){return JSON.parse(JSON.stringify(this.data))}rawRelationship(t){return this.data.relationships?.[t]?.data}static attribute(t,e){return function(){return e?e(this.attribute(t)):this.attribute(t)}}static hasOne(t){return function(){const e=this.data.relationships?.[t]?.data;if(e&&e instanceof Array)throw new Error(`Relationship ${t} on model ${this.data.type} is plural, so the hasOne method cannot be used to access it.`);return!!e&&this.store.getById(e.type,e.id)}}static hasMany(t){return function(){const e=this.data.relationships?.[t]?.data;if(e&&!(e instanceof Array))throw new Error(`Relationship ${t} on model ${this.data.type} is singular, so the hasMany method cannot be used to access it.`);return!!e&&e.map((t=>this.store.getById(t.type,t.id)))}}static transformDate(t){return null!=t?new Date(t):t}static getIdentifier(t){return t&&t.data&&"id"in t.data?{type:t.data.type,id:t.data.id}:null}}flarum.reg.add("core","common/Model",i)},3920:(t,e,n)=>{"use strict";n.d(e,{A:()=>p});var r=n(8805),s=n(5114),i=n(8631);class a extends i.px{key(){return s.A.translator.trans("core.lib.gambits.discussions.author.key",{},!0)}hint(){return s.A.translator.trans("core.lib.gambits.discussions.author.hint",{},!0)}filterKey(){return"author"}}flarum.reg.add("core","common/query/discussions/AuthorGambit",a);class o extends i.px{key(){return s.A.translator.trans("core.lib.gambits.discussions.created.key",{},!0)}hint(){return s.A.translator.trans("core.lib.gambits.discussions.created.hint",{},!0)}valuePattern(){return"(\\d{4}\\-\\d\\d\\-\\d\\d(?:\\.\\.(\\d{4}\\-\\d\\d\\-\\d\\d))?)"}filterKey(){return"created"}}flarum.reg.add("core","common/query/discussions/CreatedGambit",o);class l extends i.pm{key(){return s.A.translator.trans("core.lib.gambits.discussions.hidden.key",{},!0)}filterKey(){return"hidden"}enabled(){return!!s.A.session.user}}flarum.reg.add("core","common/query/discussions/HiddenGambit",l);class c extends i.pm{key(){return s.A.translator.trans("core.lib.gambits.discussions.unread.key",{},!0)}filterKey(){return"unread"}enabled(){return!!s.A.session.user}}flarum.reg.add("core","common/query/discussions/UnreadGambit",c);class u extends i.px{key(){return s.A.translator.trans("core.lib.gambits.users.email.key",{},!0)}hint(){return s.A.translator.trans("core.lib.gambits.users.email.hint",{},!0)}filterKey(){return"email"}enabled(){return!(!s.A.session.user||!s.A.forum.attribute("canEditUserCredentials"))}}flarum.reg.add("core","common/query/users/EmailGambit",u);class d extends i.px{key(){return s.A.translator.trans("core.lib.gambits.users.group.key",{},!0)}hint(){return s.A.translator.trans("core.lib.gambits.users.group.hint",{},!0)}filterKey(){return"group"}}flarum.reg.add("core","common/query/users/GroupGambit",d);class h extends i.px{key(){return s.A.translator.trans("core.lib.gambits.posts.discussion.key",{},!0)}hint(){return s.A.translator.trans("core.lib.gambits.posts.discussion.hint",{},!0)}filterKey(){return"discussion"}}flarum.reg.add("core","common/query/discussions/DiscussionGambit",h);class m{constructor(){(0,r.A)(this,"gambits",{discussions:[a,o,l,c],posts:[a,h],users:[u,d]})}apply(t,e){return e.q=this.match(t,e.q,((t,n,r)=>{const s=t.toFilter(n,r);Object.keys(s).forEach((n=>{n in e&&t.predicates&&Array.isArray(s[n])?e[n]=e[n].concat(s[n]):e[n]=s[n]}))})),e}match(t,e,n){const r=this.for(t).filter((t=>t.enabled()));if(0===r.length)return e;const s=e.split(" ");for(const t of r)for(const r of s){const s=new RegExp(`^(-?)${t.pattern()}$`,"i");let i=r.match(s);if(i){const s="-"===i[1];i.splice(1,1),n(t,i,s,r),e=e.replace(r,"")}}return e.trim().replace(/\s+/g," ")}from(t,e,n){const r=this.for(t);return 0===r.length||Object.keys(n).forEach((t=>{for(const s of r){const r="-"===t[0];r&&(t=t.substring(1)),s.filterKey()===t&&(e+=` ${s.fromFilter(n[t],r)}`)}})),e}for(t){return(this.gambits[t]||[]).map((t=>new t))}}flarum.reg.add("core","common/GambitManager",m);class p{constructor(t){(0,r.A)(this,"state",void 0),(0,r.A)(this,"gambits",new m),this.state=t}}(0,r.A)(p,"MIN_SEARCH_LEN",3),(0,r.A)(p,"SEARCH_DEBOUNCE_TIME_MS",250),flarum.reg.add("core","common/SearchManager",p)},5114:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});const r=window,s=new Proxy({},{get:(t,e)=>Reflect.get(r.app,e,r.app),set:(t,e,n)=>Reflect.set(r.app,e,n,r.app)}),i=s;flarum.reg.add("core","common/app",s)},9924:(t,e,n)=>{"use strict";n.d(e,{A:()=>u});var r=n(5710),s=n(3092),i=n(5673),a=n(4586),o=n(4268),l=n(5114),c=n(7479);class u extends r.A{view(t){const e=Object.assign({},this.attrs),n=(0,a.A)(e,"type");e.className=(0,o.A)("Alert",`Alert--${n}`,e.className);const r=(0,a.A)(e,"title"),u=(0,a.A)(e,"icon"),d=(0,a.A)(e,"content")||t.children,h=(0,a.A)(e,"controls")||[],p=(0,a.A)(e,"dismissible"),f=(0,a.A)(e,"ondismiss"),g=[];return(p||void 0===p)&&g.push(m(s.A,{"aria-label":l.A.translator.trans("core.lib.alert.dismiss_a11y_label"),icon:"fas fa-times",className:"Button Button--link Button--icon Alert-dismiss",onclick:f})),m("div",e,m("div",{className:(0,o.A)("Alert-container",e.containerClassName)},m("div",{className:"Alert-content"},!!r&&m("div",{className:"Alert-title"},!!u&&m("span",{className:"Alert-title-icon"},m(c.A,{name:u})),m("span",{className:"Alert-title-text"},r)),m("span",{className:"Alert-body"},d)),m("ul",{className:"Alert-controls"},(0,i.A)(h.concat(g)))))}}flarum.reg.add("core","common/components/Alert",u)},367:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(4391),s=n(5710),i=n(4268),a=n(3288),o=n(7479);class l extends s.A{view(){const{type:t,icon:e,label:n,color:s,style:l={},...c}=this.attrs,u=(0,i.A)("Badge",[t&&`Badge--${t}`],c.className,(0,a.A)(s)),d=e?m(o.A,{name:e,className:"Badge-icon"}):m.trust(" "),h={...l};window.testing||(h["--badge-bg"]=s);const p={...c,className:u,style:h},f=m("div",p,d);return n?m(r.A,{text:n},f):f}}flarum.reg.add("core","common/components/Badge",l)},3092:(t,e,n)=>{"use strict";n.d(e,{A:()=>c});var r=n(5710),s=n(4434),i=n(4268),a=n(117),o=n(43),l=n(7479);class c extends r.A{view(t){let{type:e,"aria-label":n,icon:r,disabled:s,loading:o,className:l,class:c,helperText:u,...d}=this.attrs;e||="button","object"==typeof n&&(n=(0,a.A)(n)),(s||o)&&delete d.onclick,l=(0,i.A)(c,l,{hasIcon:r,disabled:s||o,loading:o,hasSubContent:!!this.getButtonSubContent()});const h={disabled:s,className:l,type:e,"aria-label":n,...d};return m("button",h,this.getButtonContent(t.children))}oncreate(t){super.oncreate(t);const{"aria-label":e}=this.attrs;this.view!==c.prototype.view||e||(0,a.A)(t.children)||this.element?.getAttribute?.("aria-label")||(0,s.A)('[Flarum Accessibility Warning] Button has no content and no accessible label. This means that screen-readers will not be able to interpret its meaning and just read "Button". Consider providing accessible text via the `aria-label` attribute. https://web.dev/button-name',this.element)}getButtonContent(t){const e=this.attrs.icon;return[e&&("string"==typeof e||!0===e?m(l.A,{name:e,className:"Button-icon"}):e),t&&m("span",{className:"Button-label"},m("span",{className:"Button-labelText"},t),this.getButtonSubContent()),this.attrs.loading&&m(o.A,{size:"small",display:"inline"})]}getButtonSubContent(){return this.attrs.helperText?m("span",{className:"Button-helperText"},this.attrs.helperText):null}}flarum.reg.add("core","common/components/Button",c)},374:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(5710),s=n(4268);class i extends r.A{view(t){const{label:e,description:n,className:r,...i}=t.attrs;return m("div",Object.assign({className:(0,s.A)("Form",r)},i),(e||n)&&m("div",{className:"Form-header"},e&&m("label",null,e),n&&m("p",{className:"helpText"},n)),m("div",{className:"Form-body"},t.children))}}flarum.reg.add("core","common/components/Form",i)},2855:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(2849);class s extends r.A{wrapper(t){return m("form",{onsubmit:this.onsubmit.bind(this)},t)}onsubmit(t){}onready(){this.$().find("input, select, textarea").first().trigger("focus").trigger("select")}onerror(t){this.alertAttrs=t.alert,m.redraw(),422===t.status&&t.response?.errors?this.$("form [name="+t.response.errors[0].source.pointer.replace("/data/attributes/","")+"]").trigger("select"):this.onready()}}flarum.reg.add("core","common/components/FormModal",s)},3550:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(367);class s extends r.A{static initAttrs(t){super.initAttrs(t),t.group&&(t.icon=t.group.icon()||"",t.color=t.group.color()||"",t.label=void 0===t.label?t.group.nameSingular():t.label,t.type="group--"+t.group.id(),delete t.group)}}flarum.reg.add("core","common/components/GroupBadge",s)},7479:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(4268),s=n(5710);class i extends s.A{view(t){const{name:e,...n}=t.attrs;return n.className=(0,r.A)("icon",e,n.className),m("i",Object.assign({"aria-hidden":"true"},n))}}flarum.reg.add("core","common/components/Icon",i)},4164:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(5710),s=n(7479),i=n(4268);class a extends r.A{view(t){const{icon:e,className:n,...r}=t.attrs;return m("div",Object.assign({className:(0,i.A)("InfoTile",n)},r),this.icon(),m("div",{className:"InfoTile-text"},t.children))}icon(){return this.attrs.iconElement?this.attrs.iconElement:this.attrs.icon?m(s.A,{name:(0,i.A)(this.attrs.icon,"InfoTile-icon")}):null}}flarum.reg.add("core","common/components/InfoTile",a)},7882:(t,e,n)=>{"use strict";n.d(e,{A:()=>c});var r=n(5114),s=n(5710),i=n(7479),a=n(43),o=n(4268),l=n(3092);class c extends s.A{oninit(t){super.oninit(t)}view(t){const{className:e,...n}=this.attrs.inputAttrs||{},s=this.attrs.value||this.attrs.stream?.()||"";return m("div",{className:(0,o.A)("Input",this.attrs.className,{"Input--withPrefix":this.attrs.prefixIcon,"Input--withClear":this.attrs.clearable})},this.attrs.prefixIcon&&m(i.A,{name:(0,o.A)(this.attrs.prefixIcon,"Input-prefix-icon")}),this.input({inputClassName:e,value:s,inputAttrs:n}),this.attrs.loading?m(a.A,{size:"small",display:"inline",containerClassName:"Button Button--icon Button--link"}):null,this.attrs.clearable&&s&&!this.attrs.loading?m(l.A,{className:"Input-clear Button Button--icon Button--link",onclick:this.clear.bind(this),"aria-label":this.attrs.clearLabel||r.A.translator.trans("core.lib.input.clear_button"),type:"button",icon:"fas fa-times-circle"}):null)}input(t){let{inputClassName:e,value:n,inputAttrs:r}=t;const s={className:(0,o.A)("FormControl",e),type:this.attrs.type||"text",value:n,oninput:t=>this.onchange?.(t.target.value),"aria-label":this.attrs.ariaLabel,placeholder:this.attrs.placeholder,readonly:this.attrs.readonly||void 0,disabled:this.attrs.disabled||void 0,...r};return this.attrs.renderInput?this.attrs.renderInput(s):m("input",s)}onchange(t){this.attrs.stream?this.attrs.stream(t):this.attrs.onchange?.(t)}clear(){this.onchange("")}}flarum.reg.add("core","common/components/Input",c)},43:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(5114),s=n(5710),i=n(4268);class a extends s.A{view(){const{display:t="block",size:e="medium",containerClassName:n,className:s,...a}=this.attrs,o=(0,i.A)("LoadingIndicator",s),l=(0,i.A)("LoadingIndicator-container","unset"!==t&&`LoadingIndicator-container--${t}`,e&&`LoadingIndicator-container--${e}`,n);return m("div",Object.assign({"aria-label":r.A.translator.trans("core.lib.loading_indicator.accessible_label"),role:"status"},a.containerAttrs,{"data-size":e,className:l}),m("div",Object.assign({"aria-hidden":"true",className:o},a)))}}flarum.reg.add("core","common/components/LoadingIndicator",a)},2849:(t,e,n)=>{"use strict";n.d(e,{A:()=>c});var r=n(8805),s=n(5114),i=n(5710),a=n(9924),o=n(3092),l=n(4268);class c extends i.A{constructor(){super(...arguments),(0,r.A)(this,"loading",!1),(0,r.A)(this,"alertAttrs",null)}static get dismissibleOptions(){return{viaCloseButton:this.isDismissibleViaCloseButton,viaEscKey:this.isDismissibleViaEscKey,viaBackdropClick:this.isDismissibleViaBackdropClick}}oncreate(t){super.oncreate(t),this.attrs.animateShow((()=>this.onready()))}onbeforeremove(t){if(super.onbeforeremove(t),!this.attrs.state.modal)return new Promise((t=>setTimeout(t,300)))}view(){return this.alertAttrs&&(this.alertAttrs.dismissible=!1),m("div",{className:(0,l.A)("Modal modal-dialog fade",this.className())},m("div",{className:"Modal-content"},this.dismissibleOptions.viaCloseButton&&m("div",{className:"Modal-close App-backControl"},m(o.A,{icon:"fas fa-times",onclick:()=>this.hide(),className:"Button Button--icon Button--link","aria-label":s.A.translator.trans("core.lib.modal.close")})),this.wrapper(this.inner())))}wrapper(t){return m("[",null,t)}inner(){return m("[",null,m("div",{className:"Modal-header"},m("h3",{className:"App-titleControl App-titleControl--text"},this.title())),!!this.alertAttrs&&m("div",{className:"Modal-alert"},m(a.A,this.alertAttrs)),this.content())}onready(){}hide(){this.attrs.animateHide()}loaded(){this.loading=!1,m.redraw()}get dismissibleOptions(){return this.constructor.dismissibleOptions}}(0,r.A)(c,"isDismissibleViaCloseButton",!0),(0,r.A)(c,"isDismissibleViaEscKey",!0),(0,r.A)(c,"isDismissibleViaBackdropClick",!0),flarum.reg.add("core","common/components/Modal",c)},4391:(t,e,n)=>{"use strict";n.d(e,{A:()=>o});var r=n(8805),s=n(5710),i=n(4268),a=n(117);class o extends s.A{constructor(){super(...arguments),(0,r.A)(this,"firstChild",null),(0,r.A)(this,"childDomNode",null),(0,r.A)(this,"oldText",""),(0,r.A)(this,"oldVisibility",void 0),(0,r.A)(this,"shouldRecreateTooltip",!1),(0,r.A)(this,"shouldChangeTooltipVisibility",!1)}view(t){const e=t.children,{text:n,tooltipVisible:r,showOnFocus:s=!0,position:i="top",ignoreTitleWarning:a=!1,html:o=!1,delay:l=0,...c}=this.attrs;this.attrs.title&&!a&&console.warn("`title` attribute was passed to Tooltip component. Was this intentional? Tooltip content should be passed to the `text` attr instead.");const u=this.getRealText();if(u!==this.oldText&&(this.oldText=u,this.shouldRecreateTooltip=!0),r!==this.oldVisibility&&(this.oldVisibility=this.attrs.tooltipVisible,this.shouldChangeTooltipVisibility=!0),void 0===e)throw new Error("Tooltip component was provided with no direct child DOM element. Tooltips must contain a single direct DOM node to attach to.");if(1!==e.length)throw new Error("Tooltip component was either passed more than one or no child node.\n\nPlease wrap multiple children in another element, such as a
or .");const d=e[0];if("object"!=typeof d||Array.isArray(d)||null===d)throw new Error("Tooltip component was provided with no direct child DOM element. Tooltips must contain a single direct DOM node to attach to.");if("string"==typeof d.tag&&["#","[","<"].includes(d.tag))throw new Error(`Tooltip component with provided with a vnode with tag "${d.tag}". This is not a DOM element, so is not a valid child element. Please wrap this vnode in another element, such as a