From b24223bfef60920b00795ac50beec984f4988299 Mon Sep 17 00:00:00 2001 From: flarum-bot Date: Tue, 24 Sep 2024 19:46:12 +0000 Subject: [PATCH] Bundled output for commit 1c6871c737b983bba14b3000f3f2d2daa23f8bf4 Includes transpiled JS/TS, and Typescript declaration files (typings). [skip ci] --- js/dist/forum.js | 2 +- js/dist/forum.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/dist/forum.js b/js/dist/forum.js index 0e763d6..0f5acd7 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,3 +1,3 @@ /*! For license information please see forum.js.LICENSE.txt */ -(()=>{var t={493:t=>{"use strict";t.exports=flarum.extensions["fof-user-directory"]},24:(t,e,r)=>{var n=r(735).default;function s(){"use strict";t.exports=s=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},o=Object.prototype,i=o.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",f=c.asyncIterator||"@@asyncIterator",l=c.toStringTag||"@@toStringTag";function m(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{m({},"")}catch(e){m=function(t,e,r){return t[e]=r}}function p(t,e,r,n){var s=e&&e.prototype instanceof g?e:g,o=Object.create(s.prototype),i=new C(n||[]);return a(o,"_invoke",{value:k(t,r,i)}),o}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=p;var h="suspendedStart",b="suspendedYield",w="executing",v="completed",y={};function g(){}function A(){}function x(){}var _={};m(_,u,(function(){return this}));var P=Object.getPrototypeOf,S=P&&P(P(E([])));S&&S!==o&&i.call(S,u)&&(_=S);var B=x.prototype=g.prototype=Object.create(_);function L(t){["next","throw","return"].forEach((function(e){m(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function r(s,o,a,c){var u=d(t[s],t,o);if("throw"!==u.type){var f=u.arg,l=f.value;return l&&"object"==n(l)&&i.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var s;a(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,s){r(t,n,e,s)}))}return s=s?s.then(o,o):o()}})}function k(t,r,n){var s=h;return function(o,i){if(s===w)throw Error("Generator is already running");if(s===v){if("throw"===o)throw i;return{value:e,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=O(a,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(s===h)throw s=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);s=w;var u=d(t,r,n);if("normal"===u.type){if(s=n.done?v:b,u.arg===y)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(s=v,n.method="throw",n.arg=u.arg)}}}function O(t,r){var n=r.method,s=t.iterator[n];if(s===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,O(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=d(s,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function E(t){if(t||""===t){var r=t[u];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var s=-1,o=function r(){for(;++s=0;--s){var o=this.tryEntries[s],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var c=i.call(o,"catchLoc"),u=i.call(o,"finallyLoc");if(c&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),I(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var s=n.arg;I(r)}return s}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:E(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},r}t.exports=s,t.exports.__esModule=!0,t.exports.default=t.exports},735:t=>{function e(r){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(r)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},183:(t,e,r)=>{var n=r(24)();t.exports=n;try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},e={};function r(n){var s=e[n];if(void 0!==s)return s.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n),r.d(n,{components:()=>vt,extend:()=>Nt});const t=flarum.core.compat["forum/app"];var e=r.n(t);const s=flarum.core.compat["common/extend"],o=flarum.core.compat["forum/components/IndexPage"];var i=r.n(o);const a=flarum.core.compat["common/components/Dropdown"];var c=r.n(a);const u=flarum.core.compat["common/components/Button"];var f=r.n(u);const l=flarum.core.compat["forum/states/DiscussionListState"];var p=r.n(l);const d=flarum.core.compat["forum/components/DiscussionComposer"];var h=r.n(d);function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function w(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,b(t,e)}const v=flarum.core.compat["forum/components/Notification"];var y=r.n(v),g=function(t){function r(){return t.apply(this,arguments)||this}w(r,t);var n=r.prototype;return n.icon=function(){return"fas fa-comment-dots"},n.href=function(){var t=this.attrs.notification.subject();return e().route.discussion(t)},n.content=function(){return e().translator.trans("fof-best-answer.forum.notification.content")},n.excerpt=function(){return null},r}(y());const A=flarum.core.compat["forum/utils/PostControls"];var x=r.n(A);const _=flarum.core.compat["forum/components/DiscussionPage"];var P=r.n(_);const S=flarum.core.compat["forum/components/CommentPost"];var B=r.n(S);const L=flarum.core.compat["forum/components/Post"];var N=r.n(L);const k=flarum.core.compat["common/Component"];var O=r.n(k);const j=flarum.core.compat["common/helpers/icon"];var I=r.n(j);const C=flarum.core.compat["common/helpers/humanTime"];var E=r.n(C);const T=flarum.core.compat["common/components/Link"];var D=r.n(T);const U=flarum.core.compat["common/utils/ItemList"];var M=r.n(U),R=function(t){function r(){return t.apply(this,arguments)||this}w(r,t);var n=r.prototype;return n.oninit=function(e){t.prototype.oninit.call(this,e);var r=this.attrs,n=r.post,s=r.discussion;this.post=n,this.discussion=s},n.view=function(){return m("li",{className:"Post--BestAnswer"},this.items().toArray())},n.getSetTime=function(t){if(null!==t.bestAnswerSetAt())return E()(t.bestAnswerSetAt())},n.items=function(){var t=this,r=new(M());return r.add("post",this.post?m("span",null,I()("fas fa-check"),e().translator.trans("fof-best-answer.forum.best_answer_button")):m(D(),{href:e().route.post(this.post),"data-number":this.post.number()},I()("fas fa-check"),e().translator.trans("fof-best-answer.forum.best_answer_button"))),r.add("user",m("span",{className:"BestAnswer--User"},e().translator.trans("fof-best-answer.forum.best_answer_label",{user:this.discussion.bestAnswerUser(),time_set:this.getSetTime(this.discussion),a:m("a",{onclick:function(){return m.route.set(e().route.user(t.discussion.bestAnswerUser()))}})}))),r},r}(O());const F=flarum.core.compat["common/helpers/username"];var G=r.n(F);const q=flarum.core.compat["common/helpers/userOnline"];var H=r.n(q);const Q=flarum.core.compat["forum/components/PostMeta"];var Y=r.n(Q);const z=flarum.core.compat["common/utils/classList"];var J=r.n(z),K=function(t){function r(){for(var e,r=arguments.length,n=new Array(r),s=0;s0&&"Post-body--truncate"),style:{"--max-lines":r}},m.trust(this.postContent())))},n.postContent=function(){return this.post.contentHtml()},n.headerItems=function(){var t=new(M());return t.add("user",this.userItem()),this.post.discussion()&&t.add("meta",this.metaItem()),t.add("bestAnswer",m(R,{post:this.post,discussion:this.post.discussion()}),-100),t},n.userItem=function(){return m("li",{className:"item-user"},m("div",{className:"PostUser"},this.user&&H()(this.user),m("h3",null,this.user?m(D(),{href:e().route.user(this.user)},G()(this.user)):G()(this.user))))},n.metaItem=function(){return m("li",{className:"item-meta"},m(Y(),{post:this.post}))},r}(O());const V=flarum.core.compat["common/models/Discussion"];var W=r.n(V);const X=flarum.core.compat["common/components/Badge"];var Z=function(t){function r(){return t.apply(this,arguments)||this}return w(r,t),r.initAttrs=function(t){t.type="bestAnswer",t.icon="fas fa-check",t.label=e().translator.trans("fof-best-answer.forum.answered_badge")},r}(r.n(X)()),$=function(t){function r(){return t.apply(this,arguments)||this}w(r,t);var n=r.prototype;return n.icon=function(){return"fas fa-check"},n.href=function(){var t=this.attrs.notification.subject();return e().route.discussion(t)},n.content=function(){var t=this.attrs.notification.fromUser();return e().translator.trans("fof-best-answer.forum.notification.awarded",{user:t})},n.excerpt=function(){return null},r}(y()),tt=function(t){function r(){return t.apply(this,arguments)||this}w(r,t);var n=r.prototype;return n.icon=function(){return"fas fa-check"},n.href=function(){var t=this.attrs.notification.subject();return e().route.discussion(t)},n.content=function(){var t=this.attrs.notification.fromUser();return e().translator.trans("fof-best-answer.forum.notification.best_answer_in_discussion",{user:t})},n.excerpt=function(){return null},r}(y());const et=flarum.core.compat["forum/components/NotificationGrid"];var rt=r.n(et);const nt=flarum.core.compat["forum/components/UserCard"];var st=r.n(nt);function ot(){return ot=Object.assign?Object.assign.bind():function(t){for(var e=1;e{var t={493:t=>{"use strict";t.exports=flarum.extensions["fof-user-directory"]},24:(t,e,n)=>{var r=n(735).default;function s(){"use strict";t.exports=s=function(){return n},t.exports.__esModule=!0,t.exports.default=t.exports;var e,n={},o=Object.prototype,i=o.hasOwnProperty,a=Object.defineProperty||function(t,e,n){t[e]=n.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function m(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{m({},"")}catch(e){m=function(t,e,n){return t[e]=n}}function p(t,e,n,r){var s=e&&e.prototype instanceof A?e:A,o=Object.create(s.prototype),i=new C(r||[]);return a(o,"_invoke",{value:k(t,n,i)}),o}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=p;var d="suspendedStart",v="suspendedYield",w="executing",b="completed",y={};function A(){}function g(){}function x(){}var _={};m(_,u,(function(){return this}));var P=Object.getPrototypeOf,S=P&&P(P(T([])));S&&S!==o&&i.call(S,u)&&(_=S);var B=x.prototype=A.prototype=Object.create(_);function L(t){["next","throw","return"].forEach((function(e){m(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function n(s,o,a,c){var u=h(t[s],t,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==r(f)&&i.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,c)}),(function(t){n("throw",t,a,c)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return n("throw",t,a,c)}))}c(u.arg)}var s;a(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,s){n(t,r,e,s)}))}return s=s?s.then(o,o):o()}})}function k(t,n,r){var s=d;return function(o,i){if(s===w)throw Error("Generator is already running");if(s===b){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=O(a,r);if(c){if(c===y)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(s===d)throw s=b,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);s=w;var u=h(t,n,r);if("normal"===u.type){if(s=r.done?b:v,u.arg===y)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(s=b,r.method="throw",r.arg=u.arg)}}}function O(t,n){var r=n.method,s=t.iterator[r];if(s===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,O(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=h(s,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,y;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,y):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function I(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function T(t){if(t||""===t){var n=t[u];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var s=-1,o=function n(){for(;++s=0;--s){var o=this.tryEntries[s],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=i.call(o,"catchLoc"),u=i.call(o,"finallyLoc");if(c&&u){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),I(n),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var s=r.arg;I(n)}return s}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:T(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),y}},n}t.exports=s,t.exports.__esModule=!0,t.exports.default=t.exports},735:t=>{function e(n){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},183:(t,e,n)=>{var r=n(24)();t.exports=r;try{regeneratorRuntime=r}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},e={};function n(r){var s=e[r];if(void 0!==s)return s.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{components:()=>yt,extend:()=>kt});const t=flarum.core.compat["forum/app"];var e=n.n(t);const s=flarum.core.compat["common/extend"],o=flarum.core.compat["forum/components/IndexPage"];var i=n.n(o);const a=flarum.core.compat["common/components/Dropdown"];var c=n.n(a);const u=flarum.core.compat["common/components/Button"];var l=n.n(u);const f=flarum.core.compat["forum/states/DiscussionListState"];var p=n.n(f);const h=flarum.core.compat["forum/components/DiscussionComposer"];var d=n.n(h);function v(t,e){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},v(t,e)}function w(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,v(t,e)}const b=flarum.core.compat["forum/components/Notification"];var y=n.n(b),A=function(t){function n(){return t.apply(this,arguments)||this}w(n,t);var r=n.prototype;return r.icon=function(){return"fas fa-comment-dots"},r.href=function(){var t=this.attrs.notification.subject();return e().route.discussion(t)},r.content=function(){return e().translator.trans("fof-best-answer.forum.notification.content")},r.excerpt=function(){return null},n}(y());const g=flarum.core.compat["forum/utils/PostControls"];var x=n.n(g);const _=flarum.core.compat["forum/components/DiscussionPage"];var P=n.n(_);const S=flarum.core.compat["forum/components/CommentPost"];var B=n.n(S);const L=flarum.core.compat["forum/components/Post"];var N=n.n(L);const k=flarum.core.compat["common/Component"];var O=n.n(k);const j=flarum.core.compat["common/helpers/icon"];var I=n.n(j);const C=flarum.core.compat["common/helpers/humanTime"];var T=n.n(C);const E=flarum.core.compat["common/components/Link"];var D=n.n(E);const R=flarum.core.compat["common/utils/ItemList"];var U=n.n(R),q=function(t){function n(){return t.apply(this,arguments)||this}w(n,t);var r=n.prototype;return r.oninit=function(e){t.prototype.oninit.call(this,e);var n=this.attrs,r=n.post,s=n.discussion;this.post=r,this.discussion=s},r.view=function(){return m("li",{className:"Post--BestAnswer"},this.items().toArray())},r.getSetTime=function(t){if(null!==t.bestAnswerSetAt())return T()(t.bestAnswerSetAt())},r.items=function(){var t=this,n=new(U());return n.add("post",this.post?m("span",null,I()("fas fa-check"),e().translator.trans("fof-best-answer.forum.best_answer_button")):m(D(),{href:e().route.post(this.post),"data-number":this.post.number()},I()("fas fa-check"),e().translator.trans("fof-best-answer.forum.best_answer_button"))),n.add("user",m("span",{className:"BestAnswer--User"},e().translator.trans("fof-best-answer.forum.best_answer_label",{user:this.discussion.bestAnswerUser(),time_set:this.getSetTime(this.discussion),a:m("a",{onclick:function(){return m.route.set(e().route.user(t.discussion.bestAnswerUser()))}})}))),n},n}(O());const M=flarum.core.compat["common/helpers/username"];var F=n.n(M);const G=flarum.core.compat["common/helpers/userOnline"];var H=n.n(G);const Q=flarum.core.compat["forum/components/PostMeta"];var Y=n.n(Q);const z=flarum.core.compat["common/utils/classList"];var J=n.n(z),K=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),s=0;s0&&"Post-body--truncate"),style:{"--max-lines":n}},m.trust(this.postContent())))},r.postContent=function(){return this.post.contentHtml()},r.headerItems=function(){var t=new(U());return t.add("user",this.userItem()),this.post.discussion()&&t.add("meta",this.metaItem()),t.add("bestAnswer",m(q,{post:this.post,discussion:this.post.discussion()}),-100),t},r.userItem=function(){return m("li",{className:"item-user"},m("div",{className:"PostUser"},this.user&&H()(this.user),m("h3",null,this.user?m(D(),{href:e().route.user(this.user)},F()(this.user)):F()(this.user))))},r.metaItem=function(){return m("li",{className:"item-meta"},m(Y(),{post:this.post}))},n}(O());const V=flarum.core.compat["common/models/Discussion"];var W=n.n(V);const X=flarum.core.compat["common/components/Badge"];var Z=function(t){function n(){return t.apply(this,arguments)||this}return w(n,t),n.initAttrs=function(t){t.type="bestAnswer",t.icon="fas fa-check",t.label=e().translator.trans("fof-best-answer.forum.answered_badge")},n}(n.n(X)()),$=function(t){function n(){return t.apply(this,arguments)||this}w(n,t);var r=n.prototype;return r.icon=function(){return"fas fa-check"},r.href=function(){var t=this.attrs.notification.subject();return e().route.discussion(t)},r.content=function(){var t=this.attrs.notification.fromUser();return e().translator.trans("fof-best-answer.forum.notification.awarded",{user:t})},r.excerpt=function(){return null},n}(y()),tt=function(t){function n(){return t.apply(this,arguments)||this}w(n,t);var r=n.prototype;return r.icon=function(){return"fas fa-check"},r.href=function(){var t=this.attrs.notification.subject();return e().route.discussion(t)},r.content=function(){var t=this.attrs.notification.fromUser();return e().translator.trans("fof-best-answer.forum.notification.best_answer_in_discussion",{user:t})},r.excerpt=function(){return null},n}(y());const et=flarum.core.compat["forum/components/NotificationGrid"];var nt=n.n(et);const rt=flarum.core.compat["forum/components/UserCard"];var st=n.n(rt);function ot(){return ot=Object.assign?Object.assign.bind():function(t){for(var e=1;e= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class SelectBestAnswerNotification extends Notification {\n icon() {\n return 'fas fa-comment-dots';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n return app.translator.trans('fof-best-answer.forum.notification.content');\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default () => {\n const ineligible = (discussion, post) => {\n return post.isHidden() || post.number() === 1 || !discussion.canSelectBestAnswer() || !app.session.user;\n };\n\n const blockSelectOwnPost = (post) => {\n return !app.forum.attribute('canSelectBestAnswerOwnPost') && post.user() && post.user().id() === app.session.user.id();\n };\n\n const isThisBestAnswer = (discussion, post) => {\n return discussion.hasBestAnswer() && discussion.bestAnswerPost() && discussion.bestAnswerPost().id() === post.id();\n };\n\n const actionLabel = (isBestAnswer) => {\n return app.translator.trans(isBestAnswer ? 'fof-best-answer.forum.remove_best_answer' : 'fof-best-answer.forum.this_best_answer');\n };\n\n const saveDiscussion = (discussion, isBestAnswer, post) =>\n discussion\n .save(\n {\n bestAnswerPostId: isBestAnswer ? post.id() : 0,\n bestAnswerUserId: app.session.user.id(),\n relationships: isBestAnswer ? { bestAnswerPost: post, bestAnswerUser: app.session.user } : { bestAnswerPost: null },\n },\n {\n params: {\n include: 'tags',\n },\n }\n )\n .then(() => {\n if (!isBestAnswer) {\n delete discussion.data.relationships.bestAnswerPost;\n delete discussion.data.relationships.bestAnswerUser;\n }\n\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n\n if (isBestAnswer) {\n m.route.set(app.route.discussion(discussion));\n }\n });\n\n extend(PostControls, 'moderationControls', function (items, post) {\n if (app.forum.attribute('useAlternativeBestAnswerUi')) return;\n\n const discussion = post.discussion();\n let isBestAnswer = isThisBestAnswer(discussion, post);\n\n post.pushAttributes({ isBestAnswer });\n\n if (post.contentType() !== 'comment') return;\n\n if (ineligible(discussion, post) || blockSelectOwnPost(post) || !app.current.matches(DiscussionPage)) return;\n\n items.add(\n 'bestAnswer',\n Button.component(\n {\n icon: `fa${isBestAnswer ? 's' : 'r'} fa-comment-dots`,\n onclick: () => {\n isBestAnswer = !isBestAnswer;\n\n saveDiscussion(discussion, isBestAnswer, post).finally(() => {\n isBestAnswer = isThisBestAnswer(discussion, post);\n });\n },\n },\n actionLabel(isBestAnswer)\n )\n );\n });\n\n extend(CommentPost.prototype, 'actionItems', function (items) {\n if (!app.forum.attribute('useAlternativeBestAnswerUi')) return;\n\n const post = this.attrs.post;\n const discussion = this.attrs.post.discussion();\n let isBestAnswer = isThisBestAnswer(discussion, post);\n let hasBestAnswer = discussion.bestAnswerPost() !== false;\n\n post.pushAttributes({ isBestAnswer });\n\n if (ineligible(discussion, post) || blockSelectOwnPost(post) || !app.current.matches(DiscussionPage)) return;\n\n items.add(\n 'bestAnswer',\n Button.component(\n {\n className: `Button Button--${!hasBestAnswer || isBestAnswer ? 'primary' : 'link'}`,\n onclick: function onclick() {\n hasBestAnswer = !hasBestAnswer;\n isBestAnswer = !isBestAnswer;\n\n saveDiscussion(discussion, isBestAnswer, post).finally(() => {\n hasBestAnswer = discussion.hasBestAnswer() && discussion.bestAnswerPost() !== false;\n isBestAnswer = isThisBestAnswer(discussion, post);\n });\n },\n },\n actionLabel(isBestAnswer)\n )\n );\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport Link from 'flarum/common/components/Link';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport default class SelectBestAnswerItem extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n const { post, discussion } = this.attrs;\n\n this.post = post;\n this.discussion = discussion;\n }\n\n view() {\n return
  • {this.items().toArray()}
  • ;\n }\n\n getSetTime(discussion) {\n if (discussion.bestAnswerSetAt() === null) {\n return;\n }\n return humanTime(discussion.bestAnswerSetAt());\n }\n\n items() {\n const items = new ItemList();\n\n items.add(\n 'post',\n this.post ? (\n \n {icon('fas fa-check')}\n {app.translator.trans('fof-best-answer.forum.best_answer_button')}\n \n ) : (\n \n {icon('fas fa-check')}\n {app.translator.trans('fof-best-answer.forum.best_answer_button')}\n \n )\n );\n\n items.add(\n 'user',\n \n {app.translator.trans('fof-best-answer.forum.best_answer_label', {\n user: this.discussion.bestAnswerUser(),\n time_set: this.getSetTime(this.discussion),\n a: m.route.set(app.route.user(this.discussion.bestAnswerUser()))} />,\n })}\n \n );\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/userOnline'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostMeta'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import app from 'flarum/forum/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport username from 'flarum/common/helpers/username';\nimport userOnline from 'flarum/common/helpers/userOnline';\nimport PostMeta from 'flarum/forum/components/PostMeta';\nimport Link from 'flarum/common/components/Link';\nimport classList from 'flarum/common/utils/classList';\nimport SelectBestAnswerItem from './SelectBestAnswerItem';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport interface BestAnswerFooterPreviewAttrs extends ComponentAttrs {\n post: Post;\n user: User;\n}\n\nexport default class BestAnswerFooterPreview extends Component {\n user!: User;\n post!: Post;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.user = this.attrs.user;\n this.post = this.attrs.post;\n }\n\n view() {\n const maxLines = app.forum.attribute('fof-best-answer.show_max_lines');\n\n return (\n
    app.current.get('stream').goToNumber(this.post.number())}>\n
    \n
      {this.headerItems().toArray()}
    \n
    \n
    0 && 'Post-body--truncate')} style={{ '--max-lines': maxLines }}>\n {m.trust(this.postContent())}\n
    \n
    \n );\n }\n\n postContent() {\n return this.post.contentHtml();\n }\n\n /**\n * To maintain compatibility with existing styling, custom themes, etc, each item here must be\n * wrapped in a
  • element.\n *\n * @todo: Remove this requirement for Flarum 2.0\n */\n headerItems(): ItemList {\n const items = new ItemList();\n\n items.add('user', this.userItem()), 100;\n this.post.discussion() && items.add('meta', this.metaItem()), 90;\n items.add('bestAnswer', , -100);\n\n return items;\n }\n\n userItem(): Mithril.Children {\n return (\n
  • \n
    \n {this.user && userOnline(this.user)}\n

    {this.user ? {username(this.user)} : username(this.user)}

    \n
    \n
  • \n );\n }\n\n metaItem(): Mithril.Children {\n return (\n
  • \n \n
  • \n );\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport PostComponent from 'flarum/forum/components/Post';\nimport SelectBestAnswerItem from './components/SelectBestAnswerItem';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\nimport BestAnswerFooterPreview from './components/BestAnswerFooterPreview';\n\nexport default () => {\n extend(CommentPost.prototype, 'headerItems', function (items) {\n const post = this.attrs.post;\n const discussion = post.discussion();\n\n if (discussion?.hasBestAnswer() && discussion.bestAnswerPost() && discussion.bestAnswerPost().id() === post.id() && !post.isHidden()) {\n items.add(\n 'isBestAnswer',\n SelectBestAnswerItem.component({\n post,\n discussion: post.discussion(),\n }),\n -100\n );\n }\n });\n\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const thisPost = this.attrs.post;\n const discussion = thisPost.discussion();\n const post = discussion.hasBestAnswer() && discussion.bestAnswerPost();\n\n if (post && !post.isHidden() && thisPost.number() === 1 && !thisPost.isHidden()) {\n const user = post.user();\n\n items.add('bestAnswerPost', , -10);\n }\n });\n\n extend(PostComponent.prototype, 'elementAttrs', function (elementAttrs) {\n const post = this.attrs.post;\n const discussion = post.discussion();\n\n if (discussion?.hasBestAnswer() && discussion.bestAnswerPost() && discussion.bestAnswerPost().id() === post.id() && !post.isHidden()) {\n elementAttrs.className ? (elementAttrs.className += ' Post--bestAnswer') : (elementAttrs.className = 'Post--bestAnswer');\n }\n });\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (!app.forum.attribute('bestAnswerDiscussionSidebarJumpButton')) return;\n\n /** @ts-ignore */\n const discussion = this.discussion;\n\n if (!discussion) return;\n\n const post = discussion.hasBestAnswer() && discussion.bestAnswerPost();\n\n if (post && !post.isHidden() && post.number() !== 1 && !discussion.bestAnswerPost().isHidden()) {\n items.add(\n 'jumpToBestAnswer',\n ,\n 90\n );\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import Badge, { IBadgeAttrs } from 'flarum/common/components/Badge';\nimport app from 'flarum/forum/app';\n\nexport default class BestAnswerBadge extends Badge {\n static initAttrs(attrs: IBadgeAttrs) {\n attrs.type = 'bestAnswer';\n attrs.icon = 'fas fa-check';\n attrs.label = app.translator.trans('fof-best-answer.forum.answered_badge') as string;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class AwardedBestAnswerNotification extends Notification {\n icon() {\n return 'fas fa-check';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n return app.translator.trans('fof-best-answer.forum.notification.awarded', {\n user: user,\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class BestAnswerInDiscussionNotification extends Notification {\n icon() {\n return 'fas fa-check';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n return app.translator.trans('fof-best-answer.forum.notification.best_answer_in_discussion', {\n user: user,\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import { override } from 'flarum/common/extend';\n\nexport default () => {\n const FoFUserDirectory = require('@fof-user-directory');\n\n if (!FoFUserDirectory) return;\n\n override(FoFUserDirectory.SortMap.prototype, 'sortMap', (map) => ({\n ...map(),\n most_best_answers: '-bestAnswerCount',\n least_best_answers: 'bestAnswerCount',\n }));\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Search'];","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/helpers/tagsLabel'];","import app from 'flarum/forum/app';\nimport highlight from 'flarum/common/helpers/highlight';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Link from 'flarum/common/components/Link';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport { SearchSource } from 'flarum/forum/components/Search';\nimport type Mithril from 'mithril';\nimport BestAnswerBadge from './BestAnswerBadge';\n/** @ts-ignore */\nimport tagsLabel from 'flarum/tags/helpers/tagsLabel';\n\nexport default class SolutionSearchSource implements SearchSource {\n protected results = new Map();\n\n async search(query: string): Promise {\n query = query.toLowerCase();\n\n this.results.set(query, []);\n\n const params = {\n filter: { q: query + ' is:solved' },\n page: { limit: 3 },\n include: 'mostRelevantPost,bestAnswerPost,tags',\n };\n\n return app.store.find('discussions', params).then((results) => {\n this.results.set(query, results);\n m.redraw();\n });\n }\n\n view(query: string): Array {\n query = query.toLowerCase();\n\n const results = (this.results.get(query) || []).map((discussion) => {\n const bestAnswerPost = discussion.bestAnswerPost();\n const mostRelevantPost = discussion.mostRelevantPost();\n const tags = discussion.tags();\n\n return (\n
  • \n \n
    {tagsLabel(tags)}
    \n
    {highlight(discussion.title(), query)}
    \n {!!mostRelevantPost && (\n
    {highlight(mostRelevantPost.contentPlain() ?? '', query, 100)}
    \n )}\n {!!bestAnswerPost && (\n
    \n {highlight(bestAnswerPost.contentPlain() ?? '', query, 100)}\n
    \n )}\n \n
  • \n );\n }) as Array;\n\n return [\n
  • \n {app.translator.trans('fof-best-answer.forum.search.discussions_solutions_heading')}\n
  • ,\n
  • \n \n {app.translator.trans('fof-best-answer.forum.search.all_discussions_solutions_button', { query })}\n \n
  • ,\n ...results,\n ];\n }\n}\n","import AwardedBestAnswerNotification from './AwardedBestAnswerNotification';\nimport BestAnswerBadge from './BestAnswerBadge';\nimport BestAnswerFooterPreview from './BestAnswerFooterPreview';\nimport BestAnswerInDiscussionNotification from './BestAnswerInDiscussionNotification';\nimport SelectBestAnswerItem from './SelectBestAnswerItem';\nimport SelectBestAnswerNotification from './SelectBestAnswerNotification';\nimport SolutionSearchSource from './SolutionSearchSource';\n\nexport const components = {\n SelectBestAnswerItem,\n SolutionSearchSource,\n BestAnswerFooterPreview,\n AwardedBestAnswerNotification,\n BestAnswerBadge,\n BestAnswerInDiscussionNotification,\n SelectBestAnswerNotification,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/models/Tag'];","import Extend from 'flarum/common/extenders';\n// @ts-ignore\nimport Tag from 'flarum/tags/models/Tag';\n\nexport default [\n new Extend.Model(Tag) //\n .attribute('isQnA')\n .attribute('reminders'),\n];\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Discussion from 'flarum/common/models/Discussion';\nimport commonExtend from '../common/extend';\nimport Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\nexport default [\n ...commonExtend,\n\n new Extend.Model(Discussion) //\n .hasOne('bestAnswerPost')\n .hasOne('bestAnswerUser')\n .attribute('hasBestAnswer')\n .attribute('canSelectBestAnswer')\n .attribute('bestAnswerSetAt', Model.transformDate),\n\n new Extend.Model(User) //\n .attribute('bestAnswerCount'),\n];\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\n\nimport SelectBestAnswerNotification from './components/SelectBestAnswerNotification';\nimport addBestAnswerAction from './addBestAnswerAction';\nimport addBestAnswerView from './addBestAnswerView';\nimport addAnsweredBadge from './addAnsweredBadge';\nimport AwardedBestAnswerNotification from './components/AwardedBestAnswerNotification';\nimport BestAnswerInDiscussionNotification from './components/BestAnswerInDiscussionNotification';\nimport extendNotifications from './extenders/extendNotifications';\nimport addBestAnswerCountToUsers from './addBestAnswerCountToUsers';\nimport addBestAnswerCountSort from '../common/addBestAnswerCountSort';\nimport extendSearch from './extenders/extendSearch';\n\nexport * from './components';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('fof/best-answer', () => {\n app.notificationComponents.selectBestAnswer = SelectBestAnswerNotification;\n app.notificationComponents.awardedBestAnswer = AwardedBestAnswerNotification;\n app.notificationComponents.bestAnswerInDiscussion = BestAnswerInDiscussionNotification;\n\n addAnsweredBadge();\n addBestAnswerAction();\n addBestAnswerView();\n addBestAnswerCountToUsers();\n addBestAnswerCountSort();\n\n extendNotifications();\n extendSearch();\n\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n const tag = this.currentTag();\n\n if (!tag?.isQnA?.()) return;\n\n const canStartDiscussion = app.forum.attribute('canStartDiscussion') || !app.session.user;\n const cta = items.get('newDiscussion');\n cta.children = app.translator.trans(\n canStartDiscussion ? 'fof-best-answer.forum.index.ask_question' : 'fof-best-answer.forum.index.cannot_ask_question'\n );\n\n if (items.has('startDiscussion')) {\n items.setContent('startDiscussion', cta);\n }\n });\n\n extend(IndexPage.prototype, 'viewItems', function (items) {\n if (!app.forum.attribute('showBestAnswerFilterUi')) {\n return;\n }\n\n const tag = this.currentTag();\n\n if (!tag?.isQnA?.()) {\n if (app.discussions.bestAnswer) {\n delete app.discussions.bestAnswer;\n app.discussions.refresh();\n }\n\n return;\n }\n\n const options = ['all', 'solved', 'unsolved'];\n\n const selected = app.discussions.bestAnswer;\n\n items.add(\n 'solved-filter',\n Dropdown.component(\n {\n buttonClassName: 'Button',\n label: app.translator.trans(\n `fof-best-answer.forum.filter.${options[selected] || Object.keys(options).map((key) => options[key])[0]}_label`\n ),\n accessibleToggleLabel: app.translator.trans('fof-best-answer.forum.filter.accessible_label'),\n },\n Object.keys(options).map((value) => {\n const label = options[value];\n const active = (selected || Object.keys(options)[0]) === value;\n\n return Button.component(\n {\n icon: active ? 'fas fa-check' : true,\n active: active,\n onclick: () => {\n app.discussions.bestAnswer = value;\n if (value === '0') {\n delete app.discussions.bestAnswer;\n }\n app.discussions.refresh();\n },\n },\n app.translator.trans(`fof-best-answer.forum.filter.${label}_label`)\n );\n })\n )\n );\n });\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.discussions.bestAnswer) {\n const negate = app.discussions.bestAnswer === '2';\n const prepend = negate ? '-' : '';\n\n params.filter[`${prepend}solved-discussions`] = true;\n\n if (params.filter.q) {\n params.filter.q += ` ${prepend}is:solved`;\n }\n }\n });\n\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n const tags = this.composer.fields.tags;\n if (tags === undefined) return;\n\n const qna = tags.some((t) => t.isQnA());\n\n if (!qna) return;\n\n this.attrs.titlePlaceholder = app.translator.trans('fof-best-answer.forum.composer.titlePlaceholder');\n\n if (items.has('discussionTitle')) {\n items.setContent(\n 'discussionTitle',\n

    \n \n

    \n );\n }\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport BestAnswerBadge from './components/BestAnswerBadge';\n\nexport default function () {\n extend(Discussion.prototype, 'badges', function (this: Discussion, items) {\n if (this.hasBestAnswer() && !items.has('hidden')) {\n items.add('bestAnswer', );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport icon from 'flarum/common/helpers/icon';\n\nimport type Mithril from 'mithril';\n\nexport default function addBestAnswerCountToUsers() {\n extend(UserCard.prototype, 'infoItems', function (items: ItemList) {\n const user = this.attrs.user;\n\n items.add(\n 'best-answer-count',\n \n {icon('fas fa-check')}\n {app.translator.trans('fof-best-answer.forum.user.best-answer-count', {\n count: user.bestAnswerCount(),\n })}\n ,\n 55\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\nimport type Mithril from 'mithril';\n\nexport default function () {\n extend(NotificationGrid.prototype, 'notificationTypes', function (items: ItemList<{ name: string; icon: string; label: Mithril.Children }>) {\n items.add('awardedBestAnswer', {\n name: 'awardedBestAnswer',\n icon: 'fas fa-check',\n label: app.translator.trans('fof-best-answer.forum.notification.preferences.awarded_best_answer'),\n });\n items.add('bestAnswerInDiscussion', {\n name: 'bestAnswerInDiscussion',\n icon: 'fas fa-check',\n label: app.translator.trans('fof-best-answer.forum.notification.preferences.best_answer_in_discussion'),\n });\n items.add('selectBestAnswer', {\n name: 'selectBestAnswer',\n icon: 'fas fa-stopwatch',\n label: app.translator.trans('fof-best-answer.forum.notification.preferences.select_best_answer'),\n });\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Search, { SearchSource } from 'flarum/forum/components/Search';\nimport SolutionSearchSource from '../components/SolutionSearchSource';\n\nexport default function extendSearch() {\n extend(Search.prototype, 'sourceItems', function (items: ItemList) {\n if (app.forum.attribute('solutionSearchEnabled')) {\n items.add('solution', new SolutionSearchSource(), 110);\n }\n });\n}\n"],"names":["module","exports","flarum","extensions","_typeof","require","_regeneratorRuntime","e","__esModule","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","key","get","obj","prop","core","compat","_setPrototypeOf","bind","_inheritsLoose","SelectBestAnswerNotification","_Notification","apply","arguments","_proto","icon","href","discussion","attrs","notification","subject","app","content","trans","excerpt","Notification","SelectBestAnswerItem","_Component","oninit","vnode","_this$attrs","post","view","m","className","items","toArray","getSetTime","bestAnswerSetAt","humanTime","_this","ItemList","add","Link","number","user","bestAnswerUser","time_set","onclick","route","set","Component","BestAnswerFooterPreview","_len","args","Array","_key","concat","_this2","maxLines","attribute","goToNumber","headerItems","classList","style","trust","postContent","contentHtml","userItem","metaItem","userOnline","username","PostMeta","BestAnswerBadge","_Badge","initAttrs","label","Badge","AwardedBestAnswerNotification","fromUser","BestAnswerInDiscussionNotification","_extends","assign","asyncGeneratorStep","SolutionSearchSource","results","Map","search","_search","_callee","query","params","_context","toLowerCase","filter","q","page","limit","include","find","redraw","_next","_throw","_x","map","_mostRelevantPost$con","_bestAnswerPost$conte","bestAnswerPost","mostRelevantPost","tags","id","tagsLabel","highlight","title","contentPlain","LinkButton","components","Extend","Tag","commonExtend","Discussion","hasOne","Model","User","ineligible","blockSelectOwnPost","isThisBestAnswer","actionLabel","saveDiscussion","FoFUserDirectory","selectBestAnswer","awardedBestAnswer","bestAnswerInDiscussion","extend","hasBestAnswer","has","isHidden","canSelectBestAnswer","isBestAnswer","save","bestAnswerPostId","bestAnswerUserId","relationships","data","matches","DiscussionPage","update","PostControls","pushAttributes","contentType","Button","CommentPost","component","thisPost","PostComponent","elementAttrs","UserCard","count","bestAnswerCount","override","SortMap","most_best_answers","least_best_answers","NotificationGrid","Search","IndexPage","tag","currentTag","isQnA","canStartDiscussion","cta","children","setContent","options","selected","bestAnswer","Dropdown","buttonClassName","accessibleToggleLabel","active","refresh","DiscussionListState","prepend","DiscussionComposer","composer","fields","some","titlePlaceholder","bidi","placeholder","disabled","onkeydown"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@fof/best-answer/external assign \"flarum.extensions['fof-user-directory']\"","webpack://@fof/best-answer/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@fof/best-answer/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@fof/best-answer/./node_modules/@babel/runtime/regenerator/index.js","webpack://@fof/best-answer/webpack/bootstrap","webpack://@fof/best-answer/webpack/runtime/compat get default export","webpack://@fof/best-answer/webpack/runtime/define property getters","webpack://@fof/best-answer/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/best-answer/webpack/runtime/make namespace object","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@fof/best-answer/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/best-answer/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@fof/best-answer/./src/forum/components/SelectBestAnswerNotification.js","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@fof/best-answer/./src/forum/addBestAnswerAction.js","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/components/Link']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/best-answer/./src/forum/components/SelectBestAnswerItem.js","webpack://@fof/best-answer/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/helpers/userOnline']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/PostMeta']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/best-answer/./src/forum/components/BestAnswerFooterPreview.tsx","webpack://@fof/best-answer/./src/forum/addBestAnswerView.tsx","webpack://@fof/best-answer/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/best-answer/./src/forum/components/BestAnswerBadge.tsx","webpack://@fof/best-answer/./src/forum/components/AwardedBestAnswerNotification.js","webpack://@fof/best-answer/./src/forum/components/BestAnswerInDiscussionNotification.js","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@fof/best-answer/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/best-answer/./src/common/addBestAnswerCountSort.ts","webpack://@fof/best-answer/external root \"flarum.core.compat['forum/components/Search']\"","webpack://@fof/best-answer/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@fof/best-answer/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['tags/helpers/tagsLabel']\"","webpack://@fof/best-answer/./src/forum/components/SolutionSearchItem.tsx","webpack://@fof/best-answer/./src/forum/components/SolutionSearchSource.tsx","webpack://@fof/best-answer/./src/forum/components/index.ts","webpack://@fof/best-answer/external root \"flarum.core.compat['common/extenders']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['tags/models/Tag']\"","webpack://@fof/best-answer/./src/common/extend.ts","webpack://@fof/best-answer/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/best-answer/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/best-answer/./src/forum/extend.ts","webpack://@fof/best-answer/./src/forum/index.js","webpack://@fof/best-answer/./src/forum/addAnsweredBadge.tsx","webpack://@fof/best-answer/./src/forum/addBestAnswerCountToUsers.tsx","webpack://@fof/best-answer/./src/forum/extenders/extendNotifications.ts","webpack://@fof/best-answer/./src/forum/extenders/extendSearch.ts"],"sourcesContent":["module.exports = flarum.extensions['fof-user-directory'];","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class SelectBestAnswerNotification extends Notification {\n icon() {\n return 'fas fa-comment-dots';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n return app.translator.trans('fof-best-answer.forum.notification.content');\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default () => {\n const ineligible = (discussion, post) => {\n return post.isHidden() || post.number() === 1 || !discussion.canSelectBestAnswer() || !app.session.user;\n };\n\n const blockSelectOwnPost = (post) => {\n return !app.forum.attribute('canSelectBestAnswerOwnPost') && post.user() && post.user().id() === app.session.user.id();\n };\n\n const isThisBestAnswer = (discussion, post) => {\n return discussion.hasBestAnswer() && discussion.bestAnswerPost() && discussion.bestAnswerPost().id() === post.id();\n };\n\n const actionLabel = (isBestAnswer) => {\n return app.translator.trans(isBestAnswer ? 'fof-best-answer.forum.remove_best_answer' : 'fof-best-answer.forum.this_best_answer');\n };\n\n const saveDiscussion = (discussion, isBestAnswer, post) =>\n discussion\n .save(\n {\n bestAnswerPostId: isBestAnswer ? post.id() : 0,\n bestAnswerUserId: app.session.user.id(),\n relationships: isBestAnswer ? { bestAnswerPost: post, bestAnswerUser: app.session.user } : { bestAnswerPost: null },\n },\n {\n params: {\n include: 'tags',\n },\n }\n )\n .then(() => {\n if (!isBestAnswer) {\n delete discussion.data.relationships.bestAnswerPost;\n delete discussion.data.relationships.bestAnswerUser;\n }\n\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n\n if (isBestAnswer) {\n m.route.set(app.route.discussion(discussion));\n }\n });\n\n extend(PostControls, 'moderationControls', function (items, post) {\n if (app.forum.attribute('useAlternativeBestAnswerUi')) return;\n\n const discussion = post.discussion();\n let isBestAnswer = isThisBestAnswer(discussion, post);\n\n post.pushAttributes({ isBestAnswer });\n\n if (post.contentType() !== 'comment') return;\n\n if (ineligible(discussion, post) || blockSelectOwnPost(post) || !app.current.matches(DiscussionPage)) return;\n\n items.add(\n 'bestAnswer',\n Button.component(\n {\n icon: `fa${isBestAnswer ? 's' : 'r'} fa-comment-dots`,\n onclick: () => {\n isBestAnswer = !isBestAnswer;\n\n saveDiscussion(discussion, isBestAnswer, post).finally(() => {\n isBestAnswer = isThisBestAnswer(discussion, post);\n });\n },\n },\n actionLabel(isBestAnswer)\n )\n );\n });\n\n extend(CommentPost.prototype, 'actionItems', function (items) {\n if (!app.forum.attribute('useAlternativeBestAnswerUi')) return;\n\n const post = this.attrs.post;\n const discussion = this.attrs.post.discussion();\n let isBestAnswer = isThisBestAnswer(discussion, post);\n let hasBestAnswer = discussion.bestAnswerPost() !== false;\n\n post.pushAttributes({ isBestAnswer });\n\n if (ineligible(discussion, post) || blockSelectOwnPost(post) || !app.current.matches(DiscussionPage)) return;\n\n items.add(\n 'bestAnswer',\n Button.component(\n {\n className: `Button Button--${!hasBestAnswer || isBestAnswer ? 'primary' : 'link'}`,\n onclick: function onclick() {\n hasBestAnswer = !hasBestAnswer;\n isBestAnswer = !isBestAnswer;\n\n saveDiscussion(discussion, isBestAnswer, post).finally(() => {\n hasBestAnswer = discussion.hasBestAnswer() && discussion.bestAnswerPost() !== false;\n isBestAnswer = isThisBestAnswer(discussion, post);\n });\n },\n },\n actionLabel(isBestAnswer)\n )\n );\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport Link from 'flarum/common/components/Link';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport default class SelectBestAnswerItem extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n const { post, discussion } = this.attrs;\n\n this.post = post;\n this.discussion = discussion;\n }\n\n view() {\n return
  • {this.items().toArray()}
  • ;\n }\n\n getSetTime(discussion) {\n if (discussion.bestAnswerSetAt() === null) {\n return;\n }\n return humanTime(discussion.bestAnswerSetAt());\n }\n\n items() {\n const items = new ItemList();\n\n items.add(\n 'post',\n this.post ? (\n \n {icon('fas fa-check')}\n {app.translator.trans('fof-best-answer.forum.best_answer_button')}\n \n ) : (\n \n {icon('fas fa-check')}\n {app.translator.trans('fof-best-answer.forum.best_answer_button')}\n \n )\n );\n\n items.add(\n 'user',\n \n {app.translator.trans('fof-best-answer.forum.best_answer_label', {\n user: this.discussion.bestAnswerUser(),\n time_set: this.getSetTime(this.discussion),\n a:
    m.route.set(app.route.user(this.discussion.bestAnswerUser()))} />,\n })}\n \n );\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/userOnline'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostMeta'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import app from 'flarum/forum/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Mithril from 'mithril';\nimport username from 'flarum/common/helpers/username';\nimport userOnline from 'flarum/common/helpers/userOnline';\nimport PostMeta from 'flarum/forum/components/PostMeta';\nimport Link from 'flarum/common/components/Link';\nimport classList from 'flarum/common/utils/classList';\nimport SelectBestAnswerItem from './SelectBestAnswerItem';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport interface BestAnswerFooterPreviewAttrs extends ComponentAttrs {\n post: Post;\n user: User;\n}\n\nexport default class BestAnswerFooterPreview extends Component {\n user!: User;\n post!: Post;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.user = this.attrs.user;\n this.post = this.attrs.post;\n }\n\n view() {\n const maxLines = app.forum.attribute('fof-best-answer.show_max_lines');\n\n return (\n
    app.current.get('stream').goToNumber(this.post.number())}>\n
    \n
      {this.headerItems().toArray()}
    \n
    \n
    0 && 'Post-body--truncate')} style={{ '--max-lines': maxLines }}>\n {m.trust(this.postContent())}\n
    \n
    \n );\n }\n\n postContent() {\n return this.post.contentHtml();\n }\n\n /**\n * To maintain compatibility with existing styling, custom themes, etc, each item here must be\n * wrapped in a
  • element.\n *\n * @todo: Remove this requirement for Flarum 2.0\n */\n headerItems(): ItemList {\n const items = new ItemList();\n\n items.add('user', this.userItem()), 100;\n this.post.discussion() && items.add('meta', this.metaItem()), 90;\n items.add('bestAnswer', , -100);\n\n return items;\n }\n\n userItem(): Mithril.Children {\n return (\n
  • \n
    \n {this.user && userOnline(this.user)}\n

    {this.user ? {username(this.user)} : username(this.user)}

    \n
    \n
  • \n );\n }\n\n metaItem(): Mithril.Children {\n return (\n
  • \n \n
  • \n );\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport PostComponent from 'flarum/forum/components/Post';\nimport SelectBestAnswerItem from './components/SelectBestAnswerItem';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\nimport BestAnswerFooterPreview from './components/BestAnswerFooterPreview';\n\nexport default () => {\n extend(CommentPost.prototype, 'headerItems', function (items) {\n const post = this.attrs.post;\n const discussion = post.discussion();\n\n if (discussion?.hasBestAnswer() && discussion.bestAnswerPost() && discussion.bestAnswerPost().id() === post.id() && !post.isHidden()) {\n items.add(\n 'isBestAnswer',\n SelectBestAnswerItem.component({\n post,\n discussion: post.discussion(),\n }),\n -100\n );\n }\n });\n\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const thisPost = this.attrs.post;\n const discussion = thisPost.discussion();\n const post = discussion.hasBestAnswer() && discussion.bestAnswerPost();\n\n if (post && !post.isHidden() && thisPost.number() === 1 && !thisPost.isHidden()) {\n const user = post.user();\n\n items.add('bestAnswerPost', , -10);\n }\n });\n\n extend(PostComponent.prototype, 'elementAttrs', function (elementAttrs) {\n const post = this.attrs.post;\n const discussion = post.discussion();\n\n if (discussion?.hasBestAnswer() && discussion.bestAnswerPost() && discussion.bestAnswerPost().id() === post.id() && !post.isHidden()) {\n elementAttrs.className ? (elementAttrs.className += ' Post--bestAnswer') : (elementAttrs.className = 'Post--bestAnswer');\n }\n });\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (!app.forum.attribute('bestAnswerDiscussionSidebarJumpButton')) return;\n\n /** @ts-ignore */\n const discussion = this.discussion;\n\n if (!discussion) return;\n\n const post = discussion.hasBestAnswer() && discussion.bestAnswerPost();\n\n if (post && !post.isHidden() && post.number() !== 1 && !discussion.bestAnswerPost().isHidden()) {\n items.add(\n 'jumpToBestAnswer',\n ,\n 90\n );\n }\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import Badge, { IBadgeAttrs } from 'flarum/common/components/Badge';\nimport app from 'flarum/forum/app';\n\nexport default class BestAnswerBadge extends Badge {\n static initAttrs(attrs: IBadgeAttrs) {\n attrs.type = 'bestAnswer';\n attrs.icon = 'fas fa-check';\n attrs.label = app.translator.trans('fof-best-answer.forum.answered_badge') as string;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class AwardedBestAnswerNotification extends Notification {\n icon() {\n return 'fas fa-check';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n return app.translator.trans('fof-best-answer.forum.notification.awarded', {\n user: user,\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class BestAnswerInDiscussionNotification extends Notification {\n icon() {\n return 'fas fa-check';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n return app.translator.trans('fof-best-answer.forum.notification.best_answer_in_discussion', {\n user: user,\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import { override } from 'flarum/common/extend';\n\nexport default () => {\n const FoFUserDirectory = require('@fof-user-directory');\n\n if (!FoFUserDirectory) return;\n\n override(FoFUserDirectory.SortMap.prototype, 'sortMap', (map) => ({\n ...map(),\n most_best_answers: '-bestAnswerCount',\n least_best_answers: 'bestAnswerCount',\n }));\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Search'];","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/helpers/tagsLabel'];","import app from 'flarum/forum/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Link from 'flarum/common/components/Link';\nimport highlight from 'flarum/common/helpers/highlight';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\n/** @ts-ignore */\nimport tagsLabel from 'flarum/tags/helpers/tagsLabel';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport interface SolutionSearchItemAttrs extends ComponentAttrs {\n query: string;\n discussion: Discussion;\n bestAnswerPost: Post;\n mostRelevantPost: Post;\n tags: any;\n}\n\nexport default class SolutionSearchItem extends Component {\n query!: string;\n discussion!: Discussion;\n bestAnswerPost!: Post | null | undefined;\n mostRelevantPost!: Post | null | undefined;\n tags!: any;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.query = this.attrs.query;\n this.discussion = this.attrs.discussion;\n this.bestAnswerPost = this.attrs.bestAnswerPost;\n this.mostRelevantPost = this.attrs.mostRelevantPost;\n this.tags = this.attrs.tags;\n }\n\n view() {\n return (\n
  • \n \n {this.viewItems().toArray()}\n \n
  • \n );\n }\n\n discussionTitle() {\n return this.discussion.title();\n }\n\n bestAnswerContent() {\n return this.bestAnswerPost?.contentPlain();\n }\n\n mostRelevantContent() {\n return this.mostRelevantPost?.contentPlain();\n }\n\n viewItems(): ItemList {\n const items = new ItemList();\n\n items.add('tags',
    {tagsLabel(this.tags)}
    , 100);\n\n items.add('discussion-title',
    {highlight(this.discussionTitle(), this.query)}
    , 90);\n\n !!this.mostRelevantPost &&\n items.add(\n 'most-relevant',\n
    {highlight(this.mostRelevantContent() ?? '', this.query, 100)}
    ,\n 80\n );\n\n !!this.bestAnswerPost &&\n items.add(\n 'best-answer',\n
    \n {highlight(this.bestAnswerContent() ?? '', this.query, 100)}\n
    ,\n 70\n );\n\n return items;\n }\n}\n","import app from 'flarum/forum/app';\nimport Discussion from 'flarum/common/models/Discussion';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport { SearchSource } from 'flarum/forum/components/Search';\nimport type Mithril from 'mithril';\nimport BestAnswerBadge from './BestAnswerBadge';\nimport SolutionSearchItem from './SolutionSearchItem';\n\nexport default class SolutionSearchSource implements SearchSource {\n protected results = new Map();\n\n async search(query: string): Promise {\n query = query.toLowerCase();\n\n this.results.set(query, []);\n\n const params = {\n filter: { q: query + ' is:solved' },\n page: { limit: this.limit() },\n include: this.includes().join(','),\n };\n\n return app.store.find('discussions', params).then((results) => {\n this.results.set(query, results);\n m.redraw();\n });\n }\n\n view(query: string): Array {\n query = query.toLowerCase();\n\n const results = (this.results.get(query) || []).map((discussion) => {\n const bestAnswerPost = discussion.bestAnswerPost();\n const mostRelevantPost = discussion.mostRelevantPost();\n /** @ts-ignore */\n const tags = discussion.tags();\n\n return (\n \n );\n }) as Array;\n\n return [\n
  • \n {app.translator.trans('fof-best-answer.forum.search.discussions_solutions_heading')}\n
  • ,\n
  • \n \n {app.translator.trans('fof-best-answer.forum.search.all_discussions_solutions_button', { query })}\n \n
  • ,\n ...results,\n ];\n }\n\n includes(): string[] {\n return ['mostRelevantPost', 'bestAnswerPost', 'tags'];\n }\n\n limit(): number {\n return 3;\n }\n}\n","import AwardedBestAnswerNotification from './AwardedBestAnswerNotification';\nimport BestAnswerBadge from './BestAnswerBadge';\nimport BestAnswerFooterPreview from './BestAnswerFooterPreview';\nimport BestAnswerInDiscussionNotification from './BestAnswerInDiscussionNotification';\nimport SelectBestAnswerItem from './SelectBestAnswerItem';\nimport SelectBestAnswerNotification from './SelectBestAnswerNotification';\nimport SolutionSearchItem from './SolutionSearchItem';\nimport SolutionSearchSource from './SolutionSearchSource';\n\nexport const components = {\n SelectBestAnswerItem,\n SolutionSearchSource,\n BestAnswerFooterPreview,\n AwardedBestAnswerNotification,\n BestAnswerBadge,\n BestAnswerInDiscussionNotification,\n SelectBestAnswerNotification,\n SolutionSearchItem,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/models/Tag'];","import Extend from 'flarum/common/extenders';\n// @ts-ignore\nimport Tag from 'flarum/tags/models/Tag';\n\nexport default [\n new Extend.Model(Tag) //\n .attribute('isQnA')\n .attribute('reminders'),\n];\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Discussion from 'flarum/common/models/Discussion';\nimport commonExtend from '../common/extend';\nimport Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\nexport default [\n ...commonExtend,\n\n new Extend.Model(Discussion) //\n .hasOne('bestAnswerPost')\n .hasOne('bestAnswerUser')\n .attribute('hasBestAnswer')\n .attribute('canSelectBestAnswer')\n .attribute('bestAnswerSetAt', Model.transformDate),\n\n new Extend.Model(User) //\n .attribute('bestAnswerCount'),\n];\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\n\nimport SelectBestAnswerNotification from './components/SelectBestAnswerNotification';\nimport addBestAnswerAction from './addBestAnswerAction';\nimport addBestAnswerView from './addBestAnswerView';\nimport addAnsweredBadge from './addAnsweredBadge';\nimport AwardedBestAnswerNotification from './components/AwardedBestAnswerNotification';\nimport BestAnswerInDiscussionNotification from './components/BestAnswerInDiscussionNotification';\nimport extendNotifications from './extenders/extendNotifications';\nimport addBestAnswerCountToUsers from './addBestAnswerCountToUsers';\nimport addBestAnswerCountSort from '../common/addBestAnswerCountSort';\nimport extendSearch from './extenders/extendSearch';\n\nexport * from './components';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('fof/best-answer', () => {\n app.notificationComponents.selectBestAnswer = SelectBestAnswerNotification;\n app.notificationComponents.awardedBestAnswer = AwardedBestAnswerNotification;\n app.notificationComponents.bestAnswerInDiscussion = BestAnswerInDiscussionNotification;\n\n addAnsweredBadge();\n addBestAnswerAction();\n addBestAnswerView();\n addBestAnswerCountToUsers();\n addBestAnswerCountSort();\n\n extendNotifications();\n extendSearch();\n\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n const tag = this.currentTag();\n\n if (!tag?.isQnA?.()) return;\n\n const canStartDiscussion = app.forum.attribute('canStartDiscussion') || !app.session.user;\n const cta = items.get('newDiscussion');\n cta.children = app.translator.trans(\n canStartDiscussion ? 'fof-best-answer.forum.index.ask_question' : 'fof-best-answer.forum.index.cannot_ask_question'\n );\n\n if (items.has('startDiscussion')) {\n items.setContent('startDiscussion', cta);\n }\n });\n\n extend(IndexPage.prototype, 'viewItems', function (items) {\n if (!app.forum.attribute('showBestAnswerFilterUi')) {\n return;\n }\n\n const tag = this.currentTag();\n\n if (!tag?.isQnA?.()) {\n if (app.discussions.bestAnswer) {\n delete app.discussions.bestAnswer;\n app.discussions.refresh();\n }\n\n return;\n }\n\n const options = ['all', 'solved', 'unsolved'];\n\n const selected = app.discussions.bestAnswer;\n\n items.add(\n 'solved-filter',\n Dropdown.component(\n {\n buttonClassName: 'Button',\n label: app.translator.trans(\n `fof-best-answer.forum.filter.${options[selected] || Object.keys(options).map((key) => options[key])[0]}_label`\n ),\n accessibleToggleLabel: app.translator.trans('fof-best-answer.forum.filter.accessible_label'),\n },\n Object.keys(options).map((value) => {\n const label = options[value];\n const active = (selected || Object.keys(options)[0]) === value;\n\n return Button.component(\n {\n icon: active ? 'fas fa-check' : true,\n active: active,\n onclick: () => {\n app.discussions.bestAnswer = value;\n if (value === '0') {\n delete app.discussions.bestAnswer;\n }\n app.discussions.refresh();\n },\n },\n app.translator.trans(`fof-best-answer.forum.filter.${label}_label`)\n );\n })\n )\n );\n });\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.discussions.bestAnswer) {\n const negate = app.discussions.bestAnswer === '2';\n const prepend = negate ? '-' : '';\n\n params.filter[`${prepend}solved-discussions`] = true;\n\n if (params.filter.q) {\n params.filter.q += ` ${prepend}is:solved`;\n }\n }\n });\n\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n const tags = this.composer.fields.tags;\n if (tags === undefined) return;\n\n const qna = tags.some((t) => t.isQnA());\n\n if (!qna) return;\n\n this.attrs.titlePlaceholder = app.translator.trans('fof-best-answer.forum.composer.titlePlaceholder');\n\n if (items.has('discussionTitle')) {\n items.setContent(\n 'discussionTitle',\n

    \n \n

    \n );\n }\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport BestAnswerBadge from './components/BestAnswerBadge';\n\nexport default function () {\n extend(Discussion.prototype, 'badges', function (this: Discussion, items) {\n if (this.hasBestAnswer() && !items.has('hidden')) {\n items.add('bestAnswer', );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport icon from 'flarum/common/helpers/icon';\n\nimport type Mithril from 'mithril';\n\nexport default function addBestAnswerCountToUsers() {\n extend(UserCard.prototype, 'infoItems', function (items: ItemList) {\n const user = this.attrs.user;\n\n items.add(\n 'best-answer-count',\n \n {icon('fas fa-check')}\n {app.translator.trans('fof-best-answer.forum.user.best-answer-count', {\n count: user.bestAnswerCount(),\n })}\n ,\n 55\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\nimport type Mithril from 'mithril';\n\nexport default function () {\n extend(NotificationGrid.prototype, 'notificationTypes', function (items: ItemList<{ name: string; icon: string; label: Mithril.Children }>) {\n items.add('awardedBestAnswer', {\n name: 'awardedBestAnswer',\n icon: 'fas fa-check',\n label: app.translator.trans('fof-best-answer.forum.notification.preferences.awarded_best_answer'),\n });\n items.add('bestAnswerInDiscussion', {\n name: 'bestAnswerInDiscussion',\n icon: 'fas fa-check',\n label: app.translator.trans('fof-best-answer.forum.notification.preferences.best_answer_in_discussion'),\n });\n items.add('selectBestAnswer', {\n name: 'selectBestAnswer',\n icon: 'fas fa-stopwatch',\n label: app.translator.trans('fof-best-answer.forum.notification.preferences.select_best_answer'),\n });\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Search, { SearchSource } from 'flarum/forum/components/Search';\nimport SolutionSearchSource from '../components/SolutionSearchSource';\n\nexport default function extendSearch() {\n extend(Search.prototype, 'sourceItems', function (items: ItemList) {\n if (app.forum.attribute('solutionSearchEnabled')) {\n items.add('solution', new SolutionSearchSource(), 110);\n }\n });\n}\n"],"names":["module","exports","flarum","extensions","_typeof","require","_regeneratorRuntime","e","__esModule","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","key","get","obj","prop","core","compat","_setPrototypeOf","bind","_inheritsLoose","SelectBestAnswerNotification","_Notification","apply","arguments","_proto","icon","href","discussion","attrs","notification","subject","app","content","trans","excerpt","Notification","SelectBestAnswerItem","_Component","oninit","vnode","_this$attrs","post","view","m","className","items","toArray","getSetTime","bestAnswerSetAt","humanTime","_this","ItemList","add","Link","number","user","bestAnswerUser","time_set","onclick","route","set","Component","BestAnswerFooterPreview","_len","args","Array","_key","concat","_this2","maxLines","attribute","goToNumber","headerItems","classList","style","trust","postContent","contentHtml","userItem","metaItem","userOnline","username","PostMeta","BestAnswerBadge","_Badge","initAttrs","label","Badge","AwardedBestAnswerNotification","fromUser","BestAnswerInDiscussionNotification","_extends","assign","asyncGeneratorStep","SolutionSearchItem","query","bestAnswerPost","mostRelevantPost","tags","id","viewItems","discussionTitle","title","bestAnswerContent","_this$bestAnswerPost","contentPlain","mostRelevantContent","_this$mostRelevantPos","_this$mostRelevantCon","_this$bestAnswerConte","tagsLabel","highlight","SolutionSearchSource","results","Map","search","_search","_callee","params","_context","toLowerCase","filter","q","page","limit","include","includes","join","find","redraw","_next","_throw","_x","map","LinkButton","components","Extend","Tag","commonExtend","Discussion","hasOne","Model","User","ineligible","blockSelectOwnPost","isThisBestAnswer","actionLabel","saveDiscussion","FoFUserDirectory","selectBestAnswer","awardedBestAnswer","bestAnswerInDiscussion","extend","hasBestAnswer","has","isHidden","canSelectBestAnswer","isBestAnswer","save","bestAnswerPostId","bestAnswerUserId","relationships","data","matches","DiscussionPage","update","PostControls","pushAttributes","contentType","Button","CommentPost","component","thisPost","PostComponent","elementAttrs","UserCard","count","bestAnswerCount","override","SortMap","most_best_answers","least_best_answers","NotificationGrid","Search","IndexPage","tag","currentTag","isQnA","canStartDiscussion","cta","children","setContent","options","selected","bestAnswer","Dropdown","buttonClassName","accessibleToggleLabel","active","refresh","DiscussionListState","prepend","DiscussionComposer","composer","fields","some","titlePlaceholder","bidi","placeholder","disabled","onkeydown"],"sourceRoot":""} \ No newline at end of file