diff --git a/js/dist/forum.js b/js/dist/forum.js index 8742969..a443fe8 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 o=r(735).default;function n(){"use strict";t.exports=n=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},a=Object.prototype,i=a.hasOwnProperty,c=Object.defineProperty||function(t,e,r){t[e]=r.value},s="function"==typeof Symbol?Symbol:{},u=s.iterator||"@@iterator",f=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function m(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{m({},"")}catch(e){m=function(t,e,r){return t[e]=r}}function p(t,e,r,o){var n=e&&e.prototype instanceof _?e:_,a=Object.create(n.prototype),i=new j(o||[]);return c(a,"_invoke",{value:O(t,r,i)}),a}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=p;var h="suspendedStart",y="suspendedYield",v="executing",g="completed",b={};function _(){}function x(){}function w(){}var P={};m(P,u,(function(){return this}));var k=Object.getPrototypeOf,T=k&&k(k(U([])));T&&T!==a&&i.call(T,u)&&(P=T);var S=w.prototype=_.prototype=Object.create(P);function E(t){["next","throw","return"].forEach((function(e){m(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(n,a,c,s){var u=d(t[n],t,a);if("throw"!==u.type){var f=u.arg,l=f.value;return l&&"object"==o(l)&&i.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,c,s)}),(function(t){r("throw",t,c,s)})):e.resolve(l).then((function(t){f.value=t,c(f)}),(function(t){return r("throw",t,c,s)}))}s(u.arg)}var n;c(this,"_invoke",{value:function(t,o){function a(){return new e((function(e,n){r(t,o,e,n)}))}return n=n?n.then(a,a):a()}})}function O(t,r,o){var n=h;return function(a,i){if(n===v)throw Error("Generator is already running");if(n===g){if("throw"===a)throw i;return{value:e,done:!0}}for(o.method=a,o.arg=i;;){var c=o.delegate;if(c){var s=F(c,o);if(s){if(s===b)continue;return s}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(n===h)throw n=g,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);n=v;var u=d(t,r,o);if("normal"===u.type){if(n=o.done?g:y,u.arg===b)continue;return{value:u.arg,done:o.done}}"throw"===u.type&&(n=g,o.method="throw",o.arg=u.arg)}}}function F(t,r){var o=r.method,n=t.iterator[o];if(n===e)return r.delegate=null,"throw"===o&&t.iterator.return&&(r.method="return",r.arg=e,F(t,r),"throw"===r.method)||"return"!==o&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+o+"' method")),b;var a=d(n,t.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,b;var i=a.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,b):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function M(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 A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(M,this),this.reset(!0)}function U(t){if(t||""===t){var r=t[u];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,a=function r(){for(;++n=0;--n){var a=this.tryEntries[n],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),A(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 o=r.completion;if("throw"===o.type){var n=o.arg;A(r)}return n}}throw Error("illegal catch attempt")},delegateYield:function(t,r,o){return this.delegate={iterator:U(t),resultName:r,nextLoc:o},"next"===this.method&&(this.arg=e),b}},r}t.exports=n,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 o=r(24)();t.exports=o;try{regeneratorRuntime=o}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=o:Function("r","regeneratorRuntime = r")(o)}}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var a=e[o]={exports:{}};return t[o](a,a.exports,r),a.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 o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},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 o={};(()=>{"use strict";r.r(o),r.d(o,{components:()=>ot,helpers:()=>at,models:()=>nt});const t=flarum.core.compat["forum/app"];var e=r.n(t);const n=flarum.core.compat["common/Model"];var a=r.n(n);const i=flarum.core.compat["common/models/User"];var c=r.n(i);function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}function u(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,s(t,e)}const f=flarum.core.compat["common/utils/computed"];var l=r.n(f),p=function(t){function e(){for(var e,r=arguments.length,o=new Array(r),n=0;n1?e-1:0),o=1;o{var t={24:(t,e,r)=>{var o=r(735).default;function n(){"use strict";t.exports=n=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},a=Object.prototype,i=a.hasOwnProperty,c=Object.defineProperty||function(t,e,r){t[e]=r.value},s="function"==typeof Symbol?Symbol:{},u=s.iterator||"@@iterator",f=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function m(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{m({},"")}catch(e){m=function(t,e,r){return t[e]=r}}function p(t,e,r,o){var n=e&&e.prototype instanceof _?e:_,a=Object.create(n.prototype),i=new j(o||[]);return c(a,"_invoke",{value:O(t,r,i)}),a}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=p;var h="suspendedStart",y="suspendedYield",v="executing",g="completed",b={};function _(){}function x(){}function w(){}var P={};m(P,u,(function(){return this}));var k=Object.getPrototypeOf,T=k&&k(k(U([])));T&&T!==a&&i.call(T,u)&&(P=T);var S=w.prototype=_.prototype=Object.create(P);function E(t){["next","throw","return"].forEach((function(e){m(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(n,a,c,s){var u=d(t[n],t,a);if("throw"!==u.type){var f=u.arg,l=f.value;return l&&"object"==o(l)&&i.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,c,s)}),(function(t){r("throw",t,c,s)})):e.resolve(l).then((function(t){f.value=t,c(f)}),(function(t){return r("throw",t,c,s)}))}s(u.arg)}var n;c(this,"_invoke",{value:function(t,o){function a(){return new e((function(e,n){r(t,o,e,n)}))}return n=n?n.then(a,a):a()}})}function O(t,r,o){var n=h;return function(a,i){if(n===v)throw Error("Generator is already running");if(n===g){if("throw"===a)throw i;return{value:e,done:!0}}for(o.method=a,o.arg=i;;){var c=o.delegate;if(c){var s=F(c,o);if(s){if(s===b)continue;return s}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(n===h)throw n=g,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);n=v;var u=d(t,r,o);if("normal"===u.type){if(n=o.done?g:y,u.arg===b)continue;return{value:u.arg,done:o.done}}"throw"===u.type&&(n=g,o.method="throw",o.arg=u.arg)}}}function F(t,r){var o=r.method,n=t.iterator[o];if(n===e)return r.delegate=null,"throw"===o&&t.iterator.return&&(r.method="return",r.arg=e,F(t,r),"throw"===r.method)||"return"!==o&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+o+"' method")),b;var a=d(n,t.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,b;var i=a.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,b):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,b)}function M(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 A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(M,this),this.reset(!0)}function U(t){if(t||""===t){var r=t[u];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,a=function r(){for(;++n=0;--n){var a=this.tryEntries[n],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),A(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 o=r.completion;if("throw"===o.type){var n=o.arg;A(r)}return n}}throw Error("illegal catch attempt")},delegateYield:function(t,r,o){return this.delegate={iterator:U(t),resultName:r,nextLoc:o},"next"===this.method&&(this.arg=e),b}},r}t.exports=n,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 o=r(24)();t.exports=o;try{regeneratorRuntime=o}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=o:Function("r","regeneratorRuntime = r")(o)}}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var a=e[o]={exports:{}};return t[o](a,a.exports,r),a.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 o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},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 o={};(()=>{"use strict";r.r(o),r.d(o,{components:()=>ot,helpers:()=>at,models:()=>nt});const t=flarum.core.compat["forum/app"];var e=r.n(t);const n=flarum.core.compat["common/Model"];var a=r.n(n);const i=flarum.core.compat["common/models/User"];var c=r.n(i);function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}function u(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,s(t,e)}const f=flarum.core.compat["common/utils/computed"];var l=r.n(f),p=function(t){function e(){for(var e,r=arguments.length,o=new Array(r),n=0;n1?e-1:0),o=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/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\n\nexport default class Policy extends Model {\n sort = Model.attribute('sort');\n name = Model.attribute('name');\n url = Model.attribute('url');\n update_message = Model.attribute('update_message');\n terms_updated_at = Model.attribute('terms_updated_at');\n optional = Model.attribute('optional');\n additional_info = Model.attribute('additional_info');\n form_key = computed('id', (id) => 'fof_terms_policy_' + id);\n\n apiEndpoint() {\n return '/fof/terms/policies' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","export default function (items, attr = 'sort') {\n return items.sort((a, b) => a[attr]() - b[attr]());\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport sortByAttribute from '../../common/helpers/sortByAttribute';\n\n/* global m, dayjs */\n\nexport default class AcceptPoliciesModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.store.all('fof-terms-policies').forEach((policy) => {\n this[policy.form_key()] = false;\n });\n }\n\n title() {\n return app.translator.trans('fof-terms.forum.accept-modal.title');\n }\n\n className() {\n return 'AcceptPoliciesModal Modal--medium';\n }\n\n content() {\n return m('.Modal-body', this.body());\n }\n\n body() {\n const policies = sortByAttribute(\n app.store.all('fof-terms-policies').filter((policy) => {\n const state = app.session.user.fofTermsPoliciesState()[policy.id()];\n\n return !state || state.has_update;\n })\n );\n\n if (policies.length === 0) {\n return Button.component(\n {\n className: 'Button',\n onclick() {\n app.modal.close();\n },\n },\n app.translator.trans('fof-terms.forum.accept-modal.close')\n );\n }\n\n return policies.map((policy) =>\n m('div', [\n m('h2', policy.name()),\n app.forum.attribute('fof-terms.hide-updated-at')\n ? null\n : m(\n 'p',\n policy.terms_updated_at()\n ? app.translator.trans('fof-terms.forum.accept-modal.updated-at', {\n date: dayjs(policy.terms_updated_at()).format(app.forum.attribute('fof-terms.date-format')),\n })\n : app.translator.trans('fof-terms.forum.accept-modal.updated-recently')\n ),\n policy.update_message() ? m('p', policy.update_message()) : null,\n m(\n '.Form-group',\n m(\n '.FoF-Terms-Check.FoF-Terms-Check--login',\n m('label.checkbox', [\n m('input', {\n type: 'checkbox',\n checked: this[policy.form_key()],\n onchange: () => {\n this[policy.form_key()] = !this[policy.form_key()];\n },\n }),\n app.translator.trans('fof-terms.forum.accept-modal.i-accept', {\n policy: policy.name(),\n a: policy.url()\n ? m('a', {\n href: policy.url(),\n target: '_blank',\n })\n : m('span'),\n }),\n ])\n )\n ),\n Button.component(\n {\n className: 'Button Button--primary',\n disabled: !this[policy.form_key()] && !policy.optional(),\n onclick: () => {\n // We need to save the \"must accept\" property before performing the request\n // Because an updated user serializer will be returned\n const hadToAcceptToInteract = app.session.user.fofTermsPoliciesMustAccept();\n\n app\n .request({\n url: app.forum.attribute('apiUrl') + policy.apiEndpoint() + (this[policy.form_key()] ? '/accept' : '/decline'),\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then((updated) => {\n app.store.pushPayload(updated);\n\n // If this was the last policy to accept, close the modal\n if (policies.length === 1) {\n if (hadToAcceptToInteract) {\n // If the user was previously not allowed to interact with the forum,\n // we refresh to get updated permissions in the frontend\n window.location.reload();\n } else {\n app.modal.close();\n }\n }\n\n m.redraw();\n });\n },\n },\n app.translator.trans('fof-terms.forum.accept-modal.accept')\n ),\n ])\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SignUpModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","import app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport listItems from 'flarum/common/helpers/listItems';\nimport AcceptPoliciesModal from './AcceptPoliciesModal';\n\n/* global m */\n\nlet temporarilyHidden = false;\n\n/**\n * Renders similarly to Flarum's Alert, but with an additional .container inside\n */\nexport default class UpdateAlert {\n shouldShowAlert() {\n if (temporarilyHidden) {\n return false;\n }\n\n const user = app.session.user;\n\n return user && user.fofTermsPoliciesHasUpdate();\n }\n\n view() {\n if (!this.shouldShowAlert()) {\n return m('div');\n }\n\n const controls = [\n Button.component(\n {\n className: 'Button Button--link',\n onclick: () => {\n app.modal.show(AcceptPoliciesModal);\n },\n },\n app.translator.trans('fof-terms.forum.update-alert.review')\n ),\n ];\n\n const dismissControl = [];\n\n if (!app.session.user.fofTermsPoliciesMustAccept()) {\n dismissControl.push(\n Button.component({\n icon: 'fas fa-times',\n className: 'Button Button--link Button--icon Alert-dismiss',\n onclick: () => {\n temporarilyHidden = true;\n },\n })\n );\n }\n\n return m(\n '.Alert.Alert-info',\n m('.container', [\n m(\n 'span.Alert-body',\n app.session.user.fofTermsPoliciesMustAccept()\n ? app.translator.trans('fof-terms.forum.update-alert.must-accept-message')\n : app.translator.trans('fof-terms.forum.update-alert.can-accept-message')\n ),\n m('ul.Alert-controls', listItems(controls.concat(dismissControl))),\n ])\n );\n }\n}\n","import { override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport UpdateAlert from './components/UpdateAlert';\n\n/* global m */\n\n// This single method will be used to inject the alert into existing components\n// If the view is already an array, we add our content at the start\n// If it isn't an array we wrap the content into a new array\nfunction addAlertToContent(original, ...originalArgs) {\n const existing = original(...originalArgs);\n const additional = m(UpdateAlert);\n\n // if the existing content is an array, add to it\n // This should only happen with the hero() override as other extensions might return an array there\n if (Array.isArray(existing)) {\n existing.unshift(additional);\n\n return existing;\n }\n\n // Otherwise return a new list of elements\n // Use a container div otherwise when extending view() this will prevent the config() method from running\n // as the Component class won't be able to bind config() to an array\n // We could also add to vnode.children but this could cause weird styling if another extension or custom styles\n // change the look of the base page content by targeting the original view root element based on its class\n // By using a new outer container we make sure the alert always stays full width and unaffected by the page view under it\n return m('div', [additional, existing]);\n}\n\nexport default function () {\n // There's no single place we can inject the banner\n // So we use a few different points so it's visible on most pages\n override(IndexPage.prototype, 'hero', addAlertToContent);\n override(DiscussionPage.prototype, 'view', addAlertToContent);\n\n // Covers user profile and settings\n override(UserPage.prototype, 'view', addAlertToContent);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import app from 'flarum/forum/app';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport Modal from 'flarum/common/components/Modal';\nimport sortByAttribute from '../../common/helpers/sortByAttribute';\n\n/* global m */\n\nexport default class UserPoliciesStateModal extends Modal {\n title() {\n return app.translator.trans('fof-terms.forum.state-modal.title', {\n username: this.attrs.user.username(),\n });\n }\n\n className() {\n return 'UserPoliciesStateModal Modal--medium';\n }\n\n content() {\n return m(\n '.Modal-body',\n m(\n 'ul',\n sortByAttribute(app.store.all('fof-terms-policies')).map((policy) => {\n const state = this.attrs.user.fofTermsPoliciesState()[policy.id()];\n\n return m('li', [\n policy.name() + ': ',\n state && state.accepted_at\n ? app.translator.trans('fof-terms.forum.state-modal.accepted-at', {\n date: humanTime(state.accepted_at),\n })\n : app.translator.trans('fof-terms.forum.state-modal.not-accepted'),\n ]);\n })\n )\n );\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport Switch from 'flarum/common/components/Switch';\nimport Link from 'flarum/common/components/Link';\n\nasync function updatePolicy(policy, value) {\n const endpoint = `${app.forum.attribute('apiUrl')}${policy.apiEndpoint()}${value ? '/accept' : '/decline'}`;\n const updated = await app.request({\n url: endpoint,\n method: 'POST',\n });\n app.store.pushPayload(updated);\n}\n\nexport default function () {\n extend(SettingsPage.prototype, 'settingsItems', function (items) {\n const policies = app.store.all('fof-terms-policies').filter((policy) => policy.optional());\n\n let policyState = app.session.user.fofTermsPoliciesState();\n\n items.add(\n 'policies',\n
\n {policies.map((policy) => {\n const { is_accepted } = policyState[policy.id()];\n return (\n \n );\n })}\n
,\n -200\n );\n });\n}\n","import AcceptPoliciesModal from './AcceptPoliciesModal';\nimport UpdateAlert from './UpdateAlert';\nimport UserPoliciesStateModal from './UserPoliciesStateModal';\n\nexport const components = {\n AcceptPoliciesModal,\n UpdateAlert,\n UserPoliciesStateModal,\n};\n","import Policy from './Policy';\n\nexport const models = {\n Policy,\n};\n","import sortByAttribute from './sortByAttribute';\n\nexport const helpers = {\n sortByAttribute,\n};\n","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport User from 'flarum/common/models/User';\nimport Policy from '../common/models/Policy';\nimport addAcceptModal from './addAcceptModal';\nimport addFieldsToRegister from './addFieldsToRegister';\nimport addUpdateAlert from './addUpdateAlert';\nimport addUserPoliciesStateControl from './addUserPoliciesStateControl';\nimport addManagePoliciesOption from './components/addManagePoliciesOption';\n\nexport * from './components';\nexport * from '../common/models';\nexport * from '../common/helpers';\n\napp.initializers.add('fof-terms', () => {\n app.store.models['fof-terms-policies'] = Policy;\n\n User.prototype.fofTermsPoliciesState = Model.attribute('fofTermsPoliciesState');\n User.prototype.fofTermsPoliciesHasUpdate = Model.attribute('fofTermsPoliciesHasUpdate');\n User.prototype.fofTermsPoliciesMustAccept = Model.attribute('fofTermsPoliciesMustAccept');\n User.prototype.seeFoFTermsPoliciesState = Model.attribute('seeFoFTermsPoliciesState');\n\n addAcceptModal();\n addFieldsToRegister();\n addUpdateAlert();\n addUserPoliciesStateControl();\n addManagePoliciesOption();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/common/components/IndexPage';\nimport AcceptPoliciesModal from './components/AcceptPoliciesModal';\n\nexport default function () {\n let initialized = false;\n\n extend(Page.prototype, 'oninit', function () {\n if (initialized) {\n return;\n }\n\n // We only show the modal if the first page loaded was the index page\n // And that new updates are available\n // And that the user *must* accept them\n if (app.current.matches(IndexPage)) {\n const user = app.session.user;\n\n if (user && user.fofTermsPoliciesMustAccept()) {\n // Timeout is necessary because there is a redraw error otherwise\n setTimeout(() => {\n app.modal.show(AcceptPoliciesModal);\n }, 0);\n }\n }\n\n initialized = true;\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport SignUpModal from 'flarum/forum/components/SignUpModal';\nimport sortByAttribute from '../common/helpers/sortByAttribute';\n\n/* global m */\n\nexport default function () {\n extend(SignUpModal.prototype, 'oninit', function () {\n this.fofTermsPolicies = sortByAttribute(app.store.all('fof-terms-policies'));\n\n this.fofTermsPolicies.forEach((policy) => {\n this[policy.form_key()] = false;\n });\n });\n\n extend(SignUpModal.prototype, 'fields', function (fields) {\n const legalText = app.forum.attribute('fof-terms.signup-legal-text');\n\n if (legalText) {\n fields.add('fof-terms-legal-text', m('.Form-group', m('.FoF-Terms-SignUp-Legal.Alert', legalText)));\n }\n\n this.fofTermsPolicies.forEach((policy) => {\n fields.add(\n 'fof-terms-policy-' + policy.id(),\n m(\n '.Form-group',\n m(\n '.FoF-Terms-Check.FoF-Terms-Check--signup',\n m('label.checkbox', [\n m('input', {\n type: 'checkbox',\n checked: this[policy.form_key()],\n onchange: () => {\n this[policy.form_key()] = !this[policy.form_key()];\n },\n disabled: this.loading,\n }),\n app.translator.trans('fof-terms.forum.signup.i-accept', {\n policy: policy.name(),\n a: policy.url()\n ? m('a', {\n href: policy.url(),\n target: '_blank',\n })\n : m('span'),\n }),\n ])\n )\n )\n );\n });\n });\n\n extend(SignUpModal.prototype, 'submitData', function (data) {\n this.fofTermsPolicies.forEach((policy) => {\n data[policy.form_key()] = this[policy.form_key()];\n });\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\nimport UserPoliciesStateModal from './components/UserPoliciesStateModal';\n\nexport default function () {\n extend(UserControls, 'moderationControls', (items, user) => {\n if (app.forum.attribute('fof-terms.canSeeUserPoliciesState')) {\n items.add(\n 'fof-terms.state',\n Button.component(\n {\n icon: 'fas fa-paperclip',\n onclick() {\n app.modal.show(UserPoliciesStateModal, { user });\n },\n },\n app.translator.trans('fof-terms.forum.user_controls.state_button')\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","subClass","superClass","Policy","_Model","_this","_len","arguments","args","Array","_key","apply","concat","sort","Model","url","update_message","terms_updated_at","optional","additional_info","form_key","computed","id","apiEndpoint","exists","data","items","attr","b","AcceptPoliciesModal","_Modal","_proto","oninit","vnode","app","all","policy","title","trans","className","content","m","body","_this2","policies","sortByAttribute","filter","state","user","fofTermsPoliciesState","has_update","Button","onclick","close","map","attribute","date","dayjs","format","checked","onchange","href","target","disabled","hadToAcceptToInteract","fofTermsPoliciesMustAccept","errorHandler","onerror","updated","pushPayload","window","location","reload","redraw","Modal","temporarilyHidden","UpdateAlert","shouldShowAlert","fofTermsPoliciesHasUpdate","view","controls","show","dismissControl","icon","listItems","addAlertToContent","original","originalArgs","existing","additional","isArray","unshift","UserPoliciesStateModal","username","attrs","accepted_at","humanTime","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","self","err","updatePolicy","_x","_x2","_updatePolicy","_callee2","endpoint","_context2","components","models","helpers","add","initialized","User","seeFoFTermsPoliciesState","extend","Page","matches","IndexPage","setTimeout","SignUpModal","fofTermsPolicies","fields","legalText","loading","_this3","override","DiscussionPage","UserPage","UserControls","SettingsPage","policyState","FieldSet","label","is_accepted","class","Switch","_ref","_callee","_context","_x3","Link"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@fof/terms/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@fof/terms/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@fof/terms/./node_modules/@babel/runtime/regenerator/index.js","webpack://@fof/terms/webpack/bootstrap","webpack://@fof/terms/webpack/runtime/compat get default export","webpack://@fof/terms/webpack/runtime/define property getters","webpack://@fof/terms/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/terms/webpack/runtime/make namespace object","webpack://@fof/terms/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/terms/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/terms/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/terms/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@fof/terms/./src/common/models/Policy.js","webpack://@fof/terms/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/IndexPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/terms/./src/common/helpers/sortByAttribute.js","webpack://@fof/terms/./src/forum/components/AcceptPoliciesModal.js","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/SignUpModal']\"","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@fof/terms/./src/forum/components/UpdateAlert.js","webpack://@fof/terms/./src/forum/addUpdateAlert.js","webpack://@fof/terms/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@fof/terms/./src/forum/components/UserPoliciesStateModal.js","webpack://@fof/terms/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/FieldSet']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Link']\"","webpack://@fof/terms/./src/forum/components/addManagePoliciesOption.js","webpack://@fof/terms/./src/forum/components/index.js","webpack://@fof/terms/./src/common/models/index.js","webpack://@fof/terms/./src/common/helpers/index.js","webpack://@fof/terms/./src/forum/index.js","webpack://@fof/terms/./src/forum/addAcceptModal.js","webpack://@fof/terms/./src/forum/addFieldsToRegister.js","webpack://@fof/terms/./src/forum/addUserPoliciesStateControl.js"],"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/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\n\nexport default class Policy extends Model {\n sort = Model.attribute('sort');\n name = Model.attribute('name');\n url = Model.attribute('url');\n update_message = Model.attribute('update_message');\n terms_updated_at = Model.attribute('terms_updated_at');\n optional = Model.attribute('optional');\n additional_info = Model.attribute('additional_info');\n form_key = computed('id', (id) => 'fof_terms_policy_' + id);\n\n apiEndpoint() {\n return '/fof/terms/policies' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","export default function (items, attr = 'sort') {\n return items.sort((a, b) => a[attr]() - b[attr]());\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport sortByAttribute from '../../common/helpers/sortByAttribute';\n\n/* global m, dayjs */\n\nexport default class AcceptPoliciesModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.store.all('fof-terms-policies').forEach((policy) => {\n this[policy.form_key()] = false;\n });\n }\n\n title() {\n return app.translator.trans('fof-terms.forum.accept-modal.title');\n }\n\n className() {\n return 'AcceptPoliciesModal Modal--medium';\n }\n\n content() {\n return m('.Modal-body', this.body());\n }\n\n body() {\n const policies = sortByAttribute(\n app.store.all('fof-terms-policies').filter((policy) => {\n const state = app.session.user.fofTermsPoliciesState()[policy.id()];\n\n return !state || state.has_update;\n })\n );\n\n if (policies.length === 0) {\n return Button.component(\n {\n className: 'Button',\n onclick() {\n app.modal.close();\n },\n },\n app.translator.trans('fof-terms.forum.accept-modal.close')\n );\n }\n\n return policies.map((policy) =>\n m('div', [\n m('h2', policy.name()),\n app.forum.attribute('fof-terms.hide-updated-at')\n ? null\n : m(\n 'p',\n policy.terms_updated_at()\n ? app.translator.trans('fof-terms.forum.accept-modal.updated-at', {\n date: dayjs(policy.terms_updated_at()).format(app.forum.attribute('fof-terms.date-format')),\n })\n : app.translator.trans('fof-terms.forum.accept-modal.updated-recently')\n ),\n policy.update_message() ? m('p', policy.update_message()) : null,\n m(\n '.Form-group',\n m(\n '.FoF-Terms-Check.FoF-Terms-Check--login',\n m('label.checkbox', [\n m('input', {\n type: 'checkbox',\n checked: this[policy.form_key()],\n onchange: () => {\n this[policy.form_key()] = !this[policy.form_key()];\n },\n }),\n app.translator.trans('fof-terms.forum.accept-modal.i-accept', {\n policy: policy.name(),\n a: policy.url()\n ? m('a', {\n href: policy.url(),\n target: '_blank',\n })\n : m('span'),\n }),\n ])\n )\n ),\n Button.component(\n {\n className: 'Button Button--primary',\n disabled: !this[policy.form_key()] && !policy.optional(),\n onclick: () => {\n // We need to save the \"must accept\" property before performing the request\n // Because an updated user serializer will be returned\n const hadToAcceptToInteract = app.session.user.fofTermsPoliciesMustAccept();\n\n app\n .request({\n url: app.forum.attribute('apiUrl') + policy.apiEndpoint() + (this[policy.form_key()] ? '/accept' : '/decline'),\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then((updated) => {\n app.store.pushPayload(updated);\n\n // If this was the last policy to accept, close the modal\n if (policies.length === 1) {\n if (hadToAcceptToInteract) {\n // If the user was previously not allowed to interact with the forum,\n // we refresh to get updated permissions in the frontend\n window.location.reload();\n } else {\n app.modal.close();\n }\n }\n\n m.redraw();\n });\n },\n },\n app.translator.trans('fof-terms.forum.accept-modal.accept')\n ),\n ])\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SignUpModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","import app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport listItems from 'flarum/common/helpers/listItems';\nimport AcceptPoliciesModal from './AcceptPoliciesModal';\n\n/* global m */\n\nlet temporarilyHidden = false;\n\n/**\n * Renders similarly to Flarum's Alert, but with an additional .container inside\n */\nexport default class UpdateAlert {\n shouldShowAlert() {\n if (temporarilyHidden) {\n return false;\n }\n\n const user = app.session.user;\n\n return user && user.fofTermsPoliciesHasUpdate();\n }\n\n view() {\n if (!this.shouldShowAlert()) {\n return m('div');\n }\n\n const controls = [\n Button.component(\n {\n className: 'Button Button--link',\n onclick: () => {\n app.modal.show(AcceptPoliciesModal);\n },\n },\n app.translator.trans('fof-terms.forum.update-alert.review')\n ),\n ];\n\n const dismissControl = [];\n\n if (!app.session.user.fofTermsPoliciesMustAccept()) {\n dismissControl.push(\n Button.component({\n icon: 'fas fa-times',\n className: 'Button Button--link Button--icon Alert-dismiss',\n onclick: () => {\n temporarilyHidden = true;\n },\n })\n );\n }\n\n return m(\n '.Alert.Alert-info',\n m('.container', [\n m(\n 'span.Alert-body',\n app.session.user.fofTermsPoliciesMustAccept()\n ? app.translator.trans('fof-terms.forum.update-alert.must-accept-message')\n : app.translator.trans('fof-terms.forum.update-alert.can-accept-message')\n ),\n m('ul.Alert-controls', listItems(controls.concat(dismissControl))),\n ])\n );\n }\n}\n","import { override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport UpdateAlert from './components/UpdateAlert';\n\n/* global m */\n\n// This single method will be used to inject the alert into existing components\n// If the view is already an array, we add our content at the start\n// If it isn't an array we wrap the content into a new array\nfunction addAlertToContent(original, ...originalArgs) {\n const existing = original(...originalArgs);\n const additional = m(UpdateAlert);\n\n // if the existing content is an array, add to it\n // This should only happen with the hero() override as other extensions might return an array there\n if (Array.isArray(existing)) {\n existing.unshift(additional);\n\n return existing;\n }\n\n // Otherwise return a new list of elements\n // Use a container div otherwise when extending view() this will prevent the config() method from running\n // as the Component class won't be able to bind config() to an array\n // We could also add to vnode.children but this could cause weird styling if another extension or custom styles\n // change the look of the base page content by targeting the original view root element based on its class\n // By using a new outer container we make sure the alert always stays full width and unaffected by the page view under it\n return m('div', [additional, existing]);\n}\n\nexport default function () {\n // There's no single place we can inject the banner\n // So we use a few different points so it's visible on most pages\n override(IndexPage.prototype, 'hero', addAlertToContent);\n override(DiscussionPage.prototype, 'view', addAlertToContent);\n\n // Covers user profile and settings\n override(UserPage.prototype, 'view', addAlertToContent);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import app from 'flarum/forum/app';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport Modal from 'flarum/common/components/Modal';\nimport sortByAttribute from '../../common/helpers/sortByAttribute';\n\n/* global m */\n\nexport default class UserPoliciesStateModal extends Modal {\n title() {\n return app.translator.trans('fof-terms.forum.state-modal.title', {\n username: this.attrs.user.username(),\n });\n }\n\n className() {\n return 'UserPoliciesStateModal Modal--medium';\n }\n\n content() {\n return m(\n '.Modal-body',\n m(\n 'ul',\n sortByAttribute(app.store.all('fof-terms-policies')).map((policy) => {\n const state = this.attrs.user.fofTermsPoliciesState()[policy.id()];\n\n return m('li', [\n policy.name() + ': ',\n state && state.accepted_at\n ? app.translator.trans('fof-terms.forum.state-modal.accepted-at', {\n date: humanTime(state.accepted_at),\n })\n : app.translator.trans('fof-terms.forum.state-modal.not-accepted'),\n ]);\n })\n )\n );\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport Switch from 'flarum/common/components/Switch';\nimport Link from 'flarum/common/components/Link';\n\nasync function updatePolicy(policy, value) {\n const endpoint = `${app.forum.attribute('apiUrl')}${policy.apiEndpoint()}${value ? '/accept' : '/decline'}`;\n const updated = await app.request({\n url: endpoint,\n method: 'POST',\n });\n app.store.pushPayload(updated);\n}\n\nexport default function () {\n extend(SettingsPage.prototype, 'settingsItems', function (items) {\n const optionalPolicies = app.store.all('fof-terms-policies').filter((policy) => policy.optional());\n if (!optionalPolicies.length) {\n return;\n }\n\n let policyState = app.session.user.fofTermsPoliciesState();\n\n items.add(\n 'policies',\n
\n {optionalPolicies.map((policy) => {\n const { is_accepted } = policyState[policy.id()];\n return (\n \n );\n })}\n
,\n -200\n );\n });\n}\n","import AcceptPoliciesModal from './AcceptPoliciesModal';\nimport UpdateAlert from './UpdateAlert';\nimport UserPoliciesStateModal from './UserPoliciesStateModal';\n\nexport const components = {\n AcceptPoliciesModal,\n UpdateAlert,\n UserPoliciesStateModal,\n};\n","import Policy from './Policy';\n\nexport const models = {\n Policy,\n};\n","import sortByAttribute from './sortByAttribute';\n\nexport const helpers = {\n sortByAttribute,\n};\n","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport User from 'flarum/common/models/User';\nimport Policy from '../common/models/Policy';\nimport addAcceptModal from './addAcceptModal';\nimport addFieldsToRegister from './addFieldsToRegister';\nimport addUpdateAlert from './addUpdateAlert';\nimport addUserPoliciesStateControl from './addUserPoliciesStateControl';\nimport addManagePoliciesOption from './components/addManagePoliciesOption';\n\nexport * from './components';\nexport * from '../common/models';\nexport * from '../common/helpers';\n\napp.initializers.add('fof-terms', () => {\n app.store.models['fof-terms-policies'] = Policy;\n\n User.prototype.fofTermsPoliciesState = Model.attribute('fofTermsPoliciesState');\n User.prototype.fofTermsPoliciesHasUpdate = Model.attribute('fofTermsPoliciesHasUpdate');\n User.prototype.fofTermsPoliciesMustAccept = Model.attribute('fofTermsPoliciesMustAccept');\n User.prototype.seeFoFTermsPoliciesState = Model.attribute('seeFoFTermsPoliciesState');\n\n addAcceptModal();\n addFieldsToRegister();\n addUpdateAlert();\n addUserPoliciesStateControl();\n addManagePoliciesOption();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/common/components/IndexPage';\nimport AcceptPoliciesModal from './components/AcceptPoliciesModal';\n\nexport default function () {\n let initialized = false;\n\n extend(Page.prototype, 'oninit', function () {\n if (initialized) {\n return;\n }\n\n // We only show the modal if the first page loaded was the index page\n // And that new updates are available\n // And that the user *must* accept them\n if (app.current.matches(IndexPage)) {\n const user = app.session.user;\n\n if (user && user.fofTermsPoliciesMustAccept()) {\n // Timeout is necessary because there is a redraw error otherwise\n setTimeout(() => {\n app.modal.show(AcceptPoliciesModal);\n }, 0);\n }\n }\n\n initialized = true;\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport SignUpModal from 'flarum/forum/components/SignUpModal';\nimport sortByAttribute from '../common/helpers/sortByAttribute';\n\n/* global m */\n\nexport default function () {\n extend(SignUpModal.prototype, 'oninit', function () {\n this.fofTermsPolicies = sortByAttribute(app.store.all('fof-terms-policies'));\n\n this.fofTermsPolicies.forEach((policy) => {\n this[policy.form_key()] = false;\n });\n });\n\n extend(SignUpModal.prototype, 'fields', function (fields) {\n const legalText = app.forum.attribute('fof-terms.signup-legal-text');\n\n if (legalText) {\n fields.add('fof-terms-legal-text', m('.Form-group', m('.FoF-Terms-SignUp-Legal.Alert', legalText)));\n }\n\n this.fofTermsPolicies.forEach((policy) => {\n fields.add(\n 'fof-terms-policy-' + policy.id(),\n m(\n '.Form-group',\n m(\n '.FoF-Terms-Check.FoF-Terms-Check--signup',\n m('label.checkbox', [\n m('input', {\n type: 'checkbox',\n checked: this[policy.form_key()],\n onchange: () => {\n this[policy.form_key()] = !this[policy.form_key()];\n },\n disabled: this.loading,\n }),\n app.translator.trans('fof-terms.forum.signup.i-accept', {\n policy: policy.name(),\n a: policy.url()\n ? m('a', {\n href: policy.url(),\n target: '_blank',\n })\n : m('span'),\n }),\n ])\n )\n )\n );\n });\n });\n\n extend(SignUpModal.prototype, 'submitData', function (data) {\n this.fofTermsPolicies.forEach((policy) => {\n data[policy.form_key()] = this[policy.form_key()];\n });\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\nimport UserPoliciesStateModal from './components/UserPoliciesStateModal';\n\nexport default function () {\n extend(UserControls, 'moderationControls', (items, user) => {\n if (app.forum.attribute('fof-terms.canSeeUserPoliciesState')) {\n items.add(\n 'fof-terms.state',\n Button.component(\n {\n icon: 'fas fa-paperclip',\n onclick() {\n app.modal.show(UserPoliciesStateModal, { user });\n },\n },\n app.translator.trans('fof-terms.forum.user_controls.state_button')\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","subClass","superClass","Policy","_Model","_this","_len","arguments","args","Array","_key","apply","concat","sort","Model","url","update_message","terms_updated_at","optional","additional_info","form_key","computed","id","apiEndpoint","exists","data","items","attr","b","AcceptPoliciesModal","_Modal","_proto","oninit","vnode","app","all","policy","title","trans","className","content","m","body","_this2","policies","sortByAttribute","filter","state","user","fofTermsPoliciesState","has_update","Button","onclick","close","map","attribute","date","dayjs","format","checked","onchange","href","target","disabled","hadToAcceptToInteract","fofTermsPoliciesMustAccept","errorHandler","onerror","updated","pushPayload","window","location","reload","redraw","Modal","temporarilyHidden","UpdateAlert","shouldShowAlert","fofTermsPoliciesHasUpdate","view","controls","show","dismissControl","icon","listItems","addAlertToContent","original","originalArgs","existing","additional","isArray","unshift","UserPoliciesStateModal","username","attrs","accepted_at","humanTime","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","self","err","updatePolicy","_x","_x2","_updatePolicy","_callee2","endpoint","_context2","components","models","helpers","add","initialized","User","seeFoFTermsPoliciesState","extend","Page","matches","IndexPage","setTimeout","SignUpModal","fofTermsPolicies","fields","legalText","loading","_this3","override","DiscussionPage","UserPage","UserControls","SettingsPage","optionalPolicies","policyState","FieldSet","label","is_accepted","class","Switch","_ref","_callee","_context","_x3","Link"],"sourceRoot":""} \ No newline at end of file