diff --git a/js/dist-typings/forum/extend.d.ts b/js/dist-typings/forum/extend.d.ts index 7e0f68f..2b81401 100644 --- a/js/dist-typings/forum/extend.d.ts +++ b/js/dist-typings/forum/extend.d.ts @@ -1,2 +1,2 @@ -declare const _default: (import("flarum/common/extenders/Store").default | import("flarum/common/extenders/Model").default)[]; +declare const _default: (import("flarum/common/extenders/Store").default | import("flarum/common/extenders/Routes").default | import("flarum/common/extenders/Model").default)[]; export default _default; diff --git a/js/dist/forum.js b/js/dist/forum.js index b1bf580..ab829b4 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={24:(t,e,r)=>{var n=r(735).default;function o(){"use strict";t.exports=o=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,r){t[e]=r.value},u="function"==typeof Symbol?Symbol:{},l=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function d(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(e){d=function(t,e,r){return t[e]=r}}function p(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),a=new k(n||[]);return s(i,"_invoke",{value:L(t,r,a)}),i}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=p;var m="suspendedStart",v="suspendedYield",y="executing",w="completed",b={};function g(){}function x(){}function q(){}var _={};d(_,l,(function(){return this}));var O=Object.getPrototypeOf,E=O&&O(O(j([])));E&&E!==i&&a.call(E,l)&&(_=E);var F=q.prototype=g.prototype=Object.create(_);function A(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,i,s,u){var l=h(t[o],t,i);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==n(f)&&a.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,s,u)}),(function(t){r("throw",t,s,u)})):e.resolve(f).then((function(t){c.value=t,s(c)}),(function(t){return r("throw",t,s,u)}))}u(l.arg)}var o;s(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function L(t,r,n){var o=m;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===w){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var u=S(s,n);if(u){if(u===b)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===m)throw o=w,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var l=h(t,r,n);if("normal"===l.type){if(o=n.done?w:v,l.arg===b)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=w,n.method="throw",n.arg=l.arg)}}}function S(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,S(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var i=h(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,b;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,b):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function C(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 M(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function j(t){if(t||""===t){var r=t[l];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function r(){for(;++o=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),l=a.call(i,"finallyLoc");if(u&&l){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),M(r),b}},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 o=n.arg;M(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:j(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),b}},r}t.exports=o,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 o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.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,{extend:()=>X,panes:()=>Z,types:()=>tt});const t=flarum.core.compat["forum/app"];var e=r.n(t);const o=flarum.core.compat["common/extend"],i=flarum.core.compat["common/components/LinkButton"];var a=r.n(i);const s=flarum.core.compat["forum/components/UserPage"];var u=r.n(s);function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}function c(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,l(t,e)}const f=flarum.core.compat["common/components/LoadingIndicator"];var d=r.n(f);function p(t,e,r,n,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void r(t)}s.done?e(u):Promise.resolve(u).then(n,o)}var h=r(183),v=r.n(h);const y=flarum.core.compat["common/Component"];var w=r.n(y);const b=flarum.core.compat["common/helpers/icon"];var g=r.n(b),x=function(){function t(t){var e=t.field,r=t.set,n=t.value;this.field=e,this.set=r,this.value=n}var e=t.prototype;return e.readAttribute=function(t,e){return"function"==typeof t[e]?t[e]():t[e]},e.validationRules=function(){return this.readAttribute(this.field,"validation").split("|")},e.validationRule=function(t){var e=null;return this.validationRules().forEach((function(r){var n=r.split(":",2);n[0]===t&&(e=n[1])})),e},e.editorField=function(){return m("div",{class:"Form-group Field"},m("label",null,this.field.icon()?[g()(this.field.icon())," "]:null," ",this.field.name()," ",this.field.required()?"*":null),m("div",{class:"FormField"},this.field.prefix()?m(".prefix",this.field.prefix()):null,this.editorInput(),this.field.description()?m("div",{class:"helpText"},this.field.description()):null))},e.editorInput=function(){return m("input",this.editorInputAttrs())},e.editorInputAttrs=function(){var t=this;return{className:"FormControl",oninput:function(e){t.set(e.target.value)},value:this.value,required:this.field.required()}},e.answerField=function(){var t=this.readAttribute(this.field,"icon");return m("div",{className:"Masquerade-Bio-Set"+(this.hasAnswer()?"":" Masquerade-Bio-Set--empty")},m("span",{class:"Masquerade-Bio-Field"},t&&m("[",null,g()(t)," "),this.readAttribute(this.field,"name"),":"," "),m("span",{class:"Masquerade-Bio-Answer"},this.answerContent()))},e.answerContent=function(){return this.value},e.hasAnswer=function(){var t=this.answerContent();return!(null===t||("object"==typeof t?!Object.keys(t).length:null==t||!t.length))},t.isNoOptionSelectedValue=function(t){return null===t||""===t},t}(),q=function(t){function e(){return t.apply(this,arguments)||this}c(e,t);var r=e.prototype;return r.editorInput=function(){var t=this;return this.options().map((function(e){return m("div",m("label",[m("input[type=radio]",{checked:e.selected(t.value),onclick:function(){t.set(e.key)}})," "+e.label]))}))},r.options=function(){var t=[];return this.readAttribute(this.field,"required")||t.push({selected:function(t){return x.isNoOptionSelectedValue(t)},key:null,label:app.translator.trans("fof-masquerade.forum.fields.select.none-optional")}),t.push({selected:function(t){return-1!==["true","1",1,!0,"yes"].indexOf(t)},key:"true",label:app.translator.trans("fof-masquerade.forum.fields.boolean.yes")}),t.push({selected:function(t){return-1!==["false","0",0,!1,"no"].indexOf(t)},key:"false",label:app.translator.trans("fof-masquerade.forum.fields.boolean.no")}),x.isNoOptionSelectedValue(this.value)||-1!==["true","1",1,!0,"yes","false","0",0,!1,"no"].indexOf(this.value)||t.push({selected:function(){return!0},key:this.value,label:"(invalid) "+this.value}),t},r.answerContent=function(){return x.isNoOptionSelectedValue(this.value)?"":-1!==[1,"1",!0,"true","yes"].indexOf(this.value)?[g()("far fa-check-square")," ",app.translator.trans("fof-masquerade.forum.fields.boolean.yes")]:[g()("far fa-square")," ",app.translator.trans("fof-masquerade.forum.fields.boolean.no")]},e}(x);const _=flarum.core.compat["common/components/Button"];var O=r.n(_),E=function(t){function e(){return t.apply(this,arguments)||this}c(e,t);var r=e.prototype;return r.editorInputAttrs=function(){var e=t.prototype.editorInputAttrs.call(this);return e.type="email",e.placeholder="you@example.com",e},r.answerContent=function(){var t=this,e=this.value;if(!e)return null;var r=e.split(/@|\./).map((function(t){return t.replace(/(.{2})./g,"$1*")})).join("*");return O().component({onclick:function(){return t.mailTo()},className:"Button Button--text",icon:"far fa-envelope"},r)},r.mailTo=function(){window.location="mailto:"+this.value},e}(x);const F=flarum.core.compat["common/components/Select"];var A=r.n(F),P="fof_masquerade_no_option_selected",L=function(t){function r(){return t.apply(this,arguments)||this}c(r,t);var n=r.prototype;return n.editorInput=function(){var t=this;return A().component({onchange:function(e){e===P&&(e=""),t.set(e)},value:x.isNoOptionSelectedValue(this.value)?P:this.value,options:this.options()})},n.options=function(){var t={};this.readAttribute(this.field,"required")?x.isNoOptionSelectedValue(this.value)&&(t[P]=e().translator.trans("fof-masquerade.forum.fields.select.none-required")):t[P]=e().translator.trans("fof-masquerade.forum.fields.select.none-optional");var r=this.validationRule("in");return r&&r.split(",").forEach((function(e){t[e]=e})),x.isNoOptionSelectedValue(this.value)||void 0!==t[this.value]||(t[this.value]="(invalid) "+this.value),t},r}(x),S=function(t){function e(){return t.apply(this,arguments)||this}c(e,t);var r=e.prototype;return r.editorInputAttrs=function(){var e=t.prototype.editorInputAttrs.call(this);return e.type="url",e.placeholder="https://example.com",e},r.answerContent=function(){var t=this,e=this.value;return e?O().component({onclick:function(){return t.to()},className:"Button Button--text",icon:"fas fa-link"},e.replace(/^https?:\/\//,"")):null},r.to=function(){window.open().location=this.value},e}(x),C=function(){function t(){}return t.typeForField=function(t){var e=t.field,r=t.set,n=void 0===r?void 0:r,o=t.value,i=x,a=this.identify(e);return a&&(i=this.types()[a]),new i({field:e,set:n,value:o})},t.fieldAttribute=function(t,e){return"function"==typeof t[e]?t[e]():t[e]},t.types=function(){return{boolean:q,email:E,select:L,url:S}},t.identify=function(t){var e=this,r=(this.fieldAttribute(t,"validation")||"").split(","),n=null,o=this.fieldAttribute(t,"type");return void 0!==this.types()[o]?o:(r.forEach((function(t){t=t.trim(),void 0!==e.types()[t]&&(n=t)})),n)},t}(),M=function(t){function r(){for(var e,r=arguments.length,n=new Array(r),o=0;o{var t={24:(t,e,r)=>{var n=r(735).default;function o(){"use strict";t.exports=o=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,r){t[e]=r.value},u="function"==typeof Symbol?Symbol:{},l=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function d(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(e){d=function(t,e,r){return t[e]=r}}function p(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,i=Object.create(o.prototype),a=new k(n||[]);return s(i,"_invoke",{value:L(t,r,a)}),i}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=p;var m="suspendedStart",v="suspendedYield",y="executing",w="completed",b={};function g(){}function x(){}function q(){}var _={};d(_,l,(function(){return this}));var O=Object.getPrototypeOf,E=O&&O(O(j([])));E&&E!==i&&a.call(E,l)&&(_=E);var F=q.prototype=g.prototype=Object.create(_);function A(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,i,s,u){var l=h(t[o],t,i);if("throw"!==l.type){var c=l.arg,f=c.value;return f&&"object"==n(f)&&a.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,s,u)}),(function(t){r("throw",t,s,u)})):e.resolve(f).then((function(t){c.value=t,s(c)}),(function(t){return r("throw",t,s,u)}))}u(l.arg)}var o;s(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function L(t,r,n){var o=m;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===w){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var u=S(s,n);if(u){if(u===b)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===m)throw o=w,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var l=h(t,r,n);if("normal"===l.type){if(o=n.done?w:v,l.arg===b)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=w,n.method="throw",n.arg=l.arg)}}}function S(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,S(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var i=h(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,b;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,b):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function C(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 M(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function j(t){if(t||""===t){var r=t[l];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function r(){for(;++o=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),l=a.call(i,"finallyLoc");if(u&&l){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),M(r),b}},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 o=n.arg;M(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:j(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),b}},r}t.exports=o,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 o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.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,{extend:()=>X,panes:()=>Z,types:()=>tt});const t=flarum.core.compat["forum/app"];var e=r.n(t);const o=flarum.core.compat["common/extend"],i=flarum.core.compat["common/components/LinkButton"];var a=r.n(i);const s=flarum.core.compat["forum/components/UserPage"];var u=r.n(s);const l=flarum.core.compat["forum/components/UserCard"];var c=r.n(l);const f=flarum.core.compat["common/helpers/icon"];var d=r.n(f),p=function(){function t(t){var e=t.field,r=t.set,n=t.value;this.field=e,this.set=r,this.value=n}var e=t.prototype;return e.readAttribute=function(t,e){return"function"==typeof t[e]?t[e]():t[e]},e.validationRules=function(){return this.readAttribute(this.field,"validation").split("|")},e.validationRule=function(t){var e=null;return this.validationRules().forEach((function(r){var n=r.split(":",2);n[0]===t&&(e=n[1])})),e},e.editorField=function(){return m("div",{class:"Form-group Field"},m("label",null,this.field.icon()?[d()(this.field.icon())," "]:null," ",this.field.name()," ",this.field.required()?"*":null),m("div",{class:"FormField"},this.field.prefix()?m(".prefix",this.field.prefix()):null,this.editorInput(),this.field.description()?m("div",{class:"helpText"},this.field.description()):null))},e.editorInput=function(){return m("input",this.editorInputAttrs())},e.editorInputAttrs=function(){var t=this;return{className:"FormControl",oninput:function(e){t.set(e.target.value)},value:this.value,required:this.field.required()}},e.answerField=function(){var t=this.readAttribute(this.field,"icon");return m("div",{className:"Masquerade-Bio-Set"+(this.hasAnswer()?"":" Masquerade-Bio-Set--empty")},m("span",{class:"Masquerade-Bio-Field"},t&&m("[",null,d()(t)," "),this.readAttribute(this.field,"name"),":"," "),m("span",{class:"Masquerade-Bio-Answer"},this.answerContent()))},e.answerContent=function(){return this.value},e.hasAnswer=function(){var t=this.answerContent();return!(null===t||("object"==typeof t?!Object.keys(t).length:null==t||!t.length))},t.isNoOptionSelectedValue=function(t){return null===t||""===t},t}();function h(t,e){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},h(t,e)}function v(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,h(t,e)}var y=function(t){function e(){return t.apply(this,arguments)||this}v(e,t);var r=e.prototype;return r.editorInput=function(){var t=this;return this.options().map((function(e){return m("div",m("label",[m("input[type=radio]",{checked:e.selected(t.value),onclick:function(){t.set(e.key)}})," "+e.label]))}))},r.options=function(){var t=[];return this.readAttribute(this.field,"required")||t.push({selected:function(t){return p.isNoOptionSelectedValue(t)},key:null,label:app.translator.trans("fof-masquerade.forum.fields.select.none-optional")}),t.push({selected:function(t){return-1!==["true","1",1,!0,"yes"].indexOf(t)},key:"true",label:app.translator.trans("fof-masquerade.forum.fields.boolean.yes")}),t.push({selected:function(t){return-1!==["false","0",0,!1,"no"].indexOf(t)},key:"false",label:app.translator.trans("fof-masquerade.forum.fields.boolean.no")}),p.isNoOptionSelectedValue(this.value)||-1!==["true","1",1,!0,"yes","false","0",0,!1,"no"].indexOf(this.value)||t.push({selected:function(){return!0},key:this.value,label:"(invalid) "+this.value}),t},r.answerContent=function(){return p.isNoOptionSelectedValue(this.value)?"":-1!==[1,"1",!0,"true","yes"].indexOf(this.value)?[d()("far fa-check-square")," ",app.translator.trans("fof-masquerade.forum.fields.boolean.yes")]:[d()("far fa-square")," ",app.translator.trans("fof-masquerade.forum.fields.boolean.no")]},e}(p);const w=flarum.core.compat["common/components/Button"];var b=r.n(w),g=function(t){function e(){return t.apply(this,arguments)||this}v(e,t);var r=e.prototype;return r.editorInputAttrs=function(){var e=t.prototype.editorInputAttrs.call(this);return e.type="email",e.placeholder="you@example.com",e},r.answerContent=function(){var t=this,e=this.value;if(!e)return null;var r=e.split(/@|\./).map((function(t){return t.replace(/(.{2})./g,"$1*")})).join("*");return b().component({onclick:function(){return t.mailTo()},className:"Button Button--text",icon:"far fa-envelope"},r)},r.mailTo=function(){window.location="mailto:"+this.value},e}(p);const x=flarum.core.compat["common/components/Select"];var q=r.n(x),_="fof_masquerade_no_option_selected",O=function(t){function r(){return t.apply(this,arguments)||this}v(r,t);var n=r.prototype;return n.editorInput=function(){var t=this;return q().component({onchange:function(e){e===_&&(e=""),t.set(e)},value:p.isNoOptionSelectedValue(this.value)?_:this.value,options:this.options()})},n.options=function(){var t={};this.readAttribute(this.field,"required")?p.isNoOptionSelectedValue(this.value)&&(t[_]=e().translator.trans("fof-masquerade.forum.fields.select.none-required")):t[_]=e().translator.trans("fof-masquerade.forum.fields.select.none-optional");var r=this.validationRule("in");return r&&r.split(",").forEach((function(e){t[e]=e})),p.isNoOptionSelectedValue(this.value)||void 0!==t[this.value]||(t[this.value]="(invalid) "+this.value),t},r}(p),E=function(t){function e(){return t.apply(this,arguments)||this}v(e,t);var r=e.prototype;return r.editorInputAttrs=function(){var e=t.prototype.editorInputAttrs.call(this);return e.type="url",e.placeholder="https://example.com",e},r.answerContent=function(){var t=this,e=this.value;return e?b().component({onclick:function(){return t.to()},className:"Button Button--text",icon:"fas fa-link"},e.replace(/^https?:\/\//,"")):null},r.to=function(){window.open().location=this.value},e}(p),F=function(){function t(){}return t.typeForField=function(t){var e=t.field,r=t.set,n=void 0===r?void 0:r,o=t.value,i=p,a=this.identify(e);return a&&(i=this.types()[a]),new i({field:e,set:n,value:o})},t.fieldAttribute=function(t,e){return"function"==typeof t[e]?t[e]():t[e]},t.types=function(){return{boolean:y,email:g,select:O,url:E}},t.identify=function(t){var e=this,r=(this.fieldAttribute(t,"validation")||"").split(","),n=null,o=this.fieldAttribute(t,"type");return void 0!==this.types()[o]?o:(r.forEach((function(t){t=t.trim(),void 0!==e.types()[t]&&(n=t)})),n)},t}();const A=flarum.core.compat["common/extenders"];var P=r.n(A);const L=flarum.core.compat["common/models/User"];var S=r.n(L);const C=flarum.core.compat["common/app"];var M=r.n(C);const k=flarum.core.compat["common/Model"];var j=r.n(k);const N=flarum.core.compat["common/utils/computed"];var I=r.n(N),V=function(t){function e(){for(var e,r=arguments.length,n=new Array(r),o=0;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['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","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['common/components/LoadingIndicator'];","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/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import icon from 'flarum/common/helpers/icon';\n\n/* global m */\n\nexport default class BaseField {\n constructor({ field, set, value }) {\n this.field = field;\n this.set = set;\n this.value = value;\n }\n\n readAttribute(object, attribute) {\n if (typeof object[attribute] === 'function') {\n return object[attribute]();\n }\n\n return object[attribute];\n }\n\n /**\n * Gets all Laravel validation rules split by rule\n * @returns {Array}\n */\n validationRules() {\n return this.readAttribute(this.field, 'validation').split('|');\n }\n\n /**\n * Gets a Laravel validation rule by name\n * @param {string} ruleName\n * @returns {string|null}\n */\n validationRule(ruleName) {\n let ruleContent = null;\n\n this.validationRules().forEach((rule) => {\n const split = rule.split(':', 2);\n\n if (split[0] === ruleName) {\n ruleContent = split[1];\n }\n });\n\n return ruleContent;\n }\n\n editorField() {\n return (\n
\n \n\n
\n {this.field.prefix() ? m('.prefix', this.field.prefix()) : null}\n {this.editorInput()}\n {this.field.description() ?
{this.field.description()}
: null}\n
\n
\n );\n }\n\n editorInput() {\n return ;\n }\n\n editorInputAttrs() {\n return {\n className: 'FormControl',\n oninput: (event) => {\n this.set(event.target.value);\n },\n value: this.value,\n required: this.field.required(),\n };\n }\n\n answerField() {\n const iconName = this.readAttribute(this.field, 'icon');\n\n return (\n
\n \n {iconName && <>{icon(iconName)} }\n {this.readAttribute(this.field, 'name')}:{' '}\n \n {this.answerContent()}\n
\n );\n }\n\n answerContent() {\n return this.value;\n }\n\n hasAnswer() {\n const answerContent = this.answerContent();\n\n if (answerContent === null) {\n return false;\n }\n\n if (typeof answerContent === 'object') {\n return !!Object.keys(answerContent).length;\n }\n\n return !!answerContent?.length;\n }\n\n static isNoOptionSelectedValue(value) {\n // The value can be null when coming from the API\n // The value can be '' when the field does not exist on the user (the empty string is set in ProfileConfigurePane)\n return value === null || value === '';\n }\n}\n","import icon from 'flarum/common/helpers/icon';\nimport BaseField from './BaseField';\n\nexport default class BooleanField extends BaseField {\n editorInput() {\n return this.options().map((option) =>\n m(\n 'div',\n m('label', [\n m('input[type=radio]', {\n checked: option.selected(this.value),\n onclick: () => {\n this.set(option.key);\n },\n }),\n ' ' + option.label,\n ])\n )\n );\n }\n\n options() {\n let options = [];\n\n if (!this.readAttribute(this.field, 'required')) {\n options.push({\n selected: (value) => BaseField.isNoOptionSelectedValue(value),\n key: null,\n label: app.translator.trans('fof-masquerade.forum.fields.select.none-optional'),\n });\n }\n\n options.push({\n selected: (value) => ['true', '1', 1, true, 'yes'].indexOf(value) !== -1,\n key: 'true',\n label: app.translator.trans('fof-masquerade.forum.fields.boolean.yes'),\n });\n\n options.push({\n selected: (value) => ['false', '0', 0, false, 'no'].indexOf(value) !== -1,\n key: 'false',\n label: app.translator.trans('fof-masquerade.forum.fields.boolean.no'),\n });\n\n // This is probably overkill because it looks like the backend casts the value anyway\n if (!BaseField.isNoOptionSelectedValue(this.value) && ['true', '1', 1, true, 'yes', 'false', '0', 0, false, 'no'].indexOf(this.value) === -1) {\n options.push({\n selected: () => true,\n key: this.value,\n label: '(invalid) ' + this.value,\n });\n }\n\n return options;\n }\n\n answerContent() {\n if (BaseField.isNoOptionSelectedValue(this.value)) {\n return '';\n }\n\n return [1, '1', true, 'true', 'yes'].indexOf(this.value) !== -1\n ? [icon('far fa-check-square'), ' ', app.translator.trans('fof-masquerade.forum.fields.boolean.yes')]\n : [icon('far fa-square'), ' ', app.translator.trans('fof-masquerade.forum.fields.boolean.no')];\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","import Button from 'flarum/common/components/Button';\nimport BaseField from './BaseField';\n\nexport default class EmailField extends BaseField {\n editorInputAttrs() {\n let attrs = super.editorInputAttrs();\n\n attrs.type = 'email';\n attrs.placeholder = 'you@example.com';\n\n return attrs;\n }\n\n answerContent() {\n const value = this.value;\n\n if (!value) {\n return null;\n }\n\n const email = value\n .split(/@|\\./)\n .map((segment) => {\n return segment.replace(/(.{2})./g, '$1*');\n })\n .join('*');\n\n return Button.component(\n {\n onclick: () => this.mailTo(),\n className: 'Button Button--text',\n icon: 'far fa-envelope',\n },\n email\n );\n }\n\n mailTo() {\n window.location = 'mailto:' + this.value;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","import app from 'flarum/forum/app';\nimport Select from 'flarum/common/components/Select';\nimport BaseField from './BaseField';\n\nconst NO_OPTION_SELECTED_KEY = 'fof_masquerade_no_option_selected';\n\nexport default class SelectField extends BaseField {\n editorInput() {\n return Select.component({\n onchange: (value) => {\n if (value === NO_OPTION_SELECTED_KEY) {\n value = '';\n }\n\n this.set(value);\n },\n value: BaseField.isNoOptionSelectedValue(this.value) ? NO_OPTION_SELECTED_KEY : this.value,\n options: this.options(),\n });\n }\n\n options() {\n let options = {};\n\n if (!this.readAttribute(this.field, 'required')) {\n options[NO_OPTION_SELECTED_KEY] = app.translator.trans('fof-masquerade.forum.fields.select.none-optional');\n } else if (BaseField.isNoOptionSelectedValue(this.value)) {\n options[NO_OPTION_SELECTED_KEY] = app.translator.trans('fof-masquerade.forum.fields.select.none-required');\n }\n\n const validationIn = this.validationRule('in');\n\n if (validationIn) {\n validationIn.split(',').forEach((value) => {\n options[value] = value;\n });\n }\n\n if (!BaseField.isNoOptionSelectedValue(this.value) && typeof options[this.value] === 'undefined') {\n options[this.value] = '(invalid) ' + this.value;\n }\n\n return options;\n }\n}\n","import Button from 'flarum/common/components/Button';\nimport BaseField from './BaseField';\n\nexport default class UrlField extends BaseField {\n editorInputAttrs() {\n let attrs = super.editorInputAttrs();\n\n attrs.type = 'url';\n attrs.placeholder = 'https://example.com';\n\n return attrs;\n }\n\n answerContent() {\n const value = this.value;\n\n if (!value) {\n return null;\n }\n\n return Button.component(\n {\n onclick: () => this.to(),\n className: 'Button Button--text',\n icon: 'fas fa-link',\n },\n value.replace(/^https?:\\/\\//, '')\n );\n }\n\n to() {\n const popup = window.open();\n popup.location = this.value;\n }\n}\n","import BaseField from './BaseField';\nimport BooleanField from './BooleanField';\nimport EmailField from './EmailField';\nimport SelectField from './SelectField';\nimport UrlField from './UrlField';\n\nexport default class TypeFactory {\n static typeForField({ field, set = undefined, value }) {\n let className = BaseField;\n\n const type = this.identify(field);\n\n if (type) {\n className = this.types()[type];\n }\n\n return new className({\n field,\n set,\n value,\n });\n }\n\n static fieldAttribute(field, attribute) {\n if (typeof field[attribute] === 'function') {\n return field[attribute]();\n }\n\n return field[attribute];\n }\n\n static types() {\n return {\n boolean: BooleanField,\n email: EmailField,\n select: SelectField,\n url: UrlField,\n };\n }\n\n /**\n * Identifies how to parse the field answer.\n * @returns {null|string}\n */\n static identify(field) {\n const validation = (this.fieldAttribute(field, 'validation') || '').split(',');\n let identified = null;\n\n // If the field has a type we use it\n const fieldType = this.fieldAttribute(field, 'type');\n if (typeof this.types()[fieldType] !== 'undefined') {\n return fieldType;\n }\n\n // If it's an advanced field with no type we then guess the best type\n validation.forEach((rule) => {\n rule = rule.trim();\n\n if (typeof this.types()[rule] !== 'undefined') {\n identified = rule;\n }\n });\n\n return identified;\n }\n}\n","import app from 'flarum/forum/app';\n\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport TypeFactory from '../types/TypeFactory';\n\nimport type Answer from '../../lib/models/Answer';\nimport type Field from 'src/lib/models/Field';\nimport type User from 'flarum/common/models/User';\nimport type Mithril from 'mithril';\n\nexport interface ProfilePaneAttrs extends ComponentAttrs {\n answers: Answer[];\n user: User;\n loading: boolean;\n}\n\nexport default class ProfilePane extends Component {\n answers!: Answer[];\n user!: User;\n loading!: boolean;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n this.loading = true;\n\n this.answers = [];\n this.user = this.attrs.user;\n\n this.load();\n }\n\n view() {\n return (\n
\n
\n {app.store\n .all('masquerade-field')\n .sort((a, b) => (a as Field).sort() - (b as Field).sort())\n .map((field) => {\n const answer = this.answers.find((a) => a.field()?.id() === field.id());\n\n return this.field(field as Field, (answer?.content() as Answer) || null);\n })}\n
\n
\n );\n }\n\n field(field: Field, content: Answer | null) {\n const type = TypeFactory.typeForField({\n field,\n value: content,\n });\n\n return type.answerField();\n }\n\n async load() {\n this.answers = this.user.masqueradeAnswers();\n const userId = this.user.id();\n\n if (!userId) return;\n\n if (this.answers) return;\n\n this.answers = [];\n app.store.find('users', userId, { include: 'masqueradeAnswers' }).then(() => {\n this.answers = this.user.masqueradeAnswers();\n m.redraw();\n });\n\n m.redraw();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import app from 'flarum/forum/app';\n\nimport Button from 'flarum/common/components/Button';\nimport Link from 'flarum/common/components/Link';\nimport TypeFactory from '../types/TypeFactory';\nimport Component from 'flarum/common/Component';\n\nexport default class ProfileConfigurePane extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.loading = true;\n\n this.enforceProfileCompletion = app.forum.attribute('masquerade.force-profile-completion') || false;\n this.profileCompleted = app.forum.attribute('masquerade.profile-completed') || false;\n this.profileNowCompleted = false; // Show \"after required\" text\n this.answers = [];\n this.answerValues = {};\n this.user = this.attrs.user;\n this.load();\n\n // Show disabled state if everything is saved\n // Unless the profile isn't complete, in which case show enabled button so it's obvious you will need to save\n this.dirty = !this.profileCompleted;\n }\n\n view() {\n return (\n
\n {!!(this.enforceProfileCompletion && !this.profileCompleted) && (\n
{app.translator.trans('fof-masquerade.forum.alerts.profile-completion-required')}
\n )}\n\n
\n {app.store\n .all('masquerade-field')\n .sort((a, b) => a.sort() - b.sort())\n .map((field) => {\n return this.field(field);\n })}\n
\n\n \n\n {!!this.profileNowCompleted && (\n \n {app.translator.trans('fof-masquerade.forum.alerts.profile-completed', {\n a: ,\n })}\n \n )}\n
\n );\n }\n\n field(field) {\n const type = TypeFactory.typeForField({\n field,\n set: this.set.bind(this, field),\n value: this.answerValues[field.id()],\n });\n\n return type.editorField();\n }\n\n load() {\n this.answers = this.user.masqueradeAnswers();\n\n if (this.answers === false) {\n this.answers = [];\n app.store.find('users', this.user.id(), { include: 'masqueradeAnswers' }).then(() => {\n this.answers = this.user.masqueradeAnswers();\n this.answerValues = {};\n\n app.store.all('masquerade-field').forEach((field) => {\n const answer = this.answers.find((a) => a.field()?.id() === field.id());\n\n this.answerValues[field.id()] = answer ? answer.content() : '';\n });\n\n this.loading = false;\n m.redraw();\n });\n } else {\n this.loading = false;\n\n app.store.all('masquerade-field').forEach((field) => {\n const answer = this.answers.find((a) => a.field()?.id() === field.id());\n\n this.answerValues[field.id()] = answer ? answer.content() : '';\n });\n }\n\n m.redraw();\n }\n\n set(field, value) {\n this.answerValues[field.id()] = value;\n this.dirty = true;\n }\n\n update(e) {\n e.preventDefault();\n\n this.loading = true;\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/masquerade/configure/' + this.user.id(),\n body: this.answerValues,\n })\n .then((response) => {\n this.dirty = false;\n\n if (!this.profileCompleted) {\n this.profileCompleted = true;\n this.profileNowCompleted = true;\n }\n\n this.parseResponse(response);\n })\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n parseResponse(response) {\n this.answers = app.store.pushPayload(response);\n this.loading = false;\n m.redraw();\n }\n}\n","import UserPage from 'flarum/forum/components/UserPage';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport ProfilePane from './ProfilePane';\nimport ProfileConfigurePane from './ProfileConfigurePane';\n\nimport type User from 'flarum/common/models/User';\nimport type Mithril from 'mithril';\n\nexport default class RootMasqueradePane extends UserPage {\n loading = true;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.loadUser(m.route.param('username'));\n }\n\n pageContentComponent() {\n if (!this.user) return null;\n\n if (this.user.canEditMasqueradeProfile()) return ;\n else return ;\n }\n\n show(user: User) {\n super.show(user);\n\n this.loading = false;\n m.redraw();\n }\n\n content() {\n return (\n
\n {this.loading && }\n {this.pageContentComponent()}\n
\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import app from 'flarum/common/app';\nimport Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\n\nimport type Field from './Field';\n\nexport default class Answer extends Model {\n content = Model.attribute('content');\n fieldId = Model.attribute('fieldId');\n // @ts-ignore\n field = computed('fieldId', (fieldId: string) => {\n return app.store.getById('masquerade-field', fieldId);\n });\n userId = Model.attribute('user_id');\n}\n","import Model from 'flarum/common/Model';\n\nexport default class Field extends Model {\n name = Model.attribute('name');\n description = Model.attribute('description');\n type = Model.attribute('type');\n validation = Model.attribute('validation');\n required = Model.attribute('required');\n prefix = Model.attribute('prefix');\n icon = Model.attribute('icon');\n sort = Model.attribute('sort');\n deleted_at = Model.attribute('deleted_at', Model.transformDate);\n answer = Model.hasOne('answer');\n on_bio = Model.attribute('on_bio');\n\n apiEndpoint() {\n return '/masquerade/fields' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Field from '../lib/models/Field';\n\nexport default [\n new Extend.Store() //\n .add('masquerade-field', Field),\n];\n","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport Field from '../lib/models/Field';\nimport Answer from '../lib/models/Answer';\n\nimport { default as commonExtend } from '../common/extend';\n\nexport default [\n ...commonExtend,\n\n new Extend.Store() //\n .add('masquerade-answer', Answer),\n\n new Extend.Model(User) //\n .hasMany('bioFields')\n .hasMany('masqueradeAnswers')\n .attribute('canEditMasqueradeProfile'),\n];\n","import ProfileConfigurePane from './ProfileConfigurePane';\nimport ProfilePane from './ProfilePane';\nimport RootMasqueradePane from './RootMasqueradePane';\n\nexport const panes = {\n ProfileConfigurePane,\n ProfilePane,\n RootMasqueradePane,\n};\n","import BaseField from './BaseField';\nimport BooleanField from './BooleanField';\nimport EmailField from './EmailField';\nimport SelectField from './SelectField';\nimport TypeFactory from './TypeFactory';\nimport UrlField from './UrlField';\n\nexport const types = {\n BaseField,\n BooleanField,\n EmailField,\n SelectField,\n TypeFactory,\n UrlField,\n};\n","import app from 'flarum/forum/app';\nimport addProfilePane from './addProfilePane';\nimport mutateUserHero from './mutateUserHero';\n\napp.initializers.add('fof-masquerade', () => {\n addProfilePane();\n mutateUserHero();\n});\n\nexport { default as extend } from './extend';\nexport * from './panes';\nexport * from './types';\n","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport RootMasqueradePane from './panes/RootMasqueradePane';\n\nimport type ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addProfilePane() {\n app.routes['fof-masquerade'] = {\n path: '/u/:username/masquerade',\n resolver: {\n onmatch() {\n if (!app.forum.attribute('canViewMasquerade')) throw new Error();\n\n return RootMasqueradePane;\n },\n },\n };\n\n extend(UserPage.prototype, 'navItems', function (items: ItemList) {\n if (app.forum.attribute('canViewMasquerade') || this.user?.canEditMasqueradeProfile()) {\n const edit = this.user?.canEditMasqueradeProfile();\n\n items.add(\n 'masquerade',\n LinkButton.component(\n {\n href: app.route('fof-masquerade', { username: this.user?.slug() }),\n icon: 'far fa-id-card',\n 'data-editProfile': edit,\n },\n app.translator.trans(`fof-masquerade.forum.buttons.${edit ? 'edit' : 'view'}-profile`)\n ),\n 200\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport TypeFactory from './types/TypeFactory';\n\nimport type ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\nimport type User from 'flarum/common/models/User';\n\nexport default function mutateUserHero() {\n extend(UserCard.prototype, 'infoItems', function (items: ItemList) {\n const user = (this.attrs as { user: User }).user;\n const answers = app.forum.attribute('canViewMasquerade') ? user.bioFields() || [] : [];\n\n items.add(\n 'masquerade-bio',\n
\n {answers.map((answer) => {\n const field = answer.attribute('field');\n const type = TypeFactory.typeForField({\n field,\n value: answer.attribute('content'),\n });\n\n return type.answerField();\n })}\n
\n );\n });\n}\n"],"names":["_typeof","require","_regeneratorRuntime","module","exports","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","flarum","core","compat","_setPrototypeOf","bind","_inheritsLoose","asyncGeneratorStep","BaseField","_ref","field","set","_proto","readAttribute","object","attribute","validationRules","split","validationRule","ruleName","ruleContent","rule","editorField","m","class","icon","required","prefix","editorInput","description","editorInputAttrs","_this","className","oninput","event","target","answerField","iconName","hasAnswer","'['","answerContent","isNoOptionSelectedValue","BooleanField","_BaseField","apply","arguments","options","map","option","checked","selected","onclick","label","app","translator","trans","indexOf","EmailField","attrs","placeholder","email","segment","replace","join","Button","mailTo","window","location","NO_OPTION_SELECTED_KEY","SelectField","Select","onchange","validationIn","UrlField","to","open","TypeFactory","typeForField","_ref$set","identify","types","fieldAttribute","boolean","select","url","validation","identified","fieldType","trim","ProfilePane","_Component","_len","args","Array","_key","concat","answers","user","loading","oninit","vnode","load","view","_this2","all","sort","b","answer","find","_a$field","id","content","_load","_callee","userId","_this3","_context","masqueradeAnswers","include","redraw","_next","_throw","Component","ProfileConfigurePane","enforceProfileCompletion","profileCompleted","profileNowCompleted","answerValues","dirty","onsubmit","update","disabled","Link","href","_a$field2","preventDefault","body","response","parseResponse","pushPayload","RootMasqueradePane","_UserPage","loadUser","route","param","pageContentComponent","canEditMasqueradeProfile","show","LoadingIndicator","UserPage","Answer","_Model","Model","fieldId","computed","getById","Field","deleted_at","on_bio","apiEndpoint","exists","data","Extend","add","commonExtend","User","hasMany","panes","path","resolver","onmatch","extend","items","_this$user","_this$user2","_this$user3","edit","LinkButton","username","slug","UserCard","bioFields"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@fof/masquerade/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@fof/masquerade/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@fof/masquerade/./node_modules/@babel/runtime/regenerator/index.js","webpack://@fof/masquerade/webpack/bootstrap","webpack://@fof/masquerade/webpack/runtime/compat get default export","webpack://@fof/masquerade/webpack/runtime/define property getters","webpack://@fof/masquerade/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/masquerade/webpack/runtime/make namespace object","webpack://@fof/masquerade/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/masquerade/./src/forum/types/BaseField.js","webpack://@fof/masquerade/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/masquerade/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/masquerade/./src/forum/types/BooleanField.js","webpack://@fof/masquerade/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/masquerade/./src/forum/types/EmailField.js","webpack://@fof/masquerade/external root \"flarum.core.compat['common/components/Select']\"","webpack://@fof/masquerade/./src/forum/types/SelectField.js","webpack://@fof/masquerade/./src/forum/types/UrlField.js","webpack://@fof/masquerade/./src/forum/types/TypeFactory.js","webpack://@fof/masquerade/external root \"flarum.core.compat['common/extenders']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/app']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/masquerade/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@fof/masquerade/./src/lib/models/Answer.ts","webpack://@fof/masquerade/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/masquerade/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@fof/masquerade/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/masquerade/./src/forum/panes/ProfilePane.tsx","webpack://@fof/masquerade/external root \"flarum.core.compat['common/components/Link']\"","webpack://@fof/masquerade/./src/forum/panes/ProfileConfigurePane.js","webpack://@fof/masquerade/./src/forum/panes/RootMasqueradePane.tsx","webpack://@fof/masquerade/./src/lib/models/Field.js","webpack://@fof/masquerade/./src/common/extend.ts","webpack://@fof/masquerade/./src/forum/extend.ts","webpack://@fof/masquerade/./src/forum/panes/index.ts","webpack://@fof/masquerade/./src/forum/types/index.ts","webpack://@fof/masquerade/./src/forum/index.ts","webpack://@fof/masquerade/./src/forum/addProfilePane.ts","webpack://@fof/masquerade/./src/forum/mutateUserHero.tsx"],"sourcesContent":["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['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import icon from 'flarum/common/helpers/icon';\n\n/* global m */\n\nexport default class BaseField {\n constructor({ field, set, value }) {\n this.field = field;\n this.set = set;\n this.value = value;\n }\n\n readAttribute(object, attribute) {\n if (typeof object[attribute] === 'function') {\n return object[attribute]();\n }\n\n return object[attribute];\n }\n\n /**\n * Gets all Laravel validation rules split by rule\n * @returns {Array}\n */\n validationRules() {\n return this.readAttribute(this.field, 'validation').split('|');\n }\n\n /**\n * Gets a Laravel validation rule by name\n * @param {string} ruleName\n * @returns {string|null}\n */\n validationRule(ruleName) {\n let ruleContent = null;\n\n this.validationRules().forEach((rule) => {\n const split = rule.split(':', 2);\n\n if (split[0] === ruleName) {\n ruleContent = split[1];\n }\n });\n\n return ruleContent;\n }\n\n editorField() {\n return (\n
\n \n\n
\n {this.field.prefix() ? m('.prefix', this.field.prefix()) : null}\n {this.editorInput()}\n {this.field.description() ?
{this.field.description()}
: null}\n
\n
\n );\n }\n\n editorInput() {\n return ;\n }\n\n editorInputAttrs() {\n return {\n className: 'FormControl',\n oninput: (event) => {\n this.set(event.target.value);\n },\n value: this.value,\n required: this.field.required(),\n };\n }\n\n answerField() {\n const iconName = this.readAttribute(this.field, 'icon');\n\n return (\n
\n \n {iconName && <>{icon(iconName)} }\n {this.readAttribute(this.field, 'name')}:{' '}\n \n {this.answerContent()}\n
\n );\n }\n\n answerContent() {\n return this.value;\n }\n\n hasAnswer() {\n const answerContent = this.answerContent();\n\n if (answerContent === null) {\n return false;\n }\n\n if (typeof answerContent === 'object') {\n return !!Object.keys(answerContent).length;\n }\n\n return !!answerContent?.length;\n }\n\n static isNoOptionSelectedValue(value) {\n // The value can be null when coming from the API\n // The value can be '' when the field does not exist on the user (the empty string is set in ProfileConfigurePane)\n return value === null || value === '';\n }\n}\n","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 };","import icon from 'flarum/common/helpers/icon';\nimport BaseField from './BaseField';\n\nexport default class BooleanField extends BaseField {\n editorInput() {\n return this.options().map((option) =>\n m(\n 'div',\n m('label', [\n m('input[type=radio]', {\n checked: option.selected(this.value),\n onclick: () => {\n this.set(option.key);\n },\n }),\n ' ' + option.label,\n ])\n )\n );\n }\n\n options() {\n let options = [];\n\n if (!this.readAttribute(this.field, 'required')) {\n options.push({\n selected: (value) => BaseField.isNoOptionSelectedValue(value),\n key: null,\n label: app.translator.trans('fof-masquerade.forum.fields.select.none-optional'),\n });\n }\n\n options.push({\n selected: (value) => ['true', '1', 1, true, 'yes'].indexOf(value) !== -1,\n key: 'true',\n label: app.translator.trans('fof-masquerade.forum.fields.boolean.yes'),\n });\n\n options.push({\n selected: (value) => ['false', '0', 0, false, 'no'].indexOf(value) !== -1,\n key: 'false',\n label: app.translator.trans('fof-masquerade.forum.fields.boolean.no'),\n });\n\n // This is probably overkill because it looks like the backend casts the value anyway\n if (!BaseField.isNoOptionSelectedValue(this.value) && ['true', '1', 1, true, 'yes', 'false', '0', 0, false, 'no'].indexOf(this.value) === -1) {\n options.push({\n selected: () => true,\n key: this.value,\n label: '(invalid) ' + this.value,\n });\n }\n\n return options;\n }\n\n answerContent() {\n if (BaseField.isNoOptionSelectedValue(this.value)) {\n return '';\n }\n\n return [1, '1', true, 'true', 'yes'].indexOf(this.value) !== -1\n ? [icon('far fa-check-square'), ' ', app.translator.trans('fof-masquerade.forum.fields.boolean.yes')]\n : [icon('far fa-square'), ' ', app.translator.trans('fof-masquerade.forum.fields.boolean.no')];\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","import Button from 'flarum/common/components/Button';\nimport BaseField from './BaseField';\n\nexport default class EmailField extends BaseField {\n editorInputAttrs() {\n let attrs = super.editorInputAttrs();\n\n attrs.type = 'email';\n attrs.placeholder = 'you@example.com';\n\n return attrs;\n }\n\n answerContent() {\n const value = this.value;\n\n if (!value) {\n return null;\n }\n\n const email = value\n .split(/@|\\./)\n .map((segment) => {\n return segment.replace(/(.{2})./g, '$1*');\n })\n .join('*');\n\n return Button.component(\n {\n onclick: () => this.mailTo(),\n className: 'Button Button--text',\n icon: 'far fa-envelope',\n },\n email\n );\n }\n\n mailTo() {\n window.location = 'mailto:' + this.value;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","import app from 'flarum/forum/app';\nimport Select from 'flarum/common/components/Select';\nimport BaseField from './BaseField';\n\nconst NO_OPTION_SELECTED_KEY = 'fof_masquerade_no_option_selected';\n\nexport default class SelectField extends BaseField {\n editorInput() {\n return Select.component({\n onchange: (value) => {\n if (value === NO_OPTION_SELECTED_KEY) {\n value = '';\n }\n\n this.set(value);\n },\n value: BaseField.isNoOptionSelectedValue(this.value) ? NO_OPTION_SELECTED_KEY : this.value,\n options: this.options(),\n });\n }\n\n options() {\n let options = {};\n\n if (!this.readAttribute(this.field, 'required')) {\n options[NO_OPTION_SELECTED_KEY] = app.translator.trans('fof-masquerade.forum.fields.select.none-optional');\n } else if (BaseField.isNoOptionSelectedValue(this.value)) {\n options[NO_OPTION_SELECTED_KEY] = app.translator.trans('fof-masquerade.forum.fields.select.none-required');\n }\n\n const validationIn = this.validationRule('in');\n\n if (validationIn) {\n validationIn.split(',').forEach((value) => {\n options[value] = value;\n });\n }\n\n if (!BaseField.isNoOptionSelectedValue(this.value) && typeof options[this.value] === 'undefined') {\n options[this.value] = '(invalid) ' + this.value;\n }\n\n return options;\n }\n}\n","import Button from 'flarum/common/components/Button';\nimport BaseField from './BaseField';\n\nexport default class UrlField extends BaseField {\n editorInputAttrs() {\n let attrs = super.editorInputAttrs();\n\n attrs.type = 'url';\n attrs.placeholder = 'https://example.com';\n\n return attrs;\n }\n\n answerContent() {\n const value = this.value;\n\n if (!value) {\n return null;\n }\n\n return Button.component(\n {\n onclick: () => this.to(),\n className: 'Button Button--text',\n icon: 'fas fa-link',\n },\n value.replace(/^https?:\\/\\//, '')\n );\n }\n\n to() {\n const popup = window.open();\n popup.location = this.value;\n }\n}\n","import BaseField from './BaseField';\nimport BooleanField from './BooleanField';\nimport EmailField from './EmailField';\nimport SelectField from './SelectField';\nimport UrlField from './UrlField';\n\nexport default class TypeFactory {\n static typeForField({ field, set = undefined, value }) {\n let className = BaseField;\n\n const type = this.identify(field);\n\n if (type) {\n className = this.types()[type];\n }\n\n return new className({\n field,\n set,\n value,\n });\n }\n\n static fieldAttribute(field, attribute) {\n if (typeof field[attribute] === 'function') {\n return field[attribute]();\n }\n\n return field[attribute];\n }\n\n static types() {\n return {\n boolean: BooleanField,\n email: EmailField,\n select: SelectField,\n url: UrlField,\n };\n }\n\n /**\n * Identifies how to parse the field answer.\n * @returns {null|string}\n */\n static identify(field) {\n const validation = (this.fieldAttribute(field, 'validation') || '').split(',');\n let identified = null;\n\n // If the field has a type we use it\n const fieldType = this.fieldAttribute(field, 'type');\n if (typeof this.types()[fieldType] !== 'undefined') {\n return fieldType;\n }\n\n // If it's an advanced field with no type we then guess the best type\n validation.forEach((rule) => {\n rule = rule.trim();\n\n if (typeof this.types()[rule] !== 'undefined') {\n identified = rule;\n }\n });\n\n return identified;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import app from 'flarum/common/app';\nimport Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\n\nimport type Field from './Field';\n\nexport default class Answer extends Model {\n content = Model.attribute('content');\n fieldId = Model.attribute('fieldId');\n // @ts-ignore\n field = computed('fieldId', (fieldId: string) => {\n return app.store.getById('masquerade-field', fieldId);\n });\n userId = Model.attribute('user_id');\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","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/Component'];","import app from 'flarum/forum/app';\n\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport TypeFactory from '../types/TypeFactory';\n\nimport type Answer from '../../lib/models/Answer';\nimport type Field from 'src/lib/models/Field';\nimport type User from 'flarum/common/models/User';\nimport type Mithril from 'mithril';\n\nexport interface ProfilePaneAttrs extends ComponentAttrs {\n answers: Answer[];\n user: User;\n loading: boolean;\n}\n\nexport default class ProfilePane extends Component {\n answers!: Answer[];\n user!: User;\n loading!: boolean;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n this.loading = true;\n\n this.answers = [];\n this.user = this.attrs.user;\n\n this.load();\n }\n\n view() {\n return (\n
\n
\n {app.store\n .all('masquerade-field')\n .sort((a, b) => (a as Field).sort() - (b as Field).sort())\n .map((field) => {\n const answer = this.answers.find((a) => a.field()?.id() === field.id());\n\n return this.field(field as Field, (answer?.content() as Answer) || null);\n })}\n
\n
\n );\n }\n\n field(field: Field, content: Answer | null) {\n const type = TypeFactory.typeForField({\n field,\n value: content,\n });\n\n return type.answerField();\n }\n\n async load() {\n this.answers = this.user.masqueradeAnswers();\n const userId = this.user.id();\n\n if (!userId) return;\n\n if (this.answers) return;\n\n this.answers = [];\n app.store.find('users', userId, { include: 'masqueradeAnswers' }).then(() => {\n this.answers = this.user.masqueradeAnswers();\n m.redraw();\n });\n\n m.redraw();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import app from 'flarum/forum/app';\n\nimport Button from 'flarum/common/components/Button';\nimport Link from 'flarum/common/components/Link';\nimport TypeFactory from '../types/TypeFactory';\nimport Component from 'flarum/common/Component';\n\nexport default class ProfileConfigurePane extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.loading = true;\n\n this.enforceProfileCompletion = app.forum.attribute('masquerade.force-profile-completion') || false;\n this.profileCompleted = app.forum.attribute('masquerade.profile-completed') || false;\n this.profileNowCompleted = false; // Show \"after required\" text\n this.answers = [];\n this.answerValues = {};\n this.user = this.attrs.user;\n this.load();\n\n // Show disabled state if everything is saved\n // Unless the profile isn't complete, in which case show enabled button so it's obvious you will need to save\n this.dirty = !this.profileCompleted;\n }\n\n view() {\n return (\n
\n {!!(this.enforceProfileCompletion && !this.profileCompleted) && (\n
{app.translator.trans('fof-masquerade.forum.alerts.profile-completion-required')}
\n )}\n\n
\n {app.store\n .all('masquerade-field')\n .sort((a, b) => a.sort() - b.sort())\n .map((field) => {\n return this.field(field);\n })}\n
\n\n \n\n {!!this.profileNowCompleted && (\n \n {app.translator.trans('fof-masquerade.forum.alerts.profile-completed', {\n a: ,\n })}\n \n )}\n
\n );\n }\n\n field(field) {\n const type = TypeFactory.typeForField({\n field,\n set: this.set.bind(this, field),\n value: this.answerValues[field.id()],\n });\n\n return type.editorField();\n }\n\n load() {\n this.answers = this.user.masqueradeAnswers();\n\n if (this.answers === false) {\n this.answers = [];\n app.store.find('users', this.user.id(), { include: 'masqueradeAnswers' }).then(() => {\n this.answers = this.user.masqueradeAnswers();\n this.answerValues = {};\n\n app.store.all('masquerade-field').forEach((field) => {\n const answer = this.answers.find((a) => a.field()?.id() === field.id());\n\n this.answerValues[field.id()] = answer ? answer.content() : '';\n });\n\n this.loading = false;\n m.redraw();\n });\n } else {\n this.loading = false;\n\n app.store.all('masquerade-field').forEach((field) => {\n const answer = this.answers.find((a) => a.field()?.id() === field.id());\n\n this.answerValues[field.id()] = answer ? answer.content() : '';\n });\n }\n\n m.redraw();\n }\n\n set(field, value) {\n this.answerValues[field.id()] = value;\n this.dirty = true;\n }\n\n update(e) {\n e.preventDefault();\n\n this.loading = true;\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/masquerade/configure/' + this.user.id(),\n body: this.answerValues,\n })\n .then((response) => {\n this.dirty = false;\n\n if (!this.profileCompleted) {\n this.profileCompleted = true;\n this.profileNowCompleted = true;\n }\n\n this.parseResponse(response);\n })\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n parseResponse(response) {\n this.answers = app.store.pushPayload(response);\n this.loading = false;\n m.redraw();\n }\n}\n","import app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport ProfilePane from './ProfilePane';\nimport ProfileConfigurePane from './ProfileConfigurePane';\n\nimport type User from 'flarum/common/models/User';\nimport type Mithril from 'mithril';\n\nexport default class RootMasqueradePane extends UserPage {\n loading = true;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n if (!app.forum.attribute('canViewMasquerade')) {\n m.route.set(app.route('index'));\n }\n\n this.loadUser(m.route.param('username'));\n }\n\n pageContentComponent() {\n if (!this.user) return null;\n\n if (this.user.canEditMasqueradeProfile()) return ;\n else return ;\n }\n\n show(user: User) {\n super.show(user);\n\n this.loading = false;\n m.redraw();\n }\n\n content() {\n return (\n
\n {this.loading && }\n {this.pageContentComponent()}\n
\n );\n }\n}\n","import Model from 'flarum/common/Model';\n\nexport default class Field extends Model {\n name = Model.attribute('name');\n description = Model.attribute('description');\n type = Model.attribute('type');\n validation = Model.attribute('validation');\n required = Model.attribute('required');\n prefix = Model.attribute('prefix');\n icon = Model.attribute('icon');\n sort = Model.attribute('sort');\n deleted_at = Model.attribute('deleted_at', Model.transformDate);\n answer = Model.hasOne('answer');\n on_bio = Model.attribute('on_bio');\n\n apiEndpoint() {\n return '/masquerade/fields' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Field from '../lib/models/Field';\n\nexport default [\n new Extend.Store() //\n .add('masquerade-field', Field),\n];\n","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport Field from '../lib/models/Field';\nimport Answer from '../lib/models/Answer';\nimport RootMasqueradePane from './panes/RootMasqueradePane';\n\nimport { default as commonExtend } from '../common/extend';\n\nexport default [\n ...commonExtend,\n\n new Extend.Routes() //\n .add('fof-masquerade', '/u/:username/masquerade', RootMasqueradePane),\n\n new Extend.Store() //\n .add('masquerade-answer', Answer),\n\n new Extend.Model(User) //\n .hasMany('bioFields')\n .hasMany('masqueradeAnswers')\n .attribute('canEditMasqueradeProfile'),\n];\n","import ProfileConfigurePane from './ProfileConfigurePane';\nimport ProfilePane from './ProfilePane';\nimport RootMasqueradePane from './RootMasqueradePane';\n\nexport const panes = {\n ProfileConfigurePane,\n ProfilePane,\n RootMasqueradePane,\n};\n","import BaseField from './BaseField';\nimport BooleanField from './BooleanField';\nimport EmailField from './EmailField';\nimport SelectField from './SelectField';\nimport TypeFactory from './TypeFactory';\nimport UrlField from './UrlField';\n\nexport const types = {\n BaseField,\n BooleanField,\n EmailField,\n SelectField,\n TypeFactory,\n UrlField,\n};\n","import app from 'flarum/forum/app';\nimport addProfilePane from './addProfilePane';\nimport mutateUserHero from './mutateUserHero';\n\napp.initializers.add('fof-masquerade', () => {\n addProfilePane();\n mutateUserHero();\n});\n\nexport { default as extend } from './extend';\nexport * from './panes';\nexport * from './types';\n","import app from 'flarum/forum/app';\n\nimport { extend } from 'flarum/common/extend';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport UserPage from 'flarum/forum/components/UserPage';\n\nimport type ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addProfilePane() {\n extend(UserPage.prototype, 'navItems', function (items: ItemList) {\n if (app.forum.attribute('canViewMasquerade') || this.user?.canEditMasqueradeProfile()) {\n const edit = this.user?.canEditMasqueradeProfile();\n\n items.add(\n 'masquerade',\n LinkButton.component(\n {\n href: app.route('fof-masquerade', { username: this.user?.slug() }),\n icon: 'far fa-id-card',\n 'data-editProfile': edit,\n },\n app.translator.trans(`fof-masquerade.forum.buttons.${edit ? 'edit' : 'view'}-profile`)\n ),\n 200\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport TypeFactory from './types/TypeFactory';\n\nimport type ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\nimport type User from 'flarum/common/models/User';\n\nexport default function mutateUserHero() {\n extend(UserCard.prototype, 'infoItems', function (items: ItemList) {\n const user = (this.attrs as { user: User }).user;\n const answers = app.forum.attribute('canViewMasquerade') ? user.bioFields() || [] : [];\n\n items.add(\n 'masquerade-bio',\n
\n {answers.map((answer) => {\n const field = answer.attribute('field');\n const type = TypeFactory.typeForField({\n field,\n value: answer.attribute('content'),\n });\n\n return type.answerField();\n })}\n
\n );\n });\n}\n"],"names":["_typeof","require","_regeneratorRuntime","module","exports","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","flarum","core","compat","BaseField","_ref","field","set","_proto","readAttribute","object","attribute","validationRules","split","validationRule","ruleName","ruleContent","rule","editorField","m","class","icon","required","prefix","editorInput","description","editorInputAttrs","_this","className","oninput","event","target","answerField","iconName","hasAnswer","'['","answerContent","isNoOptionSelectedValue","_setPrototypeOf","bind","_inheritsLoose","BooleanField","_BaseField","apply","arguments","options","map","option","checked","selected","onclick","label","app","translator","trans","indexOf","EmailField","attrs","placeholder","email","segment","replace","join","Button","mailTo","window","location","NO_OPTION_SELECTED_KEY","SelectField","Select","onchange","validationIn","UrlField","to","open","TypeFactory","typeForField","_ref$set","identify","types","fieldAttribute","boolean","select","url","validation","identified","fieldType","trim","Answer","_Model","_len","args","Array","_key","concat","content","Model","fieldId","computed","getById","userId","asyncGeneratorStep","ProfilePane","_Component","answers","user","loading","oninit","vnode","load","view","_this2","all","sort","b","answer","find","_a$field","id","_load","_callee","_this3","_context","masqueradeAnswers","include","redraw","_next","_throw","Component","ProfileConfigurePane","enforceProfileCompletion","profileCompleted","profileNowCompleted","answerValues","dirty","onsubmit","update","disabled","Link","href","_a$field2","preventDefault","body","response","parseResponse","pushPayload","RootMasqueradePane","_UserPage","route","loadUser","param","pageContentComponent","canEditMasqueradeProfile","show","LoadingIndicator","UserPage","Field","deleted_at","on_bio","apiEndpoint","exists","data","Extend","add","commonExtend","User","hasMany","panes","extend","items","_this$user","_this$user2","_this$user3","edit","LinkButton","username","slug","UserCard","bioFields"],"sourceRoot":""} \ No newline at end of file