diff --git a/extensions/likes/js/dist/forum.js b/extensions/likes/js/dist/forum.js index 05b5a88d0..bcbd98454 100644 --- a/extensions/likes/js/dist/forum.js +++ b/extensions/likes/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e),t.d(e,{extend:()=>nt});const n=flarum.core.compat["common/extend"],r=flarum.core.compat["forum/app"];var i=t.n(r);const o=flarum.core.compat["forum/components/NotificationGrid"];var a=t.n(o);const s=flarum.core.compat["common/components/Button"];var u=t.n(s);const l=flarum.core.compat["forum/components/CommentPost"];var c=t.n(l);const f=flarum.core.compat["common/components/Link"];var p=t.n(f);const d=flarum.core.compat["common/helpers/punctuateSeries"];var h=t.n(d);const g=flarum.core.compat["common/helpers/username"];var v=t.n(g);const b=flarum.core.compat["common/helpers/icon"];var y=t.n(b);function k(t,e){return k=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},k(t,e)}function N(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,k(t,e)}const P=flarum.core.compat["common/components/Modal"];var x=t.n(P);const L=flarum.core.compat["common/helpers/avatar"];var _=t.n(L);function j(){return j=Object.assign?Object.assign.bind():function(t){for(var e=1;ethis.getNextPageNumber()-1?this.pages.push(o):this.pages.unshift(o),this.location={page:r},m.redraw()},e.loadPage=function(t){void 0===t&&(t=1);var e=this.requestParams(),n=Array.isArray(e.include)?e.include.join(","):e.include,r=j({},e,{page:j({},e.page,{offset:this.pageSize*(t-1)}),include:n});return A.store.find(this.type,r)},e.requestParams=function(){return this.params},e.refreshParams=function(t,e){return this.isEmpty()||this.paramsChanged(t)?(this.params=t,this.refresh(e)):Promise.resolve()},e.refresh=function(t){var e=this;return void 0===t&&(t=1),this.initialLoading=!0,this.loadingPrev=!1,this.loadingNext=!1,this.clear(),this.location={page:t},this.loadPage().then((function(t){e.pages=[],e.parseResults(e.location.page,t)})).finally((function(){return e.initialLoading=!1}))},e.getPages=function(){return this.pages},e.getLocation=function(){return this.location},e.isLoading=function(){return this.initialLoading||this.loadingNext||this.loadingPrev},e.isInitialLoading=function(){return this.initialLoading},e.isLoadingPrev=function(){return this.loadingPrev},e.isLoadingNext=function(){return this.loadingNext},e.hasItems=function(){return!!this.getAllItems().length},e.isEmpty=function(){return!this.isInitialLoading()&&!this.hasItems()},e.hasPrev=function(){var t;return!(null==(t=this.pages[0])||!t.hasPrev)},e.hasNext=function(){var t;return!(null==(t=this.pages[this.pages.length-1])||!t.hasNext)},e.getParams=function(){return this.params},e.getNextPageNumber=function(){var t,e=null==(t=this.pages[this.pages.length-1])?void 0:t.number;return e&&!isNaN(e)?e+1:this.location.page},e.getPrevPageNumber=function(){var t,e=null==(t=this.pages[0])?void 0:t.number;return e&&!isNaN(e)?Math.max(e-1,1):this.location.page},e.paramsChanged=function(t){var e=this;return Object.keys(t).some((function(n){return e.getParams()[n]!==t[n]}))},e.getAllItems=function(){return this.getPages().map((function(t){return t.items})).flat()},t}());function I(t,e){if(null==t)return{};var n,r,i={},o=Object.keys(t);for(r=0;r=0||(i[n]=t[n]);return i}var S=function(){function t(){this.element=void 0,this.attrs=void 0,this.state=void 0}var e=t.prototype;return e.oninit=function(t){this.setAttrs(t.attrs)},e.oncreate=function(t){this.element=t.dom},e.onbeforeupdate=function(t){this.setAttrs(t.attrs)},e.onupdate=function(t){},e.onbeforeremove=function(t){},e.onremove=function(t){},e.$=function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){var e=$(this.element);return t?e.find(t):e})),t.component=function(t,e){void 0===t&&(t={}),void 0===e&&(e=null);var n=j({},t);return m(this,n,e)},e.setAttrs=function(t){if(void 0===t&&(t={}),this.constructor.initAttrs(t),t){if("children"in t)throw new Error("["+this.constructor.name+'] The "children" attribute of attrs should never be used. Either pass children in as the vnode children or rename the attribute');if("tag"in t)throw new Error("["+this.constructor.name+'] You cannot use the "tag" attribute name with Mithril 2.')}this.attrs=t},t.initAttrs=function(t){},t}();function M(t){var e,n,r="";if("string"==typeof t||"number"==typeof t)r+=t;else if("object"==typeof t)if(Array.isArray(t))for(e=0;e4,o=n.sort((function(t){return t===i().session.user?-1:1})).slice(0,r?3:4).map((function(t){return m(p(),{href:i().route.user(t)},t===i().session.user?i().translator.trans("flarum-likes.forum.post.you_text"):v()(t))}));if(r){var a=e.likesCount()-o.length,s=i().translator.trans("flarum-likes.forum.post.others_link",{count:a});i().forum.attribute("canSearchUsers")?o.push(m(F,{className:"Button Button--ua-reset Button--text",onclick:function(t){t.preventDefault(),i().modal.show(U,{post:e})}},s)):o.push(m("span",null,s))}t.add("liked",m("div",{className:"Post-likedBy"},y()("far fa-thumbs-up"),i().translator.trans("flarum-likes.forum.post.liked_by"+(n[0]===i().session.user?"_self":"")+"_text",{count:o.length,users:h()(o)})))}})),(0,n.extend)(Y().prototype,"navItems",(function(t){var e=this.user;t.add("likes",m(K(),{href:i().route("user.likes",{username:null==e?void 0:e.slug()}),icon:"far fa-thumbs-up"},i().translator.trans("flarum-likes.forum.user.likes_link")),88)})),(0,n.extend)(a().prototype,"notificationTypes",(function(t){t.add("postLiked",{name:"postLiked",icon:"far fa-thumbs-up",label:i().translator.trans("flarum-likes.forum.settings.notify_post_liked_label")})}))}))})(),module.exports=e})(); +(()=>{var t={n:o=>{var e=o&&o.__esModule?()=>o.default:()=>o;return t.d(e,{a:e}),e},d:(o,e)=>{for(var n in e)t.o(e,n)&&!t.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:e[n]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};(()=>{"use strict";t.r(o),t.d(o,{extend:()=>Q});const e=flarum.core.compat["common/extend"],n=flarum.core.compat["forum/app"];var r=t.n(n);const s=flarum.core.compat["forum/components/NotificationGrid"];var a=t.n(s);const i=flarum.core.compat["common/components/Button"];var u=t.n(i);const c=flarum.core.compat["forum/components/CommentPost"];var l=t.n(c);const f=flarum.core.compat["common/components/Link"];var p=t.n(f);const d=flarum.core.compat["common/helpers/punctuateSeries"];var k=t.n(d);const h=flarum.core.compat["common/helpers/username"];var v=t.n(h);const y=flarum.core.compat["common/helpers/icon"];var b=t.n(y);function g(t,o){return g=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,o){return t.__proto__=o,t},g(t,o)}function _(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,g(t,o)}const P=flarum.core.compat["common/components/Modal"];var x=t.n(P);const O=flarum.core.compat["common/helpers/avatar"];var L=t.n(O);function N(){return N=Object.assign?Object.assign.bind():function(t){for(var o=1;o4,s=e.sort((function(t){return t===r().session.user?-1:1})).slice(0,n?3:4).map((function(t){return m(p(),{href:r().route.user(t)},t===r().session.user?r().translator.trans("flarum-likes.forum.post.you_text"):v()(t))}));if(n){var a=o.likesCount()-s.length,i=r().translator.trans("flarum-likes.forum.post.others_link",{count:a});r().forum.attribute("canSearchUsers")?s.push(m(u(),{className:"Button Button--ua-reset Button--text",onclick:function(t){t.preventDefault(),r().modal.show(C,{post:o})}},i)):s.push(m("span",null,i))}t.add("liked",m("div",{className:"Post-likedBy"},b()("far fa-thumbs-up"),r().translator.trans("flarum-likes.forum.post.liked_by"+(e[0]===r().session.user?"_self":"")+"_text",{count:s.length,users:k()(s)})))}})),(0,e.extend)(z().prototype,"navItems",(function(t){var o=this.user;t.add("likes",m(D(),{href:r().route("user.likes",{username:null==o?void 0:o.slug()}),icon:"far fa-thumbs-up"},r().translator.trans("flarum-likes.forum.user.likes_link")),88)})),(0,e.extend)(a().prototype,"notificationTypes",(function(t){t.add("postLiked",{name:"postLiked",icon:"far fa-thumbs-up",label:r().translator.trans("flarum-likes.forum.settings.notify_post_liked_label")})}))}))})(),module.exports=o})(); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/extensions/likes/js/dist/forum.js.map b/extensions/likes/js/dist/forum.js.map index dc47b1de2..c78606f65 100644 --- a/extensions/likes/js/dist/forum.js.map +++ b/extensions/likes/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/likes/webpack/bootstrap","webpack://@flarum/likes/webpack/runtime/compat get default export","webpack://@flarum/likes/webpack/runtime/define property getters","webpack://@flarum/likes/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/likes/webpack/runtime/make namespace object","webpack://@flarum/likes/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/likes/../../../framework/core/js/src/common/app.ts","webpack://@flarum/likes/../../../framework/core/js/src/common/states/PaginatedListState.ts","webpack://@flarum/likes/./src/forum/states/PostLikesModalState.ts","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/likes/../../../framework/core/js/src/common/Component.ts","webpack://@flarum/likes/../../../node_modules/clsx/dist/clsx.m.js","webpack://@flarum/likes/../../../framework/core/js/src/common/utils/classList.ts","webpack://@flarum/likes/../../../framework/core/js/src/common/utils/extractText.ts","webpack://@flarum/likes/../../../framework/core/js/src/common/components/LoadingIndicator.tsx","webpack://@flarum/likes/../../../framework/core/js/src/common/components/Button.tsx","webpack://@flarum/likes/../../../framework/core/js/src/common/helpers/fireDebugWarning.ts","webpack://@flarum/likes/../../../framework/core/js/src/common/helpers/icon.tsx","webpack://@flarum/likes/./src/forum/components/PostLikesModal.tsx","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/likes/./src/forum/components/PostLikedNotification.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/likes/./src/forum/components/LikesUserPage.tsx","webpack://@flarum/likes/./src/forum/extend.ts","webpack://@flarum/likes/./src/forum/index.js","webpack://@flarum/likes/./src/forum/addLikeAction.js","webpack://@flarum/likes/./src/forum/addLikesList.js","webpack://@flarum/likes/./src/forum/addLikesTabToUserProfile.tsx"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import type Application from './Application';\n\n// Used to fix typings\nconst w = window as any;\n\n/**\n * Proxy app. Common JS is run first, at which point `window.app` is not\n * set as this is done by the namespaced JS.\n *\n * When the corrent value is set, this code would retain the reference to\n * the original invalid value.\n *\n * By using a proxy, we can ensure that our `window.app` value is always\n * up-to-date with the latest reference.\n */\nconst appProxy = new Proxy(\n {},\n {\n get(_, properties) {\n return Reflect.get(w.app, properties, w.app);\n },\n set(_, properties, value) {\n return Reflect.set(w.app, properties, value, w.app);\n },\n }\n);\n\n/**\n * The instance of Application within the common namespace.\n */\nexport default appProxy as Application;\n","import app from '../../common/app';\nimport Model from '../Model';\nimport { ApiQueryParamsPlural, ApiResponsePlural } from '../Store';\n\nexport interface Page {\n number: number;\n items: TModel[];\n\n hasPrev?: boolean;\n hasNext?: boolean;\n}\n\nexport interface PaginationLocation {\n page: number;\n startIndex?: number;\n endIndex?: number;\n}\n\nexport interface PaginatedListParams {\n [key: string]: any;\n}\n\nexport interface PaginatedListRequestParams extends Omit {\n include?: string | string[];\n}\n\nexport default abstract class PaginatedListState {\n protected location!: PaginationLocation;\n protected pageSize: number;\n\n protected pages: Page[] = [];\n protected params: P = {} as P;\n\n protected initialLoading: boolean = false;\n protected loadingPrev: boolean = false;\n protected loadingNext: boolean = false;\n\n protected constructor(params: P = {} as P, page: number = 1, pageSize: number = 20) {\n this.params = params;\n\n this.location = { page };\n this.pageSize = pageSize;\n }\n\n abstract get type(): string;\n\n public clear(): void {\n this.pages = [];\n\n m.redraw();\n }\n\n public loadPrev(): Promise {\n if (this.loadingPrev || this.getLocation().page === 1) return Promise.resolve();\n\n this.loadingPrev = true;\n\n const page: number = this.getPrevPageNumber();\n\n return this.loadPage(page)\n .then(this.parseResults.bind(this, page))\n .finally(() => (this.loadingPrev = false));\n }\n\n public loadNext(): Promise {\n if (this.loadingNext) return Promise.resolve();\n\n this.loadingNext = true;\n\n const page: number = this.getNextPageNumber();\n\n return this.loadPage(page)\n .then(this.parseResults.bind(this, page))\n .finally(() => (this.loadingNext = false));\n }\n\n protected parseResults(pg: number, results: ApiResponsePlural): void {\n const pageNum = Number(pg);\n\n const links = results.payload?.links;\n const page = {\n number: pageNum,\n items: results,\n hasNext: !!links?.next,\n hasPrev: !!links?.prev,\n };\n\n if (this.isEmpty() || pageNum > this.getNextPageNumber() - 1) {\n this.pages.push(page);\n } else {\n this.pages.unshift(page);\n }\n\n this.location = { page: pageNum };\n\n m.redraw();\n }\n\n /**\n * Load a new page of results.\n */\n protected loadPage(page = 1): Promise> {\n const reqParams = this.requestParams();\n\n const include = Array.isArray(reqParams.include) ? reqParams.include.join(',') : reqParams.include;\n\n const params: ApiQueryParamsPlural = {\n ...reqParams,\n page: {\n ...reqParams.page,\n offset: this.pageSize * (page - 1),\n },\n include,\n };\n\n return app.store.find(this.type, params);\n }\n\n /**\n * Get the parameters that should be passed in the API request.\n * Do not include page offset unless subclass overrides loadPage.\n *\n * @abstract\n * @see loadPage\n */\n protected requestParams(): PaginatedListRequestParams {\n return this.params;\n }\n\n /**\n * Update the `this.params` object, calling `refresh` if they have changed.\n * Use `requestParams` for converting `this.params` into API parameters\n *\n * @param newParams\n * @param page\n * @see requestParams\n */\n public refreshParams(newParams: P, page: number): Promise {\n if (this.isEmpty() || this.paramsChanged(newParams)) {\n this.params = newParams;\n\n return this.refresh(page);\n }\n\n return Promise.resolve();\n }\n\n public refresh(page: number = 1): Promise {\n this.initialLoading = true;\n this.loadingPrev = false;\n this.loadingNext = false;\n\n this.clear();\n\n this.location = { page };\n\n return this.loadPage()\n .then((results) => {\n this.pages = [];\n this.parseResults(this.location.page, results);\n })\n .finally(() => (this.initialLoading = false));\n }\n\n public getPages(): Page[] {\n return this.pages;\n }\n public getLocation(): PaginationLocation {\n return this.location;\n }\n\n public isLoading(): boolean {\n return this.initialLoading || this.loadingNext || this.loadingPrev;\n }\n public isInitialLoading(): boolean {\n return this.initialLoading;\n }\n public isLoadingPrev(): boolean {\n return this.loadingPrev;\n }\n public isLoadingNext(): boolean {\n return this.loadingNext;\n }\n\n /**\n * Returns true when the number of items across all loaded pages is not 0.\n *\n * @see isEmpty\n */\n public hasItems(): boolean {\n return !!this.getAllItems().length;\n }\n\n /**\n * Returns true when there aren't any items *and* the state has already done its initial loading.\n * If you want to know whether there are items regardless of load state, use `hasItems()` instead\n *\n * @see hasItems\n */\n public isEmpty(): boolean {\n return !this.isInitialLoading() && !this.hasItems();\n }\n\n public hasPrev(): boolean {\n return !!this.pages[0]?.hasPrev;\n }\n public hasNext(): boolean {\n return !!this.pages[this.pages.length - 1]?.hasNext;\n }\n\n /**\n * Stored state parameters.\n */\n public getParams(): P {\n return this.params;\n }\n\n protected getNextPageNumber(): number {\n const pg = this.pages[this.pages.length - 1]?.number;\n\n if (pg && !isNaN(pg)) {\n return pg + 1;\n } else {\n return this.location.page;\n }\n }\n protected getPrevPageNumber(): number {\n const pg = this.pages[0]?.number;\n\n if (pg && !isNaN(pg)) {\n // If the calculated page number is less than 1,\n // return 1 as the prev page (first possible page number)\n return Math.max(pg - 1, 1);\n } else {\n return this.location.page;\n }\n }\n\n protected paramsChanged(newParams: P): boolean {\n return Object.keys(newParams).some((key) => this.getParams()[key] !== newParams[key]);\n }\n\n protected getAllItems(): T[] {\n return this.getPages()\n .map((pg) => pg.items)\n .flat();\n }\n}\n","import PaginatedListState, { PaginatedListParams } from '@flarum/core/src/common/states/PaginatedListState';\nimport User from 'flarum/common/models/User';\n\nexport interface PostLikesModalListParams extends PaginatedListParams {\n filter: {\n liked: string;\n };\n page?: {\n offset?: number;\n limit: number;\n };\n}\n\nexport default class PostLikesModalState

extends PaginatedListState {\n constructor(params: P, page: number = 1) {\n const limit = 10;\n\n params.page = { ...(params.page || {}), limit };\n\n super(params, page, limit);\n }\n\n get type(): string {\n return 'users';\n }\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import type Mithril from 'mithril';\n\nexport interface ComponentAttrs extends Mithril.Attributes {}\n\n/**\n * The `Component` class defines a user interface 'building block'. A component\n * generates a virtual DOM to be rendered on each redraw.\n *\n * Essentially, this is a wrapper for Mithril's components that adds several useful features:\n *\n * - In the `oninit` and `onbeforeupdate` lifecycle hooks, we store vnode attrs in `this.attrs.\n * This allows us to use attrs across components without having to pass the vnode to every single\n * method.\n * - The static `initAttrs` method allows a convenient way to provide defaults (or to otherwise modify)\n * the attrs that have been passed into a component.\n * - When the component is created in the DOM, we store its DOM element under `this.element`; this lets\n * us use jQuery to modify child DOM state from internal methods via the `this.$()` method.\n * - A convenience `component` method, which serves as an alternative to hyperscript and JSX.\n *\n * As with other Mithril components, components extending Component can be initialized\n * and nested using JSX, hyperscript, or a combination of both. The `component` method can also\n * be used.\n *\n * @example\n * return m('div',

Hello World

);\n *\n * @example\n * return m('div', MyComponent.component({foo: 'bar'), m('p', 'Hello World!'));\n *\n * @see https://mithril.js.org/components.html\n */\nexport default abstract class Component implements Mithril.ClassComponent {\n /**\n * The root DOM element for the component.\n */\n element!: Element;\n\n /**\n * The attributes passed into the component.\n *\n * @see https://mithril.js.org/components.html#passing-data-to-components\n */\n attrs!: Attrs;\n\n /**\n * Class component state that is persisted between redraws.\n *\n * Updating this will **not** automatically trigger a redraw, unlike\n * other frameworks.\n *\n * This is different to Vnode state, which is always an instance of your\n * class component.\n *\n * This is `undefined` by default.\n */\n state!: State;\n\n /**\n * @inheritdoc\n */\n abstract view(vnode: Mithril.Vnode): Mithril.Children;\n\n /**\n * @inheritdoc\n */\n oninit(vnode: Mithril.Vnode) {\n this.setAttrs(vnode.attrs);\n }\n\n /**\n * @inheritdoc\n */\n oncreate(vnode: Mithril.VnodeDOM) {\n this.element = vnode.dom;\n }\n\n /**\n * @inheritdoc\n */\n onbeforeupdate(vnode: Mithril.VnodeDOM) {\n this.setAttrs(vnode.attrs);\n }\n\n /**\n * @inheritdoc\n */\n onupdate(vnode: Mithril.VnodeDOM) {}\n\n /**\n * @inheritdoc\n */\n onbeforeremove(vnode: Mithril.VnodeDOM) {}\n\n /**\n * @inheritdoc\n */\n onremove(vnode: Mithril.VnodeDOM) {}\n\n /**\n * Returns a jQuery object for this component's element. If you pass in a\n * selector string, this method will return a jQuery object, using the current\n * element as its buffer.\n *\n * For example, calling `component.$('li')` will return a jQuery object\n * containing all of the `li` elements inside the DOM element of this\n * component.\n *\n * @param [selector] a jQuery-compatible selector string\n * @returns the jQuery object for the DOM node\n * @final\n */\n $(selector?: string): JQuery {\n const $element = $(this.element) as JQuery;\n\n return selector ? $element.find(selector) : $element;\n }\n\n /**\n * Convenience method to attach a component without JSX.\n * Has the same effect as calling `m(THIS_CLASS, attrs, children)`.\n *\n * @see https://mithril.js.org/hyperscript.html#mselector,-attributes,-children\n */\n static component(attrs: SAttrs = {} as SAttrs, children: Mithril.Children = null): Mithril.Vnode {\n const componentAttrs = { ...attrs };\n\n return m(this as any, componentAttrs, children);\n }\n\n /**\n * Saves a reference to the vnode attrs after running them through initAttrs,\n * and checking for common issues.\n */\n private setAttrs(attrs: Attrs = {} as Attrs): void {\n (this.constructor as typeof Component).initAttrs(attrs);\n\n if (attrs) {\n if ('children' in attrs) {\n throw new Error(\n `[${\n (this.constructor as typeof Component).name\n }] The \"children\" attribute of attrs should never be used. Either pass children in as the vnode children or rename the attribute`\n );\n }\n\n if ('tag' in attrs) {\n throw new Error(`[${(this.constructor as typeof Component).name}] You cannot use the \"tag\" attribute name with Mithril 2.`);\n }\n }\n\n this.attrs = attrs;\n }\n\n /**\n * Initialize the component's attrs.\n *\n * This can be used to assign default values for missing, optional attrs.\n */\n static initAttrs(attrs: unknown): void {}\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t extractText(element)).join('');\n } else if (typeof vdom === 'object' && vdom !== null) {\n return vdom.children ? extractText(vdom.children) : String(vdom.text);\n } else {\n return String(vdom);\n }\n}\n","import app from '../../common/app';\nimport Component, { ComponentAttrs } from '../Component';\nimport classList from '../utils/classList';\n\nexport interface LoadingIndicatorAttrs extends ComponentAttrs {\n /**\n * Custom classes for the loading indicator's container.\n */\n className?: string;\n /**\n * Custom classes for the loading indicator's container.\n */\n containerClassName?: string;\n /**\n * Optional size for the loading indicator.\n */\n size?: 'large' | 'medium' | 'small';\n /**\n * Optional attributes to apply to the loading indicator's container.\n */\n containerAttrs?: Partial;\n /**\n * Display type of the spinner.\n *\n * @default 'block'\n */\n display?: 'block' | 'inline' | 'unset';\n}\n\n/**\n * The `LoadingIndicator` component displays a simple CSS-based loading spinner.\n *\n * To set a custom color, use the CSS `color` property.\n *\n * To increase spacing around the spinner, use the CSS `height` property on the\n * spinner's **container**. Setting the `display` attribute to `block` will set\n * a height of `100px` by default.\n *\n * To apply a custom size to the loading indicator, set the `--size` and\n * `--thickness` CSS custom properties on the loading indicator container.\n *\n * If you *really* want to change how this looks as part of your custom theme,\n * you can override the `border-radius` and `border` then set either a\n * background image, or use `content: \"\\\"` (e.g. `content: \"\\f1ce\"`)\n * and `font-family: 'Font Awesome 5 Free'` to set an FA icon if you'd rather.\n *\n * ### Attrs\n *\n * - `containerClassName` Class name(s) to apply to the indicator's parent\n * - `className` Class name(s) to apply to the indicator itself\n * - `display` Determines how the spinner should be displayed (`inline`, `block` (default) or `unset`)\n * - `size` Size of the loading indicator (`small`, `medium` or `large`)\n * - `containerAttrs` Optional attrs to be applied to the container DOM element\n *\n * All other attrs will be assigned as attributes on the DOM element.\n */\nexport default class LoadingIndicator extends Component {\n view() {\n const { display = 'block', size = 'medium', containerClassName, className, ...attrs } = this.attrs;\n\n const completeClassName = classList('LoadingIndicator', className);\n const completeContainerClassName = classList(\n 'LoadingIndicator-container',\n display !== 'unset' && `LoadingIndicator-container--${display}`,\n size && `LoadingIndicator-container--${size}`,\n containerClassName\n );\n\n return (\n \n
\n
\n );\n }\n}\n","import type Mithril from 'mithril';\nimport Component, { ComponentAttrs } from '../Component';\nimport fireDebugWarning from '../helpers/fireDebugWarning';\nimport icon from '../helpers/icon';\nimport classList from '../utils/classList';\nimport extractText from '../utils/extractText';\nimport LoadingIndicator from './LoadingIndicator';\n\nexport interface IButtonAttrs extends ComponentAttrs {\n /**\n * Class(es) of an optional icon to be rendered within the button.\n *\n * If provided, the button will gain a `has-icon` class.\n */\n icon?: string;\n /**\n * Disables button from user input.\n *\n * Default: `false`\n */\n disabled?: boolean;\n /**\n * Show a loading spinner within the button.\n *\n * If `true`, also disables the button.\n *\n * Default: `false`\n */\n loading?: boolean;\n /**\n * **DEPRECATED:** Please use the `aria-label` attribute instead. For tooltips, use\n * the `` component.\n *\n * Accessible text for the button. This should always be present if the button only\n * contains an icon.\n *\n * The textual content of this attribute is passed to the DOM element as `aria-label`.\n *\n * @deprecated\n */\n title?: string | Mithril.ChildArray;\n /**\n * Accessible text for the button. This should always be present if the button only\n * contains an icon.\n *\n * The textual content of this attribute is passed to the DOM element as `aria-label`.\n */\n 'aria-label'?: string | Mithril.ChildArray;\n /**\n * Button type.\n *\n * Default: `\"button\"`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type\n */\n type?: string;\n}\n\n/**\n * The `Button` component defines an element which, when clicked, performs an\n * action.\n *\n * Other attrs will be assigned as attributes on the `;\n }\n\n oncreate(vnode: Mithril.VnodeDOM) {\n super.oncreate(vnode);\n\n const { 'aria-label': ariaLabel } = this.attrs;\n\n if (this.view === Button.prototype.view && !ariaLabel && !extractText(vnode.children) && !this.element?.getAttribute?.('aria-label')) {\n fireDebugWarning(\n '[Flarum Accessibility Warning] Button has no content and no accessible label. This means that screen-readers will not be able to interpret its meaning and just read \"Button\". Consider providing accessible text via the `aria-label` attribute. https://web.dev/button-name',\n this.element\n );\n }\n }\n\n /**\n * Get the template for the button's content.\n */\n protected getButtonContent(children: Mithril.Children): Mithril.ChildArray {\n const iconName = this.attrs.icon;\n\n return [\n iconName && icon(iconName, { className: 'Button-icon' }),\n children && {children},\n this.attrs.loading && ,\n ];\n }\n}\n","import app from '../app';\n\n/**\n * Calls `console.warn` with the provided arguments, but only if the forum is in debug mode.\n *\n * This function is intended to provide warnings to extension developers about issues with\n * their extensions that may not be easily noticed when testing, such as accessibility\n * issues.\n *\n * These warnings should be hidden on production forums to ensure webmasters are not\n * inundated with do-gooders telling them they have an issue when it isn't something they\n * can fix.\n */\nexport default function fireDebugWarning(...args: Parameters): void {\n if (!app.forum.attribute('debug')) return;\n\n console.warn(...args);\n}\n\n/**\n * Fire a Flarum deprecation warning which is shown in the JS console.\n *\n * These warnings are only shown when the forum is in debug mode, and the function exists to\n * reduce bundle size caused by multiple warnings across our JavaScript.\n *\n * @param message The message to display. (Short, but sweet, please!)\n * @param githubId The PR or Issue ID with more info in relation to this change.\n * @param [removedFrom] The version in which this feature will be completely removed. (default: 2.0)\n * @param [repo] The repo which the issue or PR is located in. (default: flarum/core)\n *\n * @see {@link fireDebugWarning}\n */\nexport function fireDeprecationWarning(message: string, githubId: string, removedFrom: string = '2.0', repo: string = 'flarum/core'): void {\n // GitHub auto-redirects between `/pull` and `/issues` for us, so using `/pull` saves 2 bytes!\n fireDebugWarning(`[Flarum ${removedFrom} Deprecation] ${message}\\n\\nSee: https://github.com/${repo}/pull/${githubId}`);\n}\n","import type Mithril from 'mithril';\nimport classList from '../utils/classList';\n\n/**\n * The `icon` helper displays an icon.\n *\n * @param fontClass The full icon class, prefix and the icon’s name.\n * @param attrs Any other attributes to apply.\n */\nexport default function icon(fontClass: string, attrs: Mithril.Attributes = {}): Mithril.Vnode {\n attrs.className = classList('icon', fontClass, attrs.className);\n\n return ;\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Link from 'flarum/common/components/Link';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\nimport PostLikesModalState from '../states/PostLikesModalState';\nimport Button from '@flarum/core/src/common/components/Button';\nimport LoadingIndicator from '@flarum/core/src/common/components/LoadingIndicator';\n\nexport interface IPostLikesModalAttrs extends IInternalModalAttrs {\n post: Post;\n}\n\nexport default class PostLikesModal extends Modal {\n oninit(vnode: Mithril.VnodeDOM) {\n super.oninit(vnode);\n\n this.state = new PostLikesModalState({\n filter: {\n liked: this.attrs.post.id()!,\n },\n });\n\n this.state.refresh();\n }\n\n className() {\n return 'PostLikesModal Modal--small';\n }\n\n title() {\n return app.translator.trans('flarum-likes.forum.post_likes.title');\n }\n\n content() {\n return (\n <>\n
\n {this.state.isInitialLoading() ? (\n \n ) : (\n
    \n {this.state.getPages().map((page) =>\n page.items.map((user) => (\n
  • \n \n {avatar(user)} {username(user)}\n \n
  • \n ))\n )}\n
\n )}\n
\n {this.state.hasNext() ? (\n
\n
\n
\n \n
\n
\n
\n ) : null}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostLikedNotification extends Notification {\n icon() {\n return 'far fa-thumbs-up';\n }\n\n href() {\n return app.route.post(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-likes.forum.notifications.post_liked_text', { user, count: 1 });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `LikesUserPage` component shows posts which user the user liked.\n */\nexport default class LikesUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param offset The position to start getting results from.\n * @protected\n */\n loadResults(offset: number) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n likedBy: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport LikesUserPage from './components/LikesUserPage';\n\nexport default [\n new Extend.Routes() //\n .add('user.likes', '/u/:username/likes', LikesUserPage),\n\n new Extend.Model(Post) //\n .hasMany('likes')\n .attribute('likesCount')\n .attribute('canLike'),\n];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addLikeAction from './addLikeAction';\nimport addLikesList from './addLikesList';\nimport PostLikedNotification from './components/PostLikedNotification';\nimport addLikesTabToUserProfile from './addLikesTabToUserProfile';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-likes', () => {\n app.notificationComponents.postLiked = PostLikedNotification;\n\n addLikeAction();\n addLikesList();\n addLikesTabToUserProfile();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postLiked', {\n name: 'postLiked',\n icon: 'far fa-thumbs-up',\n label: app.translator.trans('flarum-likes.forum.settings.notify_post_liked_label'),\n });\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || !post.canLike()) return;\n\n const likes = post.likes();\n\n let isLiked = app.session.user && likes && likes.some((user) => user === app.session.user);\n\n items.add(\n 'like',\n {\n isLiked = !isLiked;\n\n post.save({ isLiked });\n\n // We've saved the fact that we do or don't like the post, but in order\n // to provide instantaneous feedback to the user, we'll need to add or\n // remove the like from the relationship data manually.\n const data = post.data.relationships.likes.data;\n data.some((like, i) => {\n if (like.id === app.session.user.id()) {\n data.splice(i, 1);\n return true;\n }\n });\n\n if (isLiked) {\n data.unshift({ type: 'users', id: app.session.user.id() });\n }\n }}\n >\n {app.translator.trans(isLiked ? 'flarum-likes.forum.post.unlike_link' : 'flarum-likes.forum.post.like_link')}\n \n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\n\nimport PostLikesModal from './components/PostLikesModal';\nimport Button from '@flarum/core/src/common/components/Button';\n\nexport default function () {\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const likes = post.likes();\n\n if (likes && likes.length) {\n const limit = 4;\n const overLimit = post.likesCount() > limit;\n\n // Construct a list of names of users who have liked this post. Make sure the\n // current user is first in the list, and cap a maximum of 4 items.\n const names = likes\n .sort((a) => (a === app.session.user ? -1 : 1))\n .slice(0, overLimit ? limit - 1 : limit)\n .map((user) => {\n return (\n \n {user === app.session.user ? app.translator.trans('flarum-likes.forum.post.you_text') : username(user)}\n \n );\n });\n\n // If there are more users that we've run out of room to display, add a \"x\n // others\" name to the end of the list. Clicking on it will display a modal\n // with a full list of names.\n if (overLimit) {\n const count = post.likesCount() - names.length;\n const label = app.translator.trans('flarum-likes.forum.post.others_link', { count });\n\n if (app.forum.attribute('canSearchUsers')) {\n names.push(\n {\n e.preventDefault();\n app.modal.show(PostLikesModal, { post });\n }}\n >\n {label}\n \n );\n } else {\n names.push({label});\n }\n }\n\n items.add(\n 'liked',\n
\n {icon('far fa-thumbs-up')}\n {app.translator.trans(`flarum-likes.forum.post.liked_by${likes[0] === app.session.user ? '_self' : ''}_text`, {\n count: names.length,\n users: punctuateSeries(names),\n })}\n
\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addLikesTabToUserProfile() {\n extend(UserPage.prototype, 'navItems', function (items: ItemList) {\n const user = this.user;\n items.add(\n 'likes',\n \n {app.translator.trans('flarum-likes.forum.user.likes_link')}\n ,\n 88\n );\n });\n}\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","_extends","assign","target","i","arguments","length","source","apply","this","_defineProperties","props","descriptor","configurable","writable","w","window","Proxy","_","properties","Reflect","app","set","PostLikesModalState","params","page","limit","Constructor","protoProps","pageSize","location","pages","initialLoading","loadingPrev","loadingNext","clear","m","redraw","loadPrev","getLocation","Promise","resolve","getPrevPageNumber","loadPage","then","parseResults","loadNext","getNextPageNumber","pg","results","pageNum","Number","links","payload","number","items","hasNext","next","hasPrev","prev","isEmpty","push","unshift","reqParams","requestParams","include","Array","isArray","join","offset","store","find","type","refreshParams","newParams","paramsChanged","refresh","getPages","isLoading","isInitialLoading","isLoadingPrev","isLoadingNext","hasItems","getAllItems","getParams","isNaN","Math","max","keys","some","map","flat","_objectWithoutPropertiesLoose","excluded","sourceKeys","indexOf","Component","element","attrs","state","oninit","vnode","setAttrs","oncreate","dom","onbeforeupdate","onupdate","onbeforeremove","onremove","$","selector","$element","component","children","componentAttrs","initAttrs","Error","name","r","e","t","f","n","extractText","vdom","String","text","LoadingIndicator","view","display","size","containerClassName","className","completeClassName","classList","completeContainerClassName","translator","trans","role","containerAttrs","Button","title","ariaLabel","iconName","icon","disabled","loading","_class","onclick","buttonAttrs","hasIcon","getButtonContent","getAttribute","forum","attribute","console","warn","fireDebugWarning","fontClass","PostLikesModal","filter","liked","post","id","content","user","href","avatar","username","Modal","PostLikedNotification","notification","subject","fromUser","count","excerpt","truncate","contentPlain","Notification","LikesUserPage","loadResults","likedBy","loadLimit","sort","PostsUserPage","Extend","add","Post","hasMany","extend","CommentPost","isHidden","canLike","likes","isLiked","save","data","relationships","like","splice","overLimit","likesCount","names","slice","label","preventDefault","users","punctuateSeries","UserPage","slug","NotificationGrid"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@flarum/likes/webpack/bootstrap","webpack://@flarum/likes/webpack/runtime/compat get default export","webpack://@flarum/likes/webpack/runtime/define property getters","webpack://@flarum/likes/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/likes/webpack/runtime/make namespace object","webpack://@flarum/likes/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/states/PaginatedListState']\"","webpack://@flarum/likes/./src/forum/states/PostLikesModalState.ts","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/likes/./src/forum/components/PostLikesModal.tsx","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/likes/./src/forum/components/PostLikedNotification.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/likes/./src/forum/components/LikesUserPage.tsx","webpack://@flarum/likes/./src/forum/extend.ts","webpack://@flarum/likes/./src/forum/index.js","webpack://@flarum/likes/./src/forum/addLikeAction.js","webpack://@flarum/likes/./src/forum/addLikesList.js","webpack://@flarum/likes/./src/forum/addLikesTabToUserProfile.tsx"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/states/PaginatedListState'];","import PaginatedListState, { PaginatedListParams } from 'flarum/common/states/PaginatedListState';\nimport User from 'flarum/common/models/User';\n\nexport interface PostLikesModalListParams extends PaginatedListParams {\n filter: {\n liked: string;\n };\n page?: {\n offset?: number;\n limit: number;\n };\n}\n\nexport default class PostLikesModalState

extends PaginatedListState {\n constructor(params: P, page: number = 1) {\n const limit = 10;\n\n params.page = { ...(params.page || {}), limit };\n\n super(params, page, limit);\n }\n\n get type(): string {\n return 'users';\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Link from 'flarum/common/components/Link';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\nimport PostLikesModalState from '../states/PostLikesModalState';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport interface IPostLikesModalAttrs extends IInternalModalAttrs {\n post: Post;\n}\n\nexport default class PostLikesModal extends Modal {\n oninit(vnode: Mithril.VnodeDOM) {\n super.oninit(vnode);\n\n this.state = new PostLikesModalState({\n filter: {\n liked: this.attrs.post.id()!,\n },\n });\n\n this.state.refresh();\n }\n\n className() {\n return 'PostLikesModal Modal--small';\n }\n\n title() {\n return app.translator.trans('flarum-likes.forum.post_likes.title');\n }\n\n content() {\n return (\n <>\n

\n {this.state.isInitialLoading() ? (\n \n ) : (\n
    \n {this.state.getPages().map((page) =>\n page.items.map((user) => (\n
  • \n \n {avatar(user)} {username(user)}\n \n
  • \n ))\n )}\n
\n )}\n
\n {this.state.hasNext() ? (\n
\n
\n
\n \n
\n
\n
\n ) : null}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostLikedNotification extends Notification {\n icon() {\n return 'far fa-thumbs-up';\n }\n\n href() {\n return app.route.post(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-likes.forum.notifications.post_liked_text', { user, count: 1 });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `LikesUserPage` component shows posts which user the user liked.\n */\nexport default class LikesUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param offset The position to start getting results from.\n * @protected\n */\n loadResults(offset: number) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n likedBy: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport LikesUserPage from './components/LikesUserPage';\n\nexport default [\n new Extend.Routes() //\n .add('user.likes', '/u/:username/likes', LikesUserPage),\n\n new Extend.Model(Post) //\n .hasMany('likes')\n .attribute('likesCount')\n .attribute('canLike'),\n];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addLikeAction from './addLikeAction';\nimport addLikesList from './addLikesList';\nimport PostLikedNotification from './components/PostLikedNotification';\nimport addLikesTabToUserProfile from './addLikesTabToUserProfile';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-likes', () => {\n app.notificationComponents.postLiked = PostLikedNotification;\n\n addLikeAction();\n addLikesList();\n addLikesTabToUserProfile();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postLiked', {\n name: 'postLiked',\n icon: 'far fa-thumbs-up',\n label: app.translator.trans('flarum-likes.forum.settings.notify_post_liked_label'),\n });\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || !post.canLike()) return;\n\n const likes = post.likes();\n\n let isLiked = app.session.user && likes && likes.some((user) => user === app.session.user);\n\n items.add(\n 'like',\n {\n isLiked = !isLiked;\n\n post.save({ isLiked });\n\n // We've saved the fact that we do or don't like the post, but in order\n // to provide instantaneous feedback to the user, we'll need to add or\n // remove the like from the relationship data manually.\n const data = post.data.relationships.likes.data;\n data.some((like, i) => {\n if (like.id === app.session.user.id()) {\n data.splice(i, 1);\n return true;\n }\n });\n\n if (isLiked) {\n data.unshift({ type: 'users', id: app.session.user.id() });\n }\n }}\n >\n {app.translator.trans(isLiked ? 'flarum-likes.forum.post.unlike_link' : 'flarum-likes.forum.post.like_link')}\n \n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\n\nimport PostLikesModal from './components/PostLikesModal';\n\nexport default function () {\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const likes = post.likes();\n\n if (likes && likes.length) {\n const limit = 4;\n const overLimit = post.likesCount() > limit;\n\n // Construct a list of names of users who have liked this post. Make sure the\n // current user is first in the list, and cap a maximum of 4 items.\n const names = likes\n .sort((a) => (a === app.session.user ? -1 : 1))\n .slice(0, overLimit ? limit - 1 : limit)\n .map((user) => {\n return (\n \n {user === app.session.user ? app.translator.trans('flarum-likes.forum.post.you_text') : username(user)}\n \n );\n });\n\n // If there are more users that we've run out of room to display, add a \"x\n // others\" name to the end of the list. Clicking on it will display a modal\n // with a full list of names.\n if (overLimit) {\n const count = post.likesCount() - names.length;\n const label = app.translator.trans('flarum-likes.forum.post.others_link', { count });\n\n if (app.forum.attribute('canSearchUsers')) {\n names.push(\n {\n e.preventDefault();\n app.modal.show(PostLikesModal, { post });\n }}\n >\n {label}\n \n );\n } else {\n names.push({label});\n }\n }\n\n items.add(\n 'liked',\n
\n {icon('far fa-thumbs-up')}\n {app.translator.trans(`flarum-likes.forum.post.liked_by${likes[0] === app.session.user ? '_self' : ''}_text`, {\n count: names.length,\n users: punctuateSeries(names),\n })}\n
\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addLikesTabToUserProfile() {\n extend(UserPage.prototype, 'navItems', function (items: ItemList) {\n const user = this.user;\n items.add(\n 'likes',\n \n {app.translator.trans('flarum-likes.forum.user.likes_link')}\n ,\n 88\n );\n });\n}\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inheritsLoose","subClass","superClass","create","constructor","_extends","assign","target","i","arguments","length","source","apply","this","_defineProperties","props","descriptor","configurable","writable","PostLikesModalState","params","page","limit","Constructor","protoProps","PaginatedListState","PostLikesModal","oninit","vnode","state","filter","liked","attrs","post","id","refresh","className","title","app","content","isInitialLoading","getPages","map","items","user","href","avatar","username","hasNext","onclick","loadNext","loading","isLoadingNext","Modal","PostLikedNotification","icon","notification","subject","fromUser","count","excerpt","truncate","contentPlain","Notification","LikesUserPage","loadResults","offset","type","likedBy","loadLimit","sort","PostsUserPage","Extend","add","Post","hasMany","attribute","extend","CommentPost","isHidden","canLike","likes","isLiked","some","save","data","relationships","like","splice","unshift","overLimit","likesCount","names","slice","label","push","e","preventDefault","users","punctuateSeries","UserPage","slug","NotificationGrid","name"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts b/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts index fd62ede6c..9a49783a8 100644 --- a/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts +++ b/extensions/package-manager/js/dist-typings/components/TaskOutputModal.d.ts @@ -1,5 +1,5 @@ /// -/// +/// import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; import Task from '../models/Task'; interface TaskOutputModalAttrs extends IInternalModalAttrs { diff --git a/extensions/package-manager/js/dist-typings/components/Updater.d.ts b/extensions/package-manager/js/dist-typings/components/Updater.d.ts index 16eb093b6..392a7319b 100644 --- a/extensions/package-manager/js/dist-typings/components/Updater.d.ts +++ b/extensions/package-manager/js/dist-typings/components/Updater.d.ts @@ -1,6 +1,6 @@ /// import Component, { ComponentAttrs } from 'flarum/common/Component'; -import ItemList from '@flarum/core/src/common/utils/ItemList'; +import ItemList from 'flarum/common/utils/ItemList'; export interface IUpdaterAttrs extends ComponentAttrs { } export declare type UpdaterLoadingTypes = 'check' | 'minor-update' | 'global-update' | 'extension-update' | null; diff --git a/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts index 3eed70a2a..2b6082f29 100644 --- a/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts +++ b/extensions/package-manager/js/dist-typings/components/WhyNotModal.d.ts @@ -1,4 +1,4 @@ -/// +/// import type Mithril from 'mithril'; import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; export interface WhyNotModalAttrs extends IInternalModalAttrs { diff --git a/extensions/package-manager/js/dist/admin.js b/extensions/package-manager/js/dist/admin.js index 373d6ff71..690a845ff 100755 --- a/extensions/package-manager/js/dist/admin.js +++ b/extensions/package-manager/js/dist/admin.js @@ -1,2 +1,2 @@ -(()=>{var a={3:function(a){a.exports=function(){"use strict";var a,t,e=1e3,n=6e4,r=36e5,s=864e5,i=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,o=31536e6,c=2592e6,l=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,u={years:o,months:c,days:s,hours:r,minutes:n,seconds:e,milliseconds:1,weeks:6048e5},m=function(a){return a instanceof v},d=function(a,t,e){return new v(a,e,t.$l)},p=function(a){return t.p(a)+"s"},g=function(a){return a<0},f=function(a){return g(a)?Math.ceil(a):Math.floor(a)},h=function(a){return Math.abs(a)},k=function(a,t){return a?g(a)?{negative:!0,format:""+h(a)+t}:{negative:!1,format:""+a+t}:{negative:!1,format:""}},v=function(){function g(a,t,e){var n=this;if(this.$d={},this.$l=e,void 0===a&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(a*u[p(t)],this);if("number"==typeof a)return this.$ms=a,this.parseFromMilliseconds(),this;if("object"==typeof a)return Object.keys(a).forEach((function(t){n.$d[p(t)]=a[t]})),this.calMilliseconds(),this;if("string"==typeof a){var r=a.match(l);if(r){var s=r.slice(2).map((function(a){return null!=a?Number(a):0}));return this.$d.years=s[0],this.$d.months=s[1],this.$d.weeks=s[2],this.$d.days=s[3],this.$d.hours=s[4],this.$d.minutes=s[5],this.$d.seconds=s[6],this.calMilliseconds(),this}}return this}var h=g.prototype;return h.calMilliseconds=function(){var a=this;this.$ms=Object.keys(this.$d).reduce((function(t,e){return t+(a.$d[e]||0)*u[e]}),0)},h.parseFromMilliseconds=function(){var a=this.$ms;this.$d.years=f(a/o),a%=o,this.$d.months=f(a/c),a%=c,this.$d.days=f(a/s),a%=s,this.$d.hours=f(a/r),a%=r,this.$d.minutes=f(a/n),a%=n,this.$d.seconds=f(a/e),a%=e,this.$d.milliseconds=a},h.toISOString=function(){var a=k(this.$d.years,"Y"),t=k(this.$d.months,"M"),e=+this.$d.days||0;this.$d.weeks&&(e+=7*this.$d.weeks);var n=k(e,"D"),r=k(this.$d.hours,"H"),s=k(this.$d.minutes,"M"),i=this.$d.seconds||0;this.$d.milliseconds&&(i+=this.$d.milliseconds/1e3);var o=k(i,"S"),c=a.negative||t.negative||n.negative||r.negative||s.negative||o.negative,l=r.format||s.format||o.format?"T":"",u=(c?"-":"")+"P"+a.format+t.format+n.format+l+r.format+s.format+o.format;return"P"===u||"-P"===u?"P0D":u},h.toJSON=function(){return this.toISOString()},h.format=function(a){var e=a||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return e.replace(i,(function(a,t){return t||String(n[a])}))},h.as=function(a){return this.$ms/u[p(a)]},h.get=function(a){var t=this.$ms,e=p(a);return"milliseconds"===e?t%=1e3:t="weeks"===e?f(t/u[e]):this.$d[e],0===t?0:t},h.add=function(a,t,e){var n;return n=t?a*u[p(t)]:m(a)?a.$ms:d(a,this).$ms,d(this.$ms+n*(e?-1:1),this)},h.subtract=function(a,t){return this.add(a,t,!0)},h.locale=function(a){var t=this.clone();return t.$l=a,t},h.clone=function(){return d(this.$ms,this)},h.humanize=function(t){return a().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},h.milliseconds=function(){return this.get("milliseconds")},h.asMilliseconds=function(){return this.as("milliseconds")},h.seconds=function(){return this.get("seconds")},h.asSeconds=function(){return this.as("seconds")},h.minutes=function(){return this.get("minutes")},h.asMinutes=function(){return this.as("minutes")},h.hours=function(){return this.get("hours")},h.asHours=function(){return this.as("hours")},h.days=function(){return this.get("days")},h.asDays=function(){return this.as("days")},h.weeks=function(){return this.get("weeks")},h.asWeeks=function(){return this.as("weeks")},h.months=function(){return this.get("months")},h.asMonths=function(){return this.as("months")},h.years=function(){return this.get("years")},h.asYears=function(){return this.as("years")},g}();return function(e,n,r){a=r,t=r().$utils(),r.duration=function(a,t){var e=r.locale();return d(a,{$l:e},t)},r.isDuration=m;var s=n.prototype.add,i=n.prototype.subtract;n.prototype.add=function(a,t){return m(a)&&(a=a.asMilliseconds()),s.bind(this)(a,t)},n.prototype.subtract=function(a,t){return m(a)&&(a=a.asMilliseconds()),i.bind(this)(a,t)}}}()}},t={};function e(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return a[n].call(s.exports,s,s.exports,e),s.exports}e.n=a=>{var t=a&&a.__esModule?()=>a.default:()=>a;return e.d(t,{a:t}),t},e.d=(a,t)=>{for(var n in t)e.o(t,n)&&!e.o(a,n)&&Object.defineProperty(a,n,{enumerable:!0,get:t[n]})},e.o=(a,t)=>Object.prototype.hasOwnProperty.call(a,t),e.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})};var n={};(()=>{"use strict";e.r(n);const a=flarum.core.compat["common/extend"],t=flarum.core.compat["admin/app"];var r=e.n(t);const s=flarum.core.compat["admin/components/ExtensionPage"];var i=e.n(s);const o=flarum.core.compat["common/components/Button"];var c=e.n(o);const l=flarum.core.compat["admin/components/LoadingModal"];var u=e.n(l);const d=flarum.core.compat["admin/utils/isExtensionEnabled"];var p=e.n(d);const g=flarum.core.compat["common/components/Alert"];var f=e.n(g);function h(a,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,t){return a.__proto__=t,a},h(a,t)}function k(a,t){a.prototype=Object.create(t.prototype),a.prototype.constructor=a,h(a,t)}function v(a,t){if(null==a)return{};var e,n,r={},s=Object.keys(a);for(n=0;n=0||(r[e]=a[e]);return r}const y=flarum.core.compat["common/Component"];var b=e.n(y);const x=flarum.core.compat["common/components/LoadingIndicator"];var _=e.n(x);const M=flarum.core.compat["common/components/Tooltip"];var w=e.n(M);const N=flarum.core.compat["common/helpers/icon"];var P=e.n(N);const U=flarum.core.compat["common/utils/ItemList"];var j=e.n(U);const $=flarum.core.compat["common/utils/extractText"];var q=e.n($);const T=flarum.core.compat["common/utils/classList"];var O=e.n(T),S=["className","type"],B=function(a){function t(){return a.apply(this,arguments)||this}return k(t,a),t.prototype.view=function(a){var t=this.attrs,e=t.className,n=(t.type,v(t,S));return m("span",Object.assign({className:O()(["Label","Label--"+this.attrs.type,e])},n),a.children)},t}(b());const L=flarum.core.compat["common/components/Modal"];var E=e.n(L),C=function(a){function t(){return a.apply(this,arguments)||this}k(t,a);var e=t.prototype;return e.className=function(){return"Modal--large QuickModal"},e.title=function(){return r().translator.trans("flarum-package-manager.admin.sections.queue.operations."+this.attrs.task.operation())},e.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-package-manager.admin.sections.queue.output_modal.command")),m("div",{className:"FormControl TaskOutputModal-data-command"},m("code",null,"$ composer ",this.attrs.task.command()))),m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-package-manager.admin.sections.queue.output_modal.output")),m("div",{className:"FormControl TaskOutputModal-data-output"},m("code",null,m("pre",null,this.attrs.task.output()))))))},t}(E()),A=e(3),F=e.n(A),D=function(a){function t(){return a.apply(this,arguments)||this}return k(t,a),t.prototype.view=function(){var a=this;return m("nav",{className:"Pagination UserListPage-gridPagination"},m(c(),{disabled:!this.attrs.list.hasPrev(),title:r().translator.trans("core.admin.users.pagination.back_button"),onclick:function(){return a.attrs.list.prev()},icon:"fas fa-chevron-left",className:"Button Button--icon UserListPage-backBtn"}),m("span",{className:"UserListPage-pageNumber"},r().translator.trans("core.admin.users.pagination.page_counter",{current:this.attrs.list.pageNumber()+1,total:this.attrs.list.getTotalPages()})),m(c(),{disabled:!this.attrs.list.hasNext(),title:r().translator.trans("core.admin.users.pagination.next_button"),onclick:function(){return a.attrs.list.next()},icon:"fas fa-chevron-right",className:"Button Button--icon UserListPage-nextBtn"}))},t}(b()),I=["label","content"],Y=function(a){function t(){return a.apply(this,arguments)||this}k(t,a);var e=t.prototype;return e.oninit=function(t){a.prototype.oninit.call(this,t),r().packageManager.queue.load()},e.view=function(){return m("section",{id:"PackageManager-queueSection",className:"ExtensionPage-permissions PackageManager-queueSection"},m("div",{className:"ExtensionPage-permissions-header PackageManager-queueSection-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},r().translator.trans("flarum-package-manager.admin.sections.queue.title")),m(c(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:function(){return r().packageManager.queue.load()},"aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.refresh")}))),m("div",{className:"container"},this.queueTable()))},e.columns=function(){var a=this,t=new(j());return t.add("operation",{label:q()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.operation")),content:function(t){return m("div",{className:"PackageManager-queueTable-operation"},m("span",{className:"PackageManager-queueTable-operation-icon"},a.operationIcon(t.operation())),m("span",{className:"PackageManager-queueTable-operation-name"},r().translator.trans("flarum-package-manager.admin.sections.queue.operations."+t.operation())))}},80),t.add("package",{label:q()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.package")),content:function(a){var t,e=r().data.extensions[null==(t=a.package())?void 0:t.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return e?m("div",{className:"PackageManager-queueTable-package"},m("div",{className:"PackageManager-queueTable-package-icon ExtensionIcon",style:e.icon},!!e.icon&&P()(e.icon.name)),m("div",{className:"PackageManager-queueTable-package-details"},m("span",{className:"PackageManager-queueTable-package-title"},e.extra["flarum-extension"].title),m("span",{className:"PackageManager-queueTable-package-name"},a.package()))):a.package()}},75),t.add("status",{label:q()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.status")),content:function(a){return m(B,{className:"PackageManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[a.status()]},r().translator.trans("flarum-package-manager.admin.sections.queue.statuses."+a.status()))}},70),t.add("elapsedTime",{label:q()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.elapsed_time")),content:function(a){return a.startedAt()?m(w(),{text:dayjs(a.startedAt()).format("LL LTS")+" "+dayjs(a.finishedAt()).format("LL LTS")},m("span",null,function(a,t){dayjs.extend(F());var e=dayjs(t).diff(a);return dayjs.duration(e).humanize()}(a.startedAt(),a.finishedAt()))):r().translator.trans("flarum-package-manager.admin.sections.queue.task_just_started")}},65),t.add("memoryUsed",{label:q()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.peak_memory_used")),content:function(a){return m("span",null,a.peakMemoryUsed())}},60),t.add("details",{label:q()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.details")),content:function(a){return m(c(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.columns.details"),onclick:function(){return r().modal.show(C,{task:a})}})},className:"Table-controls"},55),t},e.queueTable=function(){var a=r().packageManager.queue.getItems();if(!a)return m(_(),null);if(a&&!a.length)return m("h3",{className:"ExtensionPage-subHeader"},r().translator.trans("flarum-package-manager.admin.sections.queue.none"));var t=this.columns();return m("[",null,m("table",{className:"Table PackageManager-queueTable"},m("thead",null,m("tr",null,t.toArray().map((function(a,t){return m("th",{key:t},a.label)})))),m("tbody",null,a.map((function(a,e){return m("tr",{key:e},t.toArray().map((function(t,e){t.label;var n=t.content,r=v(t,I);return m("td",Object.assign({key:e},r),n(a))})))})))),m(D,{list:r().packageManager.queue}))},e.operationIcon=function(a){return P()({update_check:"fas fa-sync-alt",update_major:"fas fa-play",update_minor:"fas fa-play",update_global:"fas fa-play",extension_install:"fas fa-download",extension_remove:"fas fa-times",extension_update:"fas fa-arrow-alt-circle-up",why_not:"fas fa-exclamation-circle"}[a])},t}(b());const H=flarum.core.compat["common/utils/Stream"];var W=e.n(H);function R(a){var t=a.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(t.code))throw a;switch(t.code){case"composer_command_failure":t.guessed_cause?(r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.guessed_cause."+t.guessed_cause)),r().modal.close()):r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),r().modal.close();break;case"extension_not_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),r().modal.close()}}function G(){r().modal.close(),m.route.set(r().route("extension",{id:"flarum-package-manager"})),r().packageManager.queue.load(),setTimeout((function(){var a;null==(a=document.getElementById("PackageManager-queueSection"))||a.scrollIntoView({block:"nearest"})}),200)}window.jumpToQueue=G;var V=function(a){function t(){for(var t,e=arguments.length,n=new Array(e),r=0;r"+t.data.phpVersion+"",folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),default:!1,type:"boolean",disabled:t.data["flarum-package-manager.using_sync_queue"]}).registerPage(oa),(0,a.extend)(i().prototype,"topItems",(function(a){var e=this;"flarum-package-manager"===this.extension.id||p()(this.extension.id)||a.add("remove",m(c(),{className:"Button Button--danger",icon:"fas fa-times",onclick:function(){t.modal.show(u()),t.request({url:t.forum.attribute("apiUrl")+"/package-manager/extensions/"+e.extension.id,method:"DELETE"}).then((function(a){null!=a&&a.processing?G():(t.alerts.show({type:"success"},t.translator.trans("flarum-package-manager.admin.extensions.successful_remove")),window.location=t.forum.attribute("adminUrl"))})).finally((function(){t.modal.close()}))}},"Remove"))}))}))})(),module.exports=n})(); +(()=>{var a={3:function(a){a.exports=function(){"use strict";var a,t,e=1e3,n=6e4,r=36e5,s=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,i=31536e6,l=2592e6,c=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,u={years:i,months:l,days:s,hours:r,minutes:n,seconds:e,milliseconds:1,weeks:6048e5},m=function(a){return a instanceof v},d=function(a,t,e){return new v(a,e,t.$l)},p=function(a){return t.p(a)+"s"},g=function(a){return a<0},f=function(a){return g(a)?Math.ceil(a):Math.floor(a)},h=function(a){return Math.abs(a)},k=function(a,t){return a?g(a)?{negative:!0,format:""+h(a)+t}:{negative:!1,format:""+a+t}:{negative:!1,format:""}},v=function(){function g(a,t,e){var n=this;if(this.$d={},this.$l=e,void 0===a&&(this.$ms=0,this.parseFromMilliseconds()),t)return d(a*u[p(t)],this);if("number"==typeof a)return this.$ms=a,this.parseFromMilliseconds(),this;if("object"==typeof a)return Object.keys(a).forEach((function(t){n.$d[p(t)]=a[t]})),this.calMilliseconds(),this;if("string"==typeof a){var r=a.match(c);if(r){var s=r.slice(2).map((function(a){return null!=a?Number(a):0}));return this.$d.years=s[0],this.$d.months=s[1],this.$d.weeks=s[2],this.$d.days=s[3],this.$d.hours=s[4],this.$d.minutes=s[5],this.$d.seconds=s[6],this.calMilliseconds(),this}}return this}var h=g.prototype;return h.calMilliseconds=function(){var a=this;this.$ms=Object.keys(this.$d).reduce((function(t,e){return t+(a.$d[e]||0)*u[e]}),0)},h.parseFromMilliseconds=function(){var a=this.$ms;this.$d.years=f(a/i),a%=i,this.$d.months=f(a/l),a%=l,this.$d.days=f(a/s),a%=s,this.$d.hours=f(a/r),a%=r,this.$d.minutes=f(a/n),a%=n,this.$d.seconds=f(a/e),a%=e,this.$d.milliseconds=a},h.toISOString=function(){var a=k(this.$d.years,"Y"),t=k(this.$d.months,"M"),e=+this.$d.days||0;this.$d.weeks&&(e+=7*this.$d.weeks);var n=k(e,"D"),r=k(this.$d.hours,"H"),s=k(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var i=k(o,"S"),l=a.negative||t.negative||n.negative||r.negative||s.negative||i.negative,c=r.format||s.format||i.format?"T":"",u=(l?"-":"")+"P"+a.format+t.format+n.format+c+r.format+s.format+i.format;return"P"===u||"-P"===u?"P0D":u},h.toJSON=function(){return this.toISOString()},h.format=function(a){var e=a||"YYYY-MM-DDTHH:mm:ss",n={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return e.replace(o,(function(a,t){return t||String(n[a])}))},h.as=function(a){return this.$ms/u[p(a)]},h.get=function(a){var t=this.$ms,e=p(a);return"milliseconds"===e?t%=1e3:t="weeks"===e?f(t/u[e]):this.$d[e],0===t?0:t},h.add=function(a,t,e){var n;return n=t?a*u[p(t)]:m(a)?a.$ms:d(a,this).$ms,d(this.$ms+n*(e?-1:1),this)},h.subtract=function(a,t){return this.add(a,t,!0)},h.locale=function(a){var t=this.clone();return t.$l=a,t},h.clone=function(){return d(this.$ms,this)},h.humanize=function(t){return a().add(this.$ms,"ms").locale(this.$l).fromNow(!t)},h.milliseconds=function(){return this.get("milliseconds")},h.asMilliseconds=function(){return this.as("milliseconds")},h.seconds=function(){return this.get("seconds")},h.asSeconds=function(){return this.as("seconds")},h.minutes=function(){return this.get("minutes")},h.asMinutes=function(){return this.as("minutes")},h.hours=function(){return this.get("hours")},h.asHours=function(){return this.as("hours")},h.days=function(){return this.get("days")},h.asDays=function(){return this.as("days")},h.weeks=function(){return this.get("weeks")},h.asWeeks=function(){return this.as("weeks")},h.months=function(){return this.get("months")},h.asMonths=function(){return this.as("months")},h.years=function(){return this.get("years")},h.asYears=function(){return this.as("years")},g}();return function(e,n,r){a=r,t=r().$utils(),r.duration=function(a,t){var e=r.locale();return d(a,{$l:e},t)},r.isDuration=m;var s=n.prototype.add,o=n.prototype.subtract;n.prototype.add=function(a,t){return m(a)&&(a=a.asMilliseconds()),s.bind(this)(a,t)},n.prototype.subtract=function(a,t){return m(a)&&(a=a.asMilliseconds()),o.bind(this)(a,t)}}}()}},t={};function e(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return a[n].call(s.exports,s,s.exports,e),s.exports}e.n=a=>{var t=a&&a.__esModule?()=>a.default:()=>a;return e.d(t,{a:t}),t},e.d=(a,t)=>{for(var n in t)e.o(t,n)&&!e.o(a,n)&&Object.defineProperty(a,n,{enumerable:!0,get:t[n]})},e.o=(a,t)=>Object.prototype.hasOwnProperty.call(a,t),e.r=a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})};var n={};(()=>{"use strict";e.r(n);const a=flarum.core.compat["common/extend"],t=flarum.core.compat["admin/app"];var r=e.n(t);const s=flarum.core.compat["admin/components/ExtensionPage"];var o=e.n(s);const i=flarum.core.compat["common/components/Button"];var l=e.n(i);const c=flarum.core.compat["admin/components/LoadingModal"];var u=e.n(c);const d=flarum.core.compat["admin/utils/isExtensionEnabled"];var p=e.n(d);const g=flarum.core.compat["common/components/Alert"];var f=e.n(g);function h(a,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,t){return a.__proto__=t,a},h(a,t)}function k(a,t){a.prototype=Object.create(t.prototype),a.prototype.constructor=a,h(a,t)}function v(a,t){if(null==a)return{};var e,n,r={},s=Object.keys(a);for(n=0;n=0||(r[e]=a[e]);return r}const b=flarum.core.compat["common/Component"];var y=e.n(b);const x=flarum.core.compat["common/components/LoadingIndicator"];var M=e.n(x);const _=flarum.core.compat["common/components/Tooltip"];var N=e.n(_);const w=flarum.core.compat["common/helpers/icon"];var P=e.n(w);const U=flarum.core.compat["common/utils/ItemList"];var $=e.n(U);const q=flarum.core.compat["common/utils/extractText"];var T=e.n(q);const j=flarum.core.compat["common/utils/classList"];var S=e.n(j),B=["className","type"],L=function(a){function t(){return a.apply(this,arguments)||this}return k(t,a),t.prototype.view=function(a){var t=this.attrs,e=t.className,n=(t.type,v(t,B));return m("span",Object.assign({className:S()(["Label","Label--"+this.attrs.type,e])},n),a.children)},t}(y());const O=flarum.core.compat["common/components/Modal"];var E=e.n(O),C=function(a){function t(){return a.apply(this,arguments)||this}k(t,a);var e=t.prototype;return e.className=function(){return"Modal--large QuickModal"},e.title=function(){return r().translator.trans("flarum-package-manager.admin.sections.queue.operations."+this.attrs.task.operation())},e.content=function(){return m("div",{className:"Modal-body"},m("div",{className:"TaskOutputModal-data"},m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-package-manager.admin.sections.queue.output_modal.command")),m("div",{className:"FormControl TaskOutputModal-data-command"},m("code",null,"$ composer ",this.attrs.task.command()))),m("div",{className:"Form-group"},m("label",null,r().translator.trans("flarum-package-manager.admin.sections.queue.output_modal.output")),m("div",{className:"FormControl TaskOutputModal-data-output"},m("code",null,m("pre",null,this.attrs.task.output()))))))},t}(E()),A=e(3),F=e.n(A),D=function(a){function t(){return a.apply(this,arguments)||this}return k(t,a),t.prototype.view=function(){var a=this;return m("nav",{className:"Pagination UserListPage-gridPagination"},m(l(),{disabled:!this.attrs.list.hasPrev(),title:r().translator.trans("core.admin.users.pagination.back_button"),onclick:function(){return a.attrs.list.prev()},icon:"fas fa-chevron-left",className:"Button Button--icon UserListPage-backBtn"}),m("span",{className:"UserListPage-pageNumber"},r().translator.trans("core.admin.users.pagination.page_counter",{current:this.attrs.list.pageNumber()+1,total:this.attrs.list.getTotalPages()})),m(l(),{disabled:!this.attrs.list.hasNext(),title:r().translator.trans("core.admin.users.pagination.next_button"),onclick:function(){return a.attrs.list.next()},icon:"fas fa-chevron-right",className:"Button Button--icon UserListPage-nextBtn"}))},t}(y()),Y=["label","content"],I=function(a){function t(){return a.apply(this,arguments)||this}k(t,a);var e=t.prototype;return e.oninit=function(t){a.prototype.oninit.call(this,t),r().packageManager.queue.load()},e.view=function(){return m("section",{id:"PackageManager-queueSection",className:"ExtensionPage-permissions PackageManager-queueSection"},m("div",{className:"ExtensionPage-permissions-header PackageManager-queueSection-header"},m("div",{className:"container"},m("h2",{className:"ExtensionTitle"},r().translator.trans("flarum-package-manager.admin.sections.queue.title")),m(l(),{className:"Button Button--icon",icon:"fas fa-sync-alt",onclick:function(){return r().packageManager.queue.load()},"aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.refresh")}))),m("div",{className:"container"},this.queueTable()))},e.columns=function(){var a=this,t=new($());return t.add("operation",{label:T()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.operation")),content:function(t){return m("div",{className:"PackageManager-queueTable-operation"},m("span",{className:"PackageManager-queueTable-operation-icon"},a.operationIcon(t.operation())),m("span",{className:"PackageManager-queueTable-operation-name"},r().translator.trans("flarum-package-manager.admin.sections.queue.operations."+t.operation())))}},80),t.add("package",{label:T()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.package")),content:function(a){var t,e=r().data.extensions[null==(t=a.package())?void 0:t.replace(/(\/flarum-|\/flarum-ext-|\/)/g,"-")];return e?m("div",{className:"PackageManager-queueTable-package"},m("div",{className:"PackageManager-queueTable-package-icon ExtensionIcon",style:e.icon},!!e.icon&&P()(e.icon.name)),m("div",{className:"PackageManager-queueTable-package-details"},m("span",{className:"PackageManager-queueTable-package-title"},e.extra["flarum-extension"].title),m("span",{className:"PackageManager-queueTable-package-name"},a.package()))):a.package()}},75),t.add("status",{label:T()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.status")),content:function(a){return m(L,{className:"PackageManager-queueTable-status",type:{running:"neutral",failure:"error",pending:"warning",success:"success"}[a.status()]},r().translator.trans("flarum-package-manager.admin.sections.queue.statuses."+a.status()))}},70),t.add("elapsedTime",{label:T()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.elapsed_time")),content:function(a){return a.startedAt()?m(N(),{text:dayjs(a.startedAt()).format("LL LTS")+" "+dayjs(a.finishedAt()).format("LL LTS")},m("span",null,function(a,t){dayjs.extend(F());var e=dayjs(t).diff(a);return dayjs.duration(e).humanize()}(a.startedAt(),a.finishedAt()))):r().translator.trans("flarum-package-manager.admin.sections.queue.task_just_started")}},65),t.add("memoryUsed",{label:T()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.peak_memory_used")),content:function(a){return m("span",null,a.peakMemoryUsed())}},60),t.add("details",{label:T()(r().translator.trans("flarum-package-manager.admin.sections.queue.columns.details")),content:function(a){return m(l(),{className:"Button Button--icon Table-controls-item",icon:"fas fa-file-alt","aria-label":r().translator.trans("flarum-package-manager.admin.sections.queue.columns.details"),onclick:function(){return r().modal.show(C,{task:a})}})},className:"Table-controls"},55),t},e.queueTable=function(){var a=r().packageManager.queue.getItems();if(!a)return m(M(),null);if(a&&!a.length)return m("h3",{className:"ExtensionPage-subHeader"},r().translator.trans("flarum-package-manager.admin.sections.queue.none"));var t=this.columns();return m("[",null,m("table",{className:"Table PackageManager-queueTable"},m("thead",null,m("tr",null,t.toArray().map((function(a,t){return m("th",{key:t},a.label)})))),m("tbody",null,a.map((function(a,e){return m("tr",{key:e},t.toArray().map((function(t,e){t.label;var n=t.content,r=v(t,Y);return m("td",Object.assign({key:e},r),n(a))})))})))),m(D,{list:r().packageManager.queue}))},e.operationIcon=function(a){return P()({update_check:"fas fa-sync-alt",update_major:"fas fa-play",update_minor:"fas fa-play",update_global:"fas fa-play",extension_install:"fas fa-download",extension_remove:"fas fa-times",extension_update:"fas fa-arrow-alt-circle-up",why_not:"fas fa-exclamation-circle"}[a])},t}(y());const H=flarum.core.compat["common/utils/Stream"];var W=e.n(H);function G(a){var t=a.response.errors[0];if(!["composer_command_failure","extension_already_installed","extension_not_installed"].includes(t.code))throw a;switch(t.code){case"composer_command_failure":t.guessed_cause?(r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.guessed_cause."+t.guessed_cause)),r().modal.close()):r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.composer_command_failure"));break;case"extension_already_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_already_installed")),r().modal.close();break;case"extension_not_installed":r().alerts.show({type:"error"},r().translator.trans("flarum-package-manager.admin.exceptions.extension_not_installed")),r().modal.close()}}function R(){r().modal.close(),m.route.set(r().route("extension",{id:"flarum-package-manager"})),r().packageManager.queue.load(),setTimeout((function(){var a;null==(a=document.getElementById("PackageManager-queueSection"))||a.scrollIntoView({block:"nearest"})}),200)}window.jumpToQueue=R;var V=function(a){function t(){for(var t,e=arguments.length,n=new Array(e),r=0;r"+t.data.phpVersion+"",folder_perms_link:"https://docs.flarum.org/install#folder-ownership"}))),default:!1,type:"boolean",disabled:t.data["flarum-package-manager.using_sync_queue"]}).registerPage(ta),(0,a.extend)(o().prototype,"topItems",(function(a){var e=this;"flarum-package-manager"===this.extension.id||p()(this.extension.id)||a.add("remove",m(l(),{className:"Button Button--danger",icon:"fas fa-times",onclick:function(){t.modal.show(u()),t.request({url:t.forum.attribute("apiUrl")+"/package-manager/extensions/"+e.extension.id,method:"DELETE"}).then((function(a){null!=a&&a.processing?R():(t.alerts.show({type:"success"},t.translator.trans("flarum-package-manager.admin.extensions.successful_remove")),window.location=t.forum.attribute("adminUrl"))})).finally((function(){t.modal.close()}))}},"Remove"))}))}))})(),module.exports=n})(); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/extensions/package-manager/js/dist/admin.js.map b/extensions/package-manager/js/dist/admin.js.map index 621a9f335..9fed68fcf 100755 --- a/extensions/package-manager/js/dist/admin.js.map +++ b/extensions/package-manager/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","mappings":"2BAAoEA,EAAOC,QAAmJ,WAAW,aAAa,IAAIC,EAAEC,EAAEC,EAAE,IAAIC,EAAE,IAAIC,EAAE,KAAKC,EAAE,MAAMC,EAAE,sFAAsFC,EAAE,QAAQC,EAAE,OAAOC,EAAE,sKAAsKC,EAAE,CAACC,MAAMJ,EAAEK,OAAOJ,EAAEK,KAAKR,EAAES,MAAMV,EAAEW,QAAQZ,EAAEa,QAAQd,EAAEe,aAAa,EAAEC,MAAM,QAAQC,EAAE,SAASnB,GAAG,OAAOA,aAAaoB,CAAC,EAAEC,EAAE,SAASrB,EAAEC,EAAEC,GAAG,OAAO,IAAIkB,EAAEpB,EAAEE,EAAED,EAAEqB,GAAG,EAAEC,EAAE,SAASvB,GAAG,OAAOC,EAAEmB,EAAEpB,GAAG,GAAG,EAAEwB,EAAE,SAASxB,GAAG,OAAOA,EAAE,CAAC,EAAEyB,EAAE,SAASzB,GAAG,OAAOwB,EAAExB,GAAG0B,KAAKC,KAAK3B,GAAG0B,KAAKE,MAAM5B,EAAE,EAAE6B,EAAE,SAAS7B,GAAG,OAAO0B,KAAKI,IAAI9B,EAAE,EAAE+B,EAAE,SAAS/B,EAAEC,GAAG,OAAOD,EAAEwB,EAAExB,GAAG,CAACgC,UAAS,EAAGC,OAAO,GAAGJ,EAAE7B,GAAGC,GAAG,CAAC+B,UAAS,EAAGC,OAAO,GAAGjC,EAAEC,GAAG,CAAC+B,UAAS,EAAGC,OAAO,GAAG,EAAEb,EAAE,WAAW,SAASI,EAAExB,EAAEC,EAAEC,GAAG,IAAIC,EAAE+B,KAAK,GAAGA,KAAKC,GAAG,CAAC,EAAED,KAAKZ,GAAGpB,OAAE,IAASF,IAAIkC,KAAKE,IAAI,EAAEF,KAAKG,yBAAyBpC,EAAE,OAAOoB,EAAErB,EAAEU,EAAEa,EAAEtB,IAAIiC,MAAM,GAAG,iBAAiBlC,EAAE,OAAOkC,KAAKE,IAAIpC,EAAEkC,KAAKG,wBAAwBH,KAAK,GAAG,iBAAiBlC,EAAE,OAAOsC,OAAOC,KAAKvC,GAAGwC,SAAS,SAASvC,GAAGE,EAAEgC,GAAGZ,EAAEtB,IAAID,EAAEC,EAAE,IAAIiC,KAAKO,kBAAkBP,KAAK,GAAG,iBAAiBlC,EAAE,CAAC,IAAII,EAAEJ,EAAE0C,MAAMjC,GAAG,GAAGL,EAAE,CAAC,IAAIC,EAAED,EAAEuC,MAAM,GAAGC,KAAK,SAAS5C,GAAG,OAAO,MAAMA,EAAE6C,OAAO7C,GAAG,CAAC,IAAI,OAAOkC,KAAKC,GAAGxB,MAAMN,EAAE,GAAG6B,KAAKC,GAAGvB,OAAOP,EAAE,GAAG6B,KAAKC,GAAGjB,MAAMb,EAAE,GAAG6B,KAAKC,GAAGtB,KAAKR,EAAE,GAAG6B,KAAKC,GAAGrB,MAAMT,EAAE,GAAG6B,KAAKC,GAAGpB,QAAQV,EAAE,GAAG6B,KAAKC,GAAGnB,QAAQX,EAAE,GAAG6B,KAAKO,kBAAkBP,IAAI,CAAC,CAAC,OAAOA,IAAI,CAAC,IAAIL,EAAEL,EAAEsB,UAAU,OAAOjB,EAAEY,gBAAgB,WAAW,IAAIzC,EAAEkC,KAAKA,KAAKE,IAAIE,OAAOC,KAAKL,KAAKC,IAAIY,QAAQ,SAAS9C,EAAEC,GAAG,OAAOD,GAAGD,EAAEmC,GAAGjC,IAAI,GAAGQ,EAAER,EAAE,GAAG,EAAE,EAAE2B,EAAEQ,sBAAsB,WAAW,IAAIrC,EAAEkC,KAAKE,IAAIF,KAAKC,GAAGxB,MAAMc,EAAEzB,EAAEO,GAAGP,GAAGO,EAAE2B,KAAKC,GAAGvB,OAAOa,EAAEzB,EAAEQ,GAAGR,GAAGQ,EAAE0B,KAAKC,GAAGtB,KAAKY,EAAEzB,EAAEK,GAAGL,GAAGK,EAAE6B,KAAKC,GAAGrB,MAAMW,EAAEzB,EAAEI,GAAGJ,GAAGI,EAAE8B,KAAKC,GAAGpB,QAAQU,EAAEzB,EAAEG,GAAGH,GAAGG,EAAE+B,KAAKC,GAAGnB,QAAQS,EAAEzB,EAAEE,GAAGF,GAAGE,EAAEgC,KAAKC,GAAGlB,aAAajB,CAAC,EAAE6B,EAAEmB,YAAY,WAAW,IAAIhD,EAAE+B,EAAEG,KAAKC,GAAGxB,MAAM,KAAKV,EAAE8B,EAAEG,KAAKC,GAAGvB,OAAO,KAAKV,GAAGgC,KAAKC,GAAGtB,MAAM,EAAEqB,KAAKC,GAAGjB,QAAQhB,GAAG,EAAEgC,KAAKC,GAAGjB,OAAO,IAAIf,EAAE4B,EAAE7B,EAAE,KAAKE,EAAE2B,EAAEG,KAAKC,GAAGrB,MAAM,KAAKT,EAAE0B,EAAEG,KAAKC,GAAGpB,QAAQ,KAAKT,EAAE4B,KAAKC,GAAGnB,SAAS,EAAEkB,KAAKC,GAAGlB,eAAeX,GAAG4B,KAAKC,GAAGlB,aAAa,KAAK,IAAIV,EAAEwB,EAAEzB,EAAE,KAAKE,EAAER,EAAEgC,UAAU/B,EAAE+B,UAAU7B,EAAE6B,UAAU5B,EAAE4B,UAAU3B,EAAE2B,UAAUzB,EAAEyB,SAASvB,EAAEL,EAAE6B,QAAQ5B,EAAE4B,QAAQ1B,EAAE0B,OAAO,IAAI,GAAGvB,GAAGF,EAAE,IAAI,IAAI,IAAIR,EAAEiC,OAAOhC,EAAEgC,OAAO9B,EAAE8B,OAAOxB,EAAEL,EAAE6B,OAAO5B,EAAE4B,OAAO1B,EAAE0B,OAAO,MAAM,MAAMvB,GAAG,OAAOA,EAAE,MAAMA,CAAC,EAAEmB,EAAEoB,OAAO,WAAW,OAAOf,KAAKc,aAAa,EAAEnB,EAAEI,OAAO,SAASjC,GAAG,IAAIE,EAAEF,GAAG,sBAAsBG,EAAE,CAAC+C,EAAEhB,KAAKC,GAAGxB,MAAMwC,GAAGlD,EAAEA,EAAEiC,KAAKC,GAAGxB,MAAM,EAAE,KAAKyC,KAAKnD,EAAEA,EAAEiC,KAAKC,GAAGxB,MAAM,EAAE,KAAK0C,EAAEnB,KAAKC,GAAGvB,OAAO0C,GAAGrD,EAAEA,EAAEiC,KAAKC,GAAGvB,OAAO,EAAE,KAAK2C,EAAErB,KAAKC,GAAGtB,KAAK2C,GAAGvD,EAAEA,EAAEiC,KAAKC,GAAGtB,KAAK,EAAE,KAAK4C,EAAEvB,KAAKC,GAAGrB,MAAM4C,GAAGzD,EAAEA,EAAEiC,KAAKC,GAAGrB,MAAM,EAAE,KAAKS,EAAEW,KAAKC,GAAGpB,QAAQ4C,GAAG1D,EAAEA,EAAEiC,KAAKC,GAAGpB,QAAQ,EAAE,KAAKd,EAAEiC,KAAKC,GAAGnB,QAAQ4C,GAAG3D,EAAEA,EAAEiC,KAAKC,GAAGnB,QAAQ,EAAE,KAAK6C,IAAI5D,EAAEA,EAAEiC,KAAKC,GAAGlB,aAAa,EAAE,MAAM,OAAOf,EAAE4D,QAAQxD,GAAG,SAASN,EAAEC,GAAG,OAAOA,GAAG8D,OAAO5D,EAAEH,GAAG,GAAG,EAAE6B,EAAEmC,GAAG,SAAShE,GAAG,OAAOkC,KAAKE,IAAI1B,EAAEa,EAAEvB,GAAG,EAAE6B,EAAEoC,IAAI,SAASjE,GAAG,IAAIC,EAAEiC,KAAKE,IAAIlC,EAAEqB,EAAEvB,GAAG,MAAM,iBAAiBE,EAAED,GAAG,IAAIA,EAAE,UAAUC,EAAEuB,EAAExB,EAAES,EAAER,IAAIgC,KAAKC,GAAGjC,GAAG,IAAID,EAAE,EAAEA,CAAC,EAAE4B,EAAEqC,IAAI,SAASlE,EAAEC,EAAEC,GAAG,IAAIC,EAAE,OAAOA,EAAEF,EAAED,EAAEU,EAAEa,EAAEtB,IAAIkB,EAAEnB,GAAGA,EAAEoC,IAAIf,EAAErB,EAAEkC,MAAME,IAAIf,EAAEa,KAAKE,IAAIjC,GAAGD,GAAG,EAAE,GAAGgC,KAAK,EAAEL,EAAEsC,SAAS,SAASnE,EAAEC,GAAG,OAAOiC,KAAKgC,IAAIlE,EAAEC,GAAE,EAAG,EAAE4B,EAAEuC,OAAO,SAASpE,GAAG,IAAIC,EAAEiC,KAAKmC,QAAQ,OAAOpE,EAAEqB,GAAGtB,EAAEC,CAAC,EAAE4B,EAAEwC,MAAM,WAAW,OAAOhD,EAAEa,KAAKE,IAAIF,KAAK,EAAEL,EAAEyC,SAAS,SAASrE,GAAG,OAAOD,IAAIkE,IAAIhC,KAAKE,IAAI,MAAMgC,OAAOlC,KAAKZ,IAAIiD,SAAStE,EAAE,EAAE4B,EAAEZ,aAAa,WAAW,OAAOiB,KAAK+B,IAAI,eAAe,EAAEpC,EAAE2C,eAAe,WAAW,OAAOtC,KAAK8B,GAAG,eAAe,EAAEnC,EAAEb,QAAQ,WAAW,OAAOkB,KAAK+B,IAAI,UAAU,EAAEpC,EAAE4C,UAAU,WAAW,OAAOvC,KAAK8B,GAAG,UAAU,EAAEnC,EAAEd,QAAQ,WAAW,OAAOmB,KAAK+B,IAAI,UAAU,EAAEpC,EAAE6C,UAAU,WAAW,OAAOxC,KAAK8B,GAAG,UAAU,EAAEnC,EAAEf,MAAM,WAAW,OAAOoB,KAAK+B,IAAI,QAAQ,EAAEpC,EAAE8C,QAAQ,WAAW,OAAOzC,KAAK8B,GAAG,QAAQ,EAAEnC,EAAEhB,KAAK,WAAW,OAAOqB,KAAK+B,IAAI,OAAO,EAAEpC,EAAE+C,OAAO,WAAW,OAAO1C,KAAK8B,GAAG,OAAO,EAAEnC,EAAEX,MAAM,WAAW,OAAOgB,KAAK+B,IAAI,QAAQ,EAAEpC,EAAEgD,QAAQ,WAAW,OAAO3C,KAAK8B,GAAG,QAAQ,EAAEnC,EAAEjB,OAAO,WAAW,OAAOsB,KAAK+B,IAAI,SAAS,EAAEpC,EAAEiD,SAAS,WAAW,OAAO5C,KAAK8B,GAAG,SAAS,EAAEnC,EAAElB,MAAM,WAAW,OAAOuB,KAAK+B,IAAI,QAAQ,EAAEpC,EAAEkD,QAAQ,WAAW,OAAO7C,KAAK8B,GAAG,QAAQ,EAAExC,CAAC,CAAhtG,GAAotG,OAAO,SAAStB,EAAEC,EAAEC,GAAGJ,EAAEI,EAAEH,EAAEG,IAAI4E,SAAS5E,EAAE6E,SAAS,SAASjF,EAAEC,GAAG,IAAIC,EAAEE,EAAEgE,SAAS,OAAO/C,EAAErB,EAAE,CAACsB,GAAGpB,GAAGD,EAAE,EAAEG,EAAE8E,WAAW/D,EAAE,IAAId,EAAEF,EAAE2C,UAAUoB,IAAI5D,EAAEH,EAAE2C,UAAUqB,SAAShE,EAAE2C,UAAUoB,IAAI,SAASlE,EAAEC,GAAG,OAAOkB,EAAEnB,KAAKA,EAAEA,EAAEwE,kBAAkBnE,EAAE8E,KAAKjD,KAAP7B,CAAaL,EAAEC,EAAE,EAAEE,EAAE2C,UAAUqB,SAAS,SAASnE,EAAEC,GAAG,OAAOkB,EAAEnB,KAAKA,EAAEA,EAAEwE,kBAAkBlE,EAAE6E,KAAKjD,KAAP5B,CAAaN,EAAEC,EAAE,CAAC,CAAC,CAA56IA,E,GCC/EmF,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaxF,QAGrB,IAAID,EAASsF,EAAyBE,GAAY,CAGjDvF,QAAS,CAAC,GAOX,OAHA0F,EAAoBH,GAAUI,KAAK5F,EAAOC,QAASD,EAAQA,EAAOC,QAASsF,GAGpEvF,EAAOC,OACf,CCrBAsF,EAAoBnF,EAAKJ,IACxB,IAAI6F,EAAS7F,GAAUA,EAAO8F,WAC7B,IAAO9F,EAAiB,QACxB,IAAM,EAEP,OADAuF,EAAoB3E,EAAEiF,EAAQ,CAAElF,EAAGkF,IAC5BA,CAAM,ECLdN,EAAoB3E,EAAI,CAACX,EAAS8F,KACjC,IAAI,IAAIC,KAAOD,EACXR,EAAoB/E,EAAEuF,EAAYC,KAAST,EAAoB/E,EAAEP,EAAS+F,IAC5ExD,OAAOyD,eAAehG,EAAS+F,EAAK,CAAEE,YAAY,EAAM/B,IAAK4B,EAAWC,IAE1E,ECNDT,EAAoB/E,EAAI,CAAC2F,EAAKC,IAAU5D,OAAOQ,UAAUqD,eAAeT,KAAKO,EAAKC,GCClFb,EAAoBhF,EAAKN,IACH,oBAAXqG,QAA0BA,OAAOC,aAC1C/D,OAAOyD,eAAehG,EAASqG,OAAOC,YAAa,CAAEC,MAAO,WAE7DhE,OAAOyD,eAAehG,EAAS,aAAc,CAAEuG,OAAO,GAAO,E,mCCL9D,MAAM,EAA+BC,OAAOC,KAAKC,OAAO,iBCAlD,EAA+BF,OAAOC,KAAKC,OAAO,a,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,iC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,kC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,2B,aCAzC,SAASC,EAAgBpG,EAAGc,GAKzC,OAJAsF,EAAkBpE,OAAOqE,eAAiBrE,OAAOqE,eAAexB,OAAS,SAAyB7E,EAAGc,GAEnG,OADAd,EAAEsG,UAAYxF,EACPd,CACT,EACOoG,EAAgBpG,EAAGc,EAC5B,CCLe,SAASyF,EAAeC,EAAUC,GAC/CD,EAAShE,UAAYR,OAAO0E,OAAOD,EAAWjE,WAC9CgE,EAAShE,UAAUmE,YAAcH,EACjCH,EAAeG,EAAUC,EAC3B,CCLe,SAASG,EAA8BC,EAAQC,GAC5D,GAAc,MAAVD,EAAgB,MAAO,CAAC,EAC5B,IAEIrB,EAAK3F,EAFLkH,EAAS,CAAC,EACVC,EAAahF,OAAOC,KAAK4E,GAE7B,IAAKhH,EAAI,EAAGA,EAAImH,EAAWC,OAAQpH,IACjC2F,EAAMwB,EAAWnH,GACbiH,EAASI,QAAQ1B,IAAQ,IAC7BuB,EAAOvB,GAAOqB,EAAOrB,IAEvB,OAAOuB,CACT,CCXA,MAAM,EAA+Bd,OAAOC,KAAKC,OAAO,oB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,sC,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,6B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,uB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,yB,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,4B,aCAxD,MAAM,EAA+BF,OAAOC,KAAKC,OAAO,0B,oCCQnCgB,EAAK,8DASvB,OATuB,mBACxBC,KAAA,SAAKC,GACH,MAAsCzF,KAAK0F,MAAnCC,EAAS,EAATA,UAAoBD,GAAL,EAAJE,KAAc,QAEjC,OACE,wBAAMD,UAAWE,IAAU,CAAC,QAAS,UAAU7F,KAAK0F,MAAME,KAAQD,KAAiBD,GAChFD,EAAMK,SAGb,EAAC,EATuB,CAASC,KCRnC,MAAM,EAA+B1B,OAAOC,KAAKC,OAAO,2B,aCQnCyB,EAAe,uFA8BjC,OA9BiC,EAClCL,UAAA,WACE,MAAO,yBACT,EAAC,EAEDM,MAAA,WACE,OAAOC,IAAAA,WAAAA,MAAqB,0DAA0DlG,KAAK0F,MAAMS,KAAKC,YACxG,EAAC,EAEDC,QAAA,WACE,OACE,SAAKV,UAAU,cACb,SAAKA,UAAU,wBACb,SAAKA,UAAU,cACb,eAAQO,IAAAA,WAAAA,MAAqB,qEAC7B,SAAKP,UAAU,4CACb,4BAAkB3F,KAAK0F,MAAMS,KAAKG,aAGtC,SAAKX,UAAU,cACb,eAAQO,IAAAA,WAAAA,MAAqB,oEAC7B,SAAKP,UAAU,2CACb,cACE,aAAM3F,KAAK0F,MAAMS,KAAKI,cAOpC,EAAC,EA9BiC,CAA0EC,K,gBCIzFC,EAAU,8DA0B5B,OA1B4B,mBAC7BjB,KAAA,WAAO,WACL,OACE,SAAKG,UAAU,0CACb,EAAC,IAAM,CACLe,UAAW1G,KAAK0F,MAAMiB,KAAKC,UAC3BX,MAAOC,IAAAA,WAAAA,MAAqB,2CAC5BW,QAAS,kBAAM,EAAKnB,MAAMiB,KAAKG,MAAM,EACrCC,KAAK,sBACLpB,UAAU,6CAEZ,UAAMA,UAAU,2BACbO,IAAAA,WAAAA,MAAqB,2CAA4C,CAChEc,QAAShH,KAAK0F,MAAMiB,KAAKM,aAAe,EACxCC,MAAOlH,KAAK0F,MAAMiB,KAAKQ,mBAG3B,EAAC,IAAM,CACLT,UAAW1G,KAAK0F,MAAMiB,KAAKS,UAC3BnB,MAAOC,IAAAA,WAAAA,MAAqB,2CAC5BW,QAAS,kBAAM,EAAKnB,MAAMiB,KAAKU,MAAM,EACrCN,KAAK,uBACLpB,UAAU,6CAIlB,EAAC,EA1B4B,CAASI,K,sBCUnBuB,EAAY,uFA+L9B,OA/L8B,EAC/BC,OAAA,SAAO9B,GACL,YAAM8B,OAAM,UAAC9B,GAEbS,IAAAA,eAAAA,MAAAA,MACF,EAAC,EAEDV,KAAA,WACE,OACE,aAASgC,GAAG,8BAA8B7B,UAAU,yDAClD,SAAKA,UAAU,uEACb,SAAKA,UAAU,aACb,QAAIA,UAAU,kBAAkBO,IAAAA,WAAAA,MAAqB,sDACrD,EAAC,IAAM,CACLP,UAAU,sBACVoB,KAAK,kBACLF,QAAS,kBAAMX,IAAAA,eAAAA,MAAAA,MAA+B,EAC9C,aAAYA,IAAAA,WAAAA,MAAqB,2DAIvC,SAAKP,UAAU,aAAa3F,KAAKyH,cAGvC,EAAC,EAEDC,QAAA,WAAU,WACFC,EAAQ,IAAIC,KAuGlB,OArGAD,EAAM3F,IACJ,YACA,CACE6F,MAAOC,IAAY5B,IAAAA,WAAAA,MAAqB,kEACxCG,QAAS,SAACF,GAAI,OACZ,SAAKR,UAAU,uCACb,UAAMA,UAAU,4CAA4C,EAAKoC,cAAc5B,EAAKC,cACpF,UAAMT,UAAU,4CACbO,IAAAA,WAAAA,MAAqB,0DAA0DC,EAAKC,cAEnF,GAGV,IAGFuB,EAAM3F,IACJ,UACA,CACE6F,MAAOC,IAAY5B,IAAAA,WAAAA,MAAqB,gEACxCG,QAAS,SAACF,GAAS,MACX6B,EAA8B9B,IAAAA,KAAAA,WAAkC,OAAf,EAACC,EAAI,gBAAU,EAAd,EAAgBvE,QAAQ,gCAAiC,MAEjH,OAAOoG,EACL,SAAKrC,UAAU,qCACb,SAAKA,UAAU,uDAAuDsC,MAAOD,EAAUjB,QAClFiB,EAAUjB,MAAQA,IAAKiB,EAAUjB,KAAKmB,OAE3C,SAAKvC,UAAU,6CACb,UAAMA,UAAU,2CAA2CqC,EAAUG,MAAM,oBAAoBlC,OAC/F,UAAMN,UAAU,0CAA0CQ,EAAI,aAIlEA,EAAI,SAER,GAEF,IAGFwB,EAAM3F,IACJ,SACA,CACE6F,MAAOC,IAAY5B,IAAAA,WAAAA,MAAqB,+DACxCG,QAAS,SAACF,GAAI,OACZ,EAACZ,EAAK,CACJI,UAAU,mCACVC,KAAM,CAAEwC,QAAS,UAAWC,QAAS,QAASC,QAAS,UAAWC,QAAS,WAAYpC,EAAKqC,WAE3FtC,IAAAA,WAAAA,MAAqB,wDAAwDC,EAAKqC,UAC7E,GAGZ,IAGFb,EAAM3F,IACJ,cACA,CACE6F,MAAOC,IAAY5B,IAAAA,WAAAA,MAAqB,qEACxCG,QAAS,SAACF,GAAI,OACXA,EAAKsC,YAGJ,EAAC,IAAO,CAACC,KAASC,MAAMxC,EAAKsC,aAAa1I,OAAO,UAAS,KAAK4I,MAAMxC,EAAKyC,cAAc7I,OAAO,WAC7F,cCnHC,SAAuB8I,EAAaC,GACjDH,MAAMI,OAAOhG,KAEb,IAAMiG,EAAeL,MAAMG,GAAKG,KAAKJ,GAErC,OAAOF,MAAM5F,SAASiG,GAAc5G,UACtC,CD6GqB8G,CAAc/C,EAAKsC,YAAatC,EAAKyC,gBAH9C1C,IAAAA,WAAAA,MAAqB,gEAKtB,GAEL,IAGFyB,EAAM3F,IACJ,aACA,CACE6F,MAAOC,IAAY5B,IAAAA,WAAAA,MAAqB,yEACxCG,QAAS,SAACF,GAAI,OAAK,cAAOA,EAAKgD,iBAAwB,GAEzD,IAGFxB,EAAM3F,IACJ,UACA,CACE6F,MAAOC,IAAY5B,IAAAA,WAAAA,MAAqB,gEACxCG,QAAS,SAACF,GAAI,OACZ,EAAC,IAAM,CACLR,UAAU,0CACVoB,KAAK,kBACL,aAAYb,IAAAA,WAAAA,MAAqB,+DAGjCW,QAAS,kBAAMX,IAAAA,MAAAA,KAAeF,EAAiB,CAAEG,KAAAA,GAAO,GACxD,EAEJR,UAAW,kBAEb,IAGKgC,CACT,EAAC,EAEDF,WAAA,WACE,IAAM2B,EAAQlD,IAAAA,eAAAA,MAAAA,WAEd,IAAKkD,EACH,OAAO,EAAC,IAAgB,MAG1B,GAAIA,IAAUA,EAAM/D,OAClB,OAAO,QAAIM,UAAU,2BAA2BO,IAAAA,WAAAA,MAAqB,qDAGvE,IAAMwB,EAAU1H,KAAK0H,UAErB,OACE,WACE,WAAO/B,UAAU,mCACf,eACE,YACG+B,EAAQ2B,UAAU3I,KAAI,SAAC4I,EAAMC,GAAK,OACjC,QAAI3F,IAAK2F,GAAQD,EAAKzB,MAAW,MAIvC,eACGuB,EAAM1I,KAAI,SAACyF,EAAMoD,GAAK,OACrB,QAAI3F,IAAK2F,GACN7B,EAAQ2B,UAAU3I,KAAI,SAAC4I,EAAMC,GACSD,EAA7BzB,MAAR,IAAexB,EAAsBiD,EAAtBjD,QAAYX,EAAK,EAAK4D,EAAI,GAEzC,OACE,sBAAI1F,IAAK2F,GAAW7D,GACjBW,EAAQF,GAGf,IACG,MAKX,EAACM,EAAU,CAACE,KAAMT,IAAAA,eAAAA,QAGxB,EAAC,EAED6B,cAAA,SAAc3B,GACZ,OAAOW,IACL,CACEyC,aAAc,kBACdC,aAAc,cACdC,aAAc,cACdC,cAAe,cACfC,kBAAmB,kBACnBC,iBAAkB,eAClBC,iBAAkB,6BAClBC,QAAS,6BACT3D,GAEN,EAAC,EA/L8B,CAASL,KEtB1C,MAAM,EAA+B1B,OAAOC,KAAKC,OAAO,uB,aCEzC,SAAS,EAACrG,GACvB,IAAM8L,EAAQ9L,EAAE+L,SAASC,OAAO,GAEhC,IAAK,CAAC,2BAA4B,8BAA+B,2BAA2BC,SAASH,EAAMI,MACzG,MAAMlM,EAGR,OAAQ8L,EAAMI,MACZ,IAAK,2BACCJ,EAAMK,eACRnE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,yDAAyD8D,EAAMK,gBACvHnE,IAAAA,MAAAA,SAEAA,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,qEAE1D,MAEF,IAAK,8BACHA,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,wEACxDA,IAAAA,MAAAA,QACA,MAEF,IAAK,0BACHA,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,SAAWM,IAAAA,WAAAA,MAAqB,oEACxDA,IAAAA,MAAAA,QAEN,CCvBe,SAASoE,IACtBpE,IAAAA,MAAAA,QACA7G,EAAEkL,MAAMC,IAAItE,IAAAA,MAAU,YAAa,CAAEsB,GAAI,4BACzCtB,IAAAA,eAAAA,MAAAA,OACAuE,YAAW,WAAM,MACuC,OAAtD,EAAAC,SAASC,eAAe,iCAAxB,EAAwDC,eAAe,CAAEC,MAAO,WAClF,GAAG,IACL,CATAC,OAAOR,YAAcA,ECK0B,IAO1BS,EAAS,mGACjB,OADiB,0CAC5BC,iBAAW,IADiB,OACjB,kBAsEV,OAtEU,EAEXzD,OAAA,SAAO9B,GACL,YAAM8B,OAAM,UAAC9B,GAEbzF,KAAKgL,YAAcC,IAAO,GAC5B,EAAC,EAEDzF,KAAA,WACE,OACE,SAAKG,UAAU,uCACb,WAAOuF,QAAQ,qBAAqBhF,IAAAA,WAAAA,MAAqB,oDACzD,OAAGP,UAAU,YACVO,IAAAA,WAAAA,MAAqB,uDAAwD,CAC5EiF,UAAW,OAAGC,KAAK,yBAAuB,oBAG9C,SAAKzF,UAAU,yBACb,WAAOA,UAAU,cAAc6B,GAAG,oBAAoB6D,YAAY,sBAAsBC,KAAMtL,KAAKgL,cACnG,EAAC,IAAM,CACLrF,UAAU,SACVoB,KAAK,kBACLF,QAAS7G,KAAKuL,SAAStI,KAAKjD,MAC5BwL,QAAStF,IAAAA,eAAAA,QAAAA,UAAqC,qBAC9CQ,SAAUR,IAAAA,eAAAA,QAAAA,mBAA8C,sBAEvDA,IAAAA,WAAAA,MAAqB,qDAKhC,EAAC,EAEDuF,KAAA,WACE,MAAO,CACLC,QAAS1L,KAAKgL,cAElB,EAAC,EAEDO,SAAA,WACErF,IAAAA,eAAAA,QAAAA,WAAsC,qBACtCA,IAAAA,MAAAA,KAAeyF,KAEfzF,IAAAA,QACkD,CAC9C0F,OAAQ,OACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,8BACrC4F,KAAM,CACJL,KAAMzL,KAAKyL,UAGdM,MAAK,SAAC9B,GACL,GAAIA,EAAS+B,WACX1B,QACK,CACL,IAAM2B,EAAchC,EAASzC,GAC7BtB,IAAAA,OAAAA,KACE,CAAEN,KAAM,WACRM,IAAAA,WAAAA,MAAqB,6DAA8D,CAAE8B,UAAWiE,KAElGnB,OAAOoB,SAASd,KAAUlF,IAAAA,MAAAA,UAAoB,YAAW,eAAe+F,EACxEnB,OAAOoB,SAASC,QAClB,CACF,IAAE,MACKC,GAAa,SACX,WACPlG,IAAAA,eAAAA,QAAAA,WAAsC,MACtCA,IAAAA,MAAAA,QACA7G,EAAEgN,QACJ,GACJ,EAAC,EAvE2B,CAAStG,KCfvC,MAAM,EAA+B1B,OAAOC,KAAKC,OAAO,4B,aCiBnC+H,EAAW,mGAEF,OAFE,0CAC9Bd,SAAmB,EAAI,EACvBe,OAAwB,KAAI,EAFE,OAEF,kBAqC3B,OArC2B,EAE5B5G,UAAA,WACE,MAAO,0BACT,EAAC,EAEDM,MAAA,WACE,OAAOC,IAAAA,WAAAA,MAAqB,mDAC9B,EAAC,EAEDsG,SAAA,SAAS/G,GACP,YAAM+G,SAAQ,UAAC/G,GAEfzF,KAAKyM,eACP,EAAC,EAEDpG,QAAA,WACE,OAAO,SAAKV,UAAU,cAAc3F,KAAKwL,QAAU,EAAC,IAAgB,MAAM,SAAK7F,UAAU,wBAAwB3F,KAAKuM,QACxH,EAAC,EAEDE,cAAA,WAAsB,WACpBvG,IAAAA,QAC2B,CACvB0F,OAAQ,OACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,2BACrC4F,KAAM,CACJL,KAAM,CACJC,QAAS1L,KAAK0F,MAAK,YAIxBqG,MAAK,SAAC9B,GACL,EAAKuB,SAAU,EACf,EAAKe,OAAStC,EAASwB,KAAKiB,OAC5BrN,EAAEgN,QACJ,IAAE,MACKD,EACX,EAAC,EAvC6B,CAAkE5F,KCM7EmG,EAAa,uFAuD/B,OAvD+B,EAChCnH,KAAA,SAAKC,GAAqD,MACxD,EAA+EzF,KAAK0F,MAA5EsC,EAAS,EAATA,UAAW4E,EAAO,EAAPA,QAASC,EAAa,EAAbA,cAAeC,EAAa,EAAbA,cAAeC,EAAM,EAANA,OAAQC,EAAQ,EAARA,SAC5DC,EAAuC,OAA1B,EAAGL,EAAQ,iBAAe,EAAKA,EAAQ,kBAAoBG,EAASH,EAAQ,gBAAkB,KAEjH,OACE,SACEjH,UAAWE,IAAU,CACnB,4BAA4B,EAC5B,iCAAkCkH,EAClC,mCAAoCC,KAGtC,SAAKrH,UAAU,8CAA8CsC,MAAOD,EAAUjB,MAC3EiB,EAAUjB,KAAOA,IAAKiB,EAAUjB,KAAKmB,MAAQ,IAEhD,SAAKvC,UAAU,iCACb,SAAKA,UAAU,iCAAiCqC,EAAUG,MAAM,oBAAoBlC,OACpF,SAAKN,UAAU,oCACb,UAAMA,UAAU,4CAA4C3F,KAAKkN,QAAQN,EAAiB,UACzFK,EACC,EAAC1H,EAAK,CAACI,UAAU,0CAA0CC,KAAMgH,EAAQ,gBAAkB,UAAY,WACpG5M,KAAKkN,QAAQD,IAEd,OAGR,SAAKtH,UAAU,qCACZkH,EACC,EAAC,IAAO,CAACnE,KAAMxC,IAAAA,WAAAA,MAAqB,mDAClC,EAAC,IAAM,CACLa,KAAK,6BACLpB,UAAU,mCACVkB,QAASgG,EACT,aAAY3G,IAAAA,WAAAA,MAAqB,qDAGnC,KACH4G,EACC,EAAC,IAAO,CAACpE,KAAMxC,IAAAA,WAAAA,MAAqB,yEAClC,EAAC,IAAM,CACLa,KAAK,4BACLpB,UAAU,kDACVkB,QAAS,kBAAMX,IAAAA,MAAAA,KAAeoG,EAAa,CAAEZ,QAAS1D,EAAUE,MAAO,EACvE,aAAYhC,IAAAA,WAAAA,MAAqB,2EAGnC,MAIZ,EAAC,EAEDgH,QAAA,SAAQC,GACN,MAAO,IAAMA,EAAEvL,QAAQ,IAAK,GAC9B,EAAC,EAvD+B,CAAgEmE,KCA7EqH,EAAY,mGACpB,OADoB,0CAC/BC,iBAAW,IADoB,OACpB,kBAqGV,OArGU,EAEX9F,OAAA,SAAO9B,GACL,YAAM8B,OAAM,UAAC9B,GAEbzF,KAAKqN,YAAcrN,KAAK0F,MAAM2H,WAChC,EAAC,EAED7H,KAAA,WAEE,OACE,SAAKG,UAAU,4DACb,SAAK2H,IAAI,cAAcC,IAAKrH,IAAAA,MAAAA,UAAoB,WAAa,yDAC7D,eAAQA,IAAAA,WAAAA,MAAqB,mDAAoD,CAAEgH,QAASlN,KAAK0F,MAAM8H,WAAW,mBAClH,OAAG7H,UAAU,YAAYO,IAAAA,WAAAA,MAAqB,2DAC9C,SAAKP,UAAU,kCACb,EAAC,IAAO,CAAC+C,KAAMxC,IAAAA,WAAAA,MAAqB,4DAClC,EAAC,IAAM,CACLP,UAAU,SACVoB,KAAK,cACLF,QAAS7G,KAAKyN,OAAOxK,KAAKjD,MAAM,GAChC0G,SAAUR,IAAAA,eAAAA,QAAAA,mBAA8C,yBAEvDA,IAAAA,WAAAA,MAAqB,wDAG1B,EAAC,IAAM,CACLP,UAAU,wBACVoB,KAAK,cACLF,QAAS7G,KAAKyN,OAAOxK,KAAKjD,MAAM,GAChC0G,SAAUR,IAAAA,eAAAA,QAAAA,mBAA8C,iBAEvDA,IAAAA,WAAAA,MAAqB,uDAGzBlG,KAAKqN,YAAYK,uBAAuBrI,OACvC,SAAKM,UAAU,oFACZ3F,KAAKqN,YAAYK,uBAAuBhN,KAAI,SAACsH,GAAiB,OAC7D,EAAC2E,EAAa,CACZ3E,UAAW9B,IAAAA,KAAAA,WAAoB8B,EAAUpG,QAAQ,UAAW,IAAIA,QAAQ,cAAe,IAAIA,QAAQ,IAAK,MACxGgL,QAAS,CAAC,EACVC,cAAe,KACfG,UAAU,GACV,KAGJ,KACyB,YAA5BhN,KAAKqN,YAAY7E,OAChB,EAAC,IAAK,CACJ5C,KAAK,QACLD,UAAU,qCACVgI,aAAa,EACbC,SAAU,CACR,EAAC,IAAM,CACLjI,UAAU,iEACVoB,KAAK,yBACLF,QAAS,kBAAMX,IAAAA,MAAAA,KAAeoG,EAAa,CAAEZ,QAAS,eAAgB,GAErExF,IAAAA,WAAAA,MAAqB,6DAI1B,OAAGP,UAAU,2CACVO,IAAAA,WAAAA,MAAqB,6DAGxB,KAGV,EAAC,EAEDuH,OAAA,SAAOI,GAAiB,WACtB3H,IAAAA,eAAAA,QAAAA,WAAsC2H,EAAS,uBAAyB,gBACxE3H,IAAAA,MAAAA,KAAeyF,KAEfzF,IAAAA,QACwC,CACpC0F,OAAQ,OACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,gCACrC4F,KAAM,CACJL,KAAM,CAAEoC,OAAAA,MAGX9B,MAAK,SAAC9B,GACO,MAARA,GAAAA,EAAU+B,WACZ1B,KAEApE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,WAAaM,IAAAA,WAAAA,MAAqB,mDAC1D4E,OAAOoB,SAASC,SAEpB,IAAE,MACKC,GAAa,OACb,SAAClO,GAAoB,UAC1BgI,IAAAA,MAAAA,QACA,EAAKmH,YAAY7E,OAAS,UAC1B,EAAK6E,YAAYK,uBAAmC,OAAb,EAAGxP,EAAE+L,WAAgB,OAAR,EAAV,EAAYC,SAAa,OAAP,EAAlB,EAAoB4D,YAAV,EAAV,EAA2BC,uBACvE,IAAE,SACO,WACP7H,IAAAA,eAAAA,QAAAA,WAAsC,MACtC7G,EAAEgN,QACJ,GACJ,EAAC,EAtG8B,CAA0DtG,KCvB5E,SAASiI,IAYtB,OAXAA,EAAW5N,OAAO6N,OAAS7N,OAAO6N,OAAOhL,OAAS,SAAUkC,GAC1D,IAAK,IAAIlH,EAAI,EAAGA,EAAIiQ,UAAU7I,OAAQpH,IAAK,CACzC,IAAIgH,EAASiJ,UAAUjQ,GACvB,IAAK,IAAI2F,KAAOqB,EACV7E,OAAOQ,UAAUqD,eAAeT,KAAKyB,EAAQrB,KAC/CuB,EAAOvB,GAAOqB,EAAOrB,GAG3B,CACA,OAAOuB,CACT,EACO6I,EAASG,MAAMnO,KAAMkO,UAC9B,CCbA,SAASE,GAAkBjJ,EAAQkJ,GACjC,IAAK,IAAIpQ,EAAI,EAAGA,EAAIoQ,EAAMhJ,OAAQpH,IAAK,CACrC,IAAIqQ,EAAaD,EAAMpQ,GACvBqQ,EAAWxK,WAAawK,EAAWxK,aAAc,EACjDwK,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjDpO,OAAOyD,eAAesB,EAAQmJ,EAAW1K,IAAK0K,EAChD,CACF,CACe,SAASG,GAAaC,EAAaC,EAAYC,GAM5D,OALID,GAAYP,GAAkBM,EAAY9N,UAAW+N,GACrDC,GAAaR,GAAkBM,EAAaE,GAChDxO,OAAOyD,eAAe6K,EAAa,YAAa,CAC9CF,UAAU,IAELE,CACT,CCOe,SAASG,GAAS9K,GAC/B,IAAM6B,SAAc7B,EACpB,MAAgB,aAAT6B,GAAiC,WAATA,KAAuB7B,CACxD,CC1BkC,IAQ5B+K,GAIJ,SAAYzI,EAAY0I,GAAkB,KAH1C1I,aAAO,OACP0I,cAAQ,EAGN/O,KAAKqG,QAAUA,EACfrG,KAAK+O,SAAWA,CAClB,EAOmBnH,GAAQ,6BAIjBoH,OAAkC,CAAC,CAAC,mBAkB7C,OAED,EAGAC,QAAA,WACE,OAA2C,IAApC7O,OAAOC,KAAKL,KAAKgP,QAAQ3J,MAClC,EAEA,EAGA6J,IAAA,SAAItL,GACF,OAAOxD,OAAOC,KAAKL,KAAKgP,QAAQ7E,SAASvG,EAC3C,EAEA,EAGA7B,IAAA,SAAI6B,GACF,OAAO5D,KAAKgP,OAAOpL,GAAKyC,OAC1B,EAEA,EAGA8I,YAAA,SAAYvL,GACV,OAAO5D,KAAKgP,OAAOpL,GAAKmL,QAC1B,EAEA,EAQA/M,IAAA,SAAI4B,EAAayC,EAAY0I,GAG3B,YAH2C,IAAhBA,IAAAA,EAAmB,GAC9C/O,KAAKgP,OAAOpL,GAAO,IAAIkL,GAAKzI,EAAS0I,GAE9B/O,IACT,EAGA,EAuBA4B,QAAA,SAAQgC,EAAayC,EAA0B0I,GAC7C,YADoC,IAAjB1I,IAAAA,EAAoB,WAA6B,IAAvB0I,IAAAA,EAA0B,MAClE/O,KAAKkP,IAAItL,IAEE,OAAZyC,IACFrG,KAAKgP,OAAOpL,GAAKyC,QAAUA,GAGZ,OAAb0I,IACF/O,KAAKgP,OAAOpL,GAAKmL,SAAWA,GAGvB/O,MAVoBA,IAW7B,EAEA,EAkBAoP,WAAA,SAAWxL,EAAayC,GACtB,IAAKrG,KAAKkP,IAAItL,GACZ,MAAM,IAAIyL,MAAM,+CAAgDzL,EAAG,qBAIrE,OAAO5D,KAAK4B,QAAQgC,EAAKyC,EAC3B,EAEA,EAkBAiJ,YAAA,SAAY1L,EAAamL,GACvB,IAAK/O,KAAKkP,IAAItL,GACZ,MAAM,IAAIyL,MAAM,gDAAiDzL,EAAG,qBAKtE,OAFA5D,KAAKgP,OAAOpL,GAAKmL,SAAWA,EAErB/O,IACT,EAEA,EAKAuP,OAAA,SAAO3L,GAGL,cAFO5D,KAAKgP,OAAOpL,GAEZ5D,IACT,EAEA,EAMAwP,MAAA,SAAMC,GAAqC,WASzC,OARArP,OAAOC,KAAKoP,EAAUT,QAAQ1O,SAAQ,SAACsD,GACrC,IAAM8L,EAAMD,EAAUT,OAAOpL,GAEzB8L,aAAeZ,KACjB,EAAKE,OAAOpL,GAAO8L,EAEvB,IAEO1P,IACT,EAEA,EAkCAqJ,QAAA,SAAQsG,GAA+E,WAgBrF,YAhB6B,IAAvBA,IAAAA,GAA0B,GACPvP,OAAOC,KAAKL,KAAKgP,QAAQtO,KAAI,SAACkD,EAAK3F,GAC1D,IAAMqL,EAAO,EAAK0F,OAAOpL,GAEzB,OAAK+L,GAAkBd,GAASvF,EAAKjD,SAE5B,KACFiD,EAAI,CACPjD,QAAS,EAAKuJ,uBAAuBf,GAASvF,EAAKjD,SAAWiD,EAAKjD,QAAUjG,OAAOkJ,EAAKjD,SAAUzC,KAI9F,KAAK0F,EAEhB,IAEauG,MAAK,SAACtR,EAAGuR,GAAC,OAAKA,EAAEf,SAAWxQ,EAAEwQ,QAAQ,IAAErO,KAAI,SAAC4I,GAAI,OAAKA,EAAKjD,OAAO,GACjF,EAEA,EAqBA0J,SAAA,WAAyD,WACvD,OAAO3P,OAAOC,KAAKL,KAAKgP,QAAQnO,QAAO,SAACH,EAAKkD,GAC3C,IAAMG,EAAM,CACVsC,QAAS,EAAKtE,IAAI6B,GAClBoM,SAAUpM,EACVmL,SAAU,EAAKI,YAAYvL,IAK7B,OAFAlD,EAAIkD,GAAOG,EAEJrD,CACT,GAAG,CAAC,EACN,EAEA,EAaQkP,uBAAR,SAAiDvJ,EAAYzC,GAC3D,OAAO,IAAIqM,MAAM5J,EAAS,CACxBtE,IAAG,SAACoD,EAAQ+K,EAAUC,GACpB,MAAiB,aAAbD,EAAgCtM,EAE7BwM,QAAQrO,IAAIoD,EAAQ+K,EAAUC,EACvC,EACA3F,IAAG,SAACrF,EAAQ+K,EAAU9L,EAAO+L,GAC3B,GAAY,OAARvM,GAA6B,aAAbsM,EAClB,MAAM,IAAIb,MAAM,oCAGlB,OAAOe,QAAQ5F,IAAIrF,EAAQ+K,EAAU9L,EAAO+L,EAC9C,GAEJ,EAAC,uBAjSD,WACE,OAAO,IAAIF,MAAMjQ,KAAKgP,OAAQ,CAC5BxE,IAAG,WAED,OADA6F,QAAQC,KAAK,+CACN,CACT,GAEJ,KAAC,EAtB0B,GCPRC,GAAO,uFA6GzB,OA7GyB,EAC1B/K,KAAA,WACE,IAAMlB,EAAO4B,IAAAA,eAAAA,QAAAA,WAEb,MAAO,CACL,SAAKP,UAAU,cACb,eAAQO,IAAAA,WAAAA,MAAqB,uDAC7B,OAAGP,UAAU,YAAYO,IAAAA,WAAAA,MAAqB,sDAC7ClG,KAAKwQ,sBACN,SAAK7K,UAAU,kCAAkC3F,KAAKyQ,eAAepH,WACpErJ,KAAK0Q,wBAERpM,GAAQA,EAAI,QAAS,gBACnB,EAAC8I,EAAY,CAACI,WAAYlJ,EAAI,QAAU+I,YAAanH,IAAAA,eAAAA,QAAAA,cAAAA,QACnD,KAER,EAAC,EAEDsK,oBAAA,WAAsB,MACpB,OAC6C,OAA1C,EAAAtK,IAAAA,eAAAA,QAAAA,sBAA0C,EAA1C,EAA4CyK,YAC3C,OAAGhL,UAAU,gCACX,UAAMA,UAAU,sCACbO,IAAAA,WAAAA,MAAqB,gEAExB,UAAMP,UAAU,sCAAsCiL,IAAU1K,IAAAA,eAAAA,QAAAA,gBAAAA,cAGpE,IAEJ,EAAC,EAEDwK,qBAAA,WACE,IAAMG,EAAQ3K,IAAAA,eAAAA,QAEd,OAAIA,IAAAA,eAAAA,QAAAA,YAEA,SAAKP,UAAU,6BACb,EAAC,IAAgB,OAKjBkL,EAAMC,iBAAiBzL,QAAUwL,EAAMrD,WAW3C,SAAK7H,UAAU,6BACb,SAAKA,UAAU,kCACZkL,EAAMrD,WACL,EAACb,EAAa,CACZ3E,UAAW6I,EAAMrD,WAAWxF,UAC5B4E,QAASiE,EAAMrD,WAAU,QACzBT,QAAQ,EACRF,cAAe,kBAAMgE,EAAME,iBAAiB,EAC5CjE,cAAe+D,EAAMG,cAAcC,kBAAkB9G,SAAS,iBAE9D,KACH0G,EAAMC,iBAAiBpQ,KAAI,SAACsH,GAAoB,OAC/C,EAAC2E,EAAa,CACZ3E,UAAWA,EACX4E,QAASiE,EAAMK,eAAelJ,EAAUR,IACxCqF,cAAe,kBAAMgE,EAAMM,gBAAgBnJ,EAAU,EACrD8E,cAAe+D,EAAMG,cAAcC,kBAAkB9G,SAASnC,EAAUE,OACxE,MA1BN,SAAKvC,UAAU,6BACb,EAAC,IAAK,CAACC,KAAK,UAAU+H,aAAa,GAChCzH,IAAAA,WAAAA,MAAqB,oDA6BhC,EAAC,EAEDuK,aAAA,WACE,IAAM9I,EAAQ,IAAIC,GA6BlB,OA3BAD,EAAM3F,IACJ,cACA,EAAC,IAAM,CACL2D,UAAU,SACVoB,KAAK,kBACLF,QAAS,kBAAMX,IAAAA,eAAAA,QAAAA,iBAA4C,EAC3DsF,QAAStF,IAAAA,eAAAA,QAAAA,UAAqC,SAC9CQ,SAAUR,IAAAA,eAAAA,QAAAA,mBAA8C,UAEvDA,IAAAA,WAAAA,MAAqB,2DAExB,KAGFyB,EAAM3F,IACJ,eACA,EAAC,IAAM,CACL2D,UAAU,SACVoB,KAAK,cACLF,QAAS,kBAAMX,IAAAA,eAAAA,QAAAA,gBAA2C,EAC1DsF,QAAStF,IAAAA,eAAAA,QAAAA,UAAqC,iBAC9CQ,SAAUR,IAAAA,eAAAA,QAAAA,mBAA8C,kBAEvDA,IAAAA,WAAAA,MAAqB,4DAInByB,CACT,EAAC,EA7GyB,CAAS5B,KCNhBqL,GAAc,uFA6BhC,OA7BgC,EACjC7J,OAAA,SAAO9B,GACL,YAAM8B,OAAM,UAAC9B,EACf,EAAC,EAEDD,KAAA,WACE,OACE,SAAKG,UAAU,2DACb,SAAKA,UAAU,oCACb,SAAKA,UAAU,aACb,QAAIA,UAAU,kBAAkBO,IAAAA,WAAAA,MAAqB,0DAGzD,SAAKP,UAAU,aACZO,IAAAA,KAAAA,wCACC,WACE,EAAC6E,EAAS,MACV,EAACwF,GAAO,OAGV,SAAK5K,UAAU,cACb,EAAC,IAAK,CAACC,KAAK,UAAU+H,aAAa,GAChCzH,IAAAA,WAAAA,MAAqB,oDAOpC,EAAC,EA7BgC,CAASH,KCDvBsL,GAAY,8DAe9B,OAf8B,mBAC/BC,SAAA,SAAS7L,GACP,IAAMkC,EAAQ,EAAH,UAAS2J,SAAQ,UAAC7L,GAY7B,OAVAkC,EAAM2H,YAAY,UAAW,IAE7B3H,EAAM3F,IAAI,UAAW,EAACoP,GAAc,MAAK,GAErCG,SAASrL,IAAAA,KAAAA,SAAAA,uCACXyB,EAAM3F,IAAI,QAAS,EAACsF,EAAY,MAAK,GAGvCK,EAAM2H,YAAY,cAAe,GAE1B3H,CACT,EAAC,EAf8B,CAAS6J,KCR1C,MAAM,GAA+BnN,OAAOC,KAAKC,OAAO,gB,eCAlDkN,GAAa,CAClB,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAGKC,GAAe,CACpB,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGKC,GAAY,CACjB,IACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QAGKC,GAAc,CACnB,IACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SASKC,GAAiB,SAACC,EAAQ5P,EAAQ6P,GACvC,IAAIC,EAASF,EAOb,MANsB,iBAAX5P,GAAuB+P,MAAMC,QAAQhQ,GAC/C8P,EAASF,EAAOD,eAAe3P,EAAQ6P,IAClB,IAAX7P,QAA+BoB,IAAZyO,IAC7BC,EAASF,EAAOD,oBAAevO,EAAWyO,IAGpCC,CACR,EClDqBG,GAAI,uFAmCtB,OAnCsB,EACvB3J,OAAA,WACE,OAAO4J,KAAAA,UAA+D,UAAU5O,KAAKxD,KACvF,EAAC,EAEDoG,UAAA,WACE,OAAOgM,KAAAA,UAAgC,aAAa5O,KAAKxD,KAC3D,EAAC,EAEDsG,QAAA,WACE,OAAO8L,KAAAA,UAAwB,WAAW5O,KAAKxD,KACjD,EAAC,UAED,WACE,OAAOoS,KAAAA,UAAwB,WAAW5O,KAAKxD,KACjD,EAAC,EAEDuG,OAAA,WACE,OAAO6L,KAAAA,UAAwB,UAAU5O,KAAKxD,KAChD,EAAC,EAEDqS,UAAA,WACE,OAAOD,KAAAA,UAAgB,YAAaA,KAAAA,eAAqB5O,KAAKxD,KAChE,EAAC,EAEDyI,UAAA,WACE,OAAO2J,KAAAA,UAA8B,YAAaA,KAAAA,eAAqB5O,KAAKxD,KAC9E,EAAC,EAED4I,WAAA,WACE,OAAOwJ,KAAAA,UAA8B,aAAcA,KAAAA,eAAqB5O,KAAKxD,KAC/E,EAAC,EAEDmJ,eAAA,WACE,ODkBW,SAAqB2I,EAAQC,GAC3C,IAAKpR,OAAO2R,SAASR,GACpB,MAAM,IAAIS,UAAU,wCAAwCT,EAAM,KAAKA,GASxE,IAAMU,GANNT,EAAU,GACTU,MAAM,EACNC,QAAQ,GACLX,IAGkBU,KAClBV,EAAQW,OAASd,GAAcD,GAC/BI,EAAQW,OAAShB,GAAeD,GAEpC,GAAIM,EAAQY,QAAqB,IAAXb,EACrB,MAAO,MAAMU,EAAM,GAGpB,IAOII,EAPEC,EAAaf,EAAS,EACtBgB,EAASD,EAAa,IAAOd,EAAQY,OAAS,IAAM,GAgB1D,GAdIE,IACHf,GAAUA,QAK2BxO,IAAlCyO,EAAQgB,wBACXH,EAAgB,CAACG,sBAAuBhB,EAAQgB,6BAGXzP,IAAlCyO,EAAQiB,wBACXJ,EAAgB,GAACI,sBAAuBjB,EAAQiB,uBAA0BJ,IAGvEd,EAAS,EAEZ,OAAOgB,EADcjB,GAAeC,EAAQC,EAAQ7P,OAAQ0Q,GAC7B,IAAMJ,EAAM,GAG5C,IAAMS,EAAWzT,KAAK0T,IAAI1T,KAAKE,MAAMqS,EAAQW,OAASlT,KAAK2T,IAAIrB,GAAUtS,KAAK2T,IAAI,MAAQ3T,KAAK4T,MAAMtB,GAAU,GAAIU,EAAMnN,OAAS,GAWlI,OAVAyM,GAAU,KAAJ,IAAKC,EAAQW,OAAS,KAAO,IAASO,GAEvCL,IACJd,EAASA,EAAOuB,YAAY,IAOtBP,EAJcjB,GAAelR,OAAOmR,GAASC,EAAQ7P,OAAQ0Q,GAIrC,IAFlBJ,EAAMS,EAGpB,CCvEWK,CAAmE,KAAvDlB,KAAAA,UAAwB,kBAAkB5O,KAAKxD,MACpE,EAAC,EAnCsB,CAASoS,MCTbmB,GAAU,6BACrBnK,MAAuB,KAAI,KAC3BoK,MAAQ,GAAE,KACVC,OAAS,EAAC,KACVvM,MAAQ,CAAC,mBAuDhB,OAvDgB,EAEjBwM,KAAA,SAAKC,GAA+B,aAWlC,OAVA3T,KAAKoJ,MAAQ,KACbuK,EAAS,GACPC,KAAM,GACJJ,MAAOxT,KAAKwT,MACZC,OAAQzT,KAAKyT,QACJ,OADU,EAChBE,QAAM,EAAN,EAAQC,OAEVD,GAGEzN,IAAAA,MAAAA,KAAuB,wBAAyByN,GAAU,CAAC,GAAG5H,MAAK,SAACN,GAAS,MAMlF,OALA,EAAKrC,MAAQqC,EACb,EAAKvE,MAAyB,OAApB,EAAGuE,EAAKoI,QAAQC,WAAI,EAAjB,EAAmB5M,MAEhC7H,EAAEgN,SAEKZ,CACT,GACF,EAAC,EAEDsI,SAAA,WACE,OAAO/T,KAAKoJ,KACd,EAAC,EAEDjC,cAAA,WACE,OAAO3H,KAAKC,KAAKO,KAAKkH,MAAQlH,KAAKwT,MACrC,EAAC,EAEDvM,WAAA,WACE,OAAOzH,KAAKC,KAAKO,KAAKyT,OAASzT,KAAKwT,MACtC,EAAC,EAED5M,QAAA,WACE,OAA6B,IAAtB5G,KAAKiH,YACd,EAAC,EAEDG,QAAA,WACE,OAAOpH,KAAKyT,OAASzT,KAAKwT,MAAQxT,KAAKkH,KACzC,EAAC,EAEDJ,KAAA,WACM9G,KAAK4G,YACP5G,KAAKyT,QAAUzT,KAAKwT,MACpBxT,KAAK0T,OAET,EAAC,EAEDrM,KAAA,WACMrH,KAAKoH,YACPpH,KAAKyT,QAAUzT,KAAKwT,MACpBxT,KAAK0T,OAET,EAAC,EA3D4B,GCgDVM,GAAmB,WAmBtC,aAAc,KAlBdxI,QAAwB,KAAI,KAErB0F,eAAiD,CAAC,EAAC,KACnD+C,qBAAe,OACfnD,sBAAgB,OAChBtD,WAAgC,KAcrCxN,KAAKiU,gBAAkBC,KAAKC,MAAMjO,IAAAA,KAAAA,SAAAA,6CAClClG,KAAK8Q,iBAAmB9Q,KAAKoU,uBAAuBpU,KAAKiU,iBACzDjU,KAAKwN,WAAaxN,KAAKqU,iBAAiBrU,KAAKiU,gBAC/C,CAAC,kBANA,OAMA,EAEDK,UAAA,SAAUpM,GACR,YAD0B,IAAlBA,IAAAA,EAAqB,MACrBA,GAAQlI,KAAKwL,UAAYtD,IAAWA,GAAyB,OAAjBlI,KAAKwL,OAC3D,EAAC,EAED+I,mBAAA,SAAmBrM,GACjB,OAAwB,OAAjBlI,KAAKwL,SAAoBxL,KAAKwL,UAAYtD,CACnD,EAAC,EAEDsM,WAAA,SAAWtM,GACTlI,KAAKwL,QAAUtD,CACjB,EAAC,EAEDuM,gBAAA,WAAkB,WAChBzU,KAAKwU,WAAW,SAEhBtO,IAAAA,QACmD,CAC/C0F,OAAQ,OACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,uCAEtC6F,MAAK,SAAC9B,GACAA,EAAkC+B,WACrC1B,KAEA,EAAK2J,gBAAkBhK,EACvB,EAAK6G,iBAAmB,EAAKsD,uBAAuBnK,GACpD,EAAKuD,WAAa,EAAK6G,iBAAiBpK,GACxC5K,EAAEgN,SAEN,IAAE,MACKD,GAAa,SACX,WACP,EAAKoI,WAAW,MAChBnV,EAAEgN,QACJ,GACJ,EAAC,EAED0E,gBAAA,WAAkB,WACZ2D,QAAQ5M,IAAY5B,IAAAA,WAAAA,MAAqB,sEAC3CA,IAAAA,MAAAA,KAAeyF,KACf3L,KAAKwU,WAAW,gBAEhBtO,IAAAA,QACwC,CACpC0F,OAAQ,OACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,kCAEtC6F,MAAK,SAAC9B,GACO,MAARA,GAAAA,EAAU+B,WACZ1B,KAEApE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,WAAaM,IAAAA,WAAAA,MAAqB,mDAC1D4E,OAAOoB,SAASC,SAEpB,IAAE,MACKC,GAAa,SACX,WACP,EAAKoI,WAAW,MAChBtO,IAAAA,MAAAA,QACA7G,EAAEgN,QACJ,IAEN,EAAC,EAED8E,gBAAA,SAAgBnJ,GAAsB,WACpC9B,IAAAA,MAAAA,KAAeyF,KACf3L,KAAKwU,WAAW,oBAEhBtO,IAAAA,QACwC,CACpC0F,OAAQ,QACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,+BAA+B8B,EAAUR,KAE/EuE,MAAK,SAAC9B,GACO,MAARA,GAAAA,EAAU+B,WACZ1B,KAEApE,IAAAA,OAAAA,KACE,CAAEN,KAAM,WACRM,IAAAA,WAAAA,MAAqB,4DAA6D,CAChF8B,UAAWA,EAAUG,MAAM,oBAAoBlC,SAGnD6E,OAAOoB,SAASC,SAEpB,IAAE,MACKC,GAAa,SACX,WACP,EAAKoI,WAAW,MAChBtO,IAAAA,MAAAA,QACA7G,EAAEgN,QACJ,GACJ,EAAC,EAEDsI,eAAA,WAAiB,WACfzO,IAAAA,MAAAA,KAAeyF,KACf3L,KAAKwU,WAAW,iBAEhBtO,IAAAA,QACwC,CACpC0F,OAAQ,OACRC,IAAQ3F,IAAAA,MAAAA,UAAoB,UAAS,mCAEtC6F,MAAK,SAAC9B,GACO,MAARA,GAAAA,EAAU+B,WACZ1B,KAEApE,IAAAA,OAAAA,KAAgB,CAAEN,KAAM,WAAaM,IAAAA,WAAAA,MAAqB,kEAC1D4E,OAAOoB,SAASC,SAEpB,IAAE,MACKC,GAAa,SACX,WACP,EAAKoI,WAAW,MAChBtO,IAAAA,MAAAA,QACA7G,EAAEgN,QACJ,GACJ,EAAC,EAED+H,uBAAA,SAAuBH,GAA+C,eAgBpE,OAfAjU,KAAKkR,eAAiB,CAAC,EAER,MAAf+C,GAAwB,OAAT,EAAfA,EAAiBrH,UAAkB,OAAX,EAAxB,EAA0BgI,YAA1B,EAAqCC,QAAO,SAACC,GAC3C,IAAMtN,EAAKsN,EAAgB5M,KAAKtG,QAAQ,IAAK,KAAKA,QAAQ,0BAA2B,IAE/EoG,EAAY9B,IAAAA,KAAAA,WAAoBsB,GAChCuN,EAAe,CAAC,qBAAsB,mBAAmB5K,SAAS2K,EAAgB,kBAMxF,OAJI9M,GAAa+M,IACf,EAAK7D,eAAelJ,EAAUR,IAAMsN,GAG/B9M,GAAa+M,CACtB,IAEQ3U,OAAO4U,OAAO9O,IAAAA,KAAAA,YAAqC2O,QAAO,SAAC7M,GAAoB,OAAK,EAAKkJ,eAAelJ,EAAUR,GAAG,GAC/H,EAAC,EAED6M,iBAAA,SAAiBJ,GAAqD,QAC9D3P,EAAsB,MAAf2P,GAAwB,OAAT,EAAfA,EAAiBrH,UAAkB,OAAX,EAAxB,EAA0BgI,gBAAX,EAAf,EAAqCC,QAAO,SAACC,GAA+B,MAA8B,gBAAzBA,EAAgB5M,IAAsB,IAAE4F,MAEtI,OAAKxJ,EAEE,CACLoH,QAASpH,EACT0D,UAAW,CACTR,GAAI,cACJU,KAAM,cACNgF,QAAShH,IAAAA,KAAAA,SAAAA,QACTa,KAAM,CAEJkO,gBAAiB,OAAO/O,IAAAA,KAAAA,UAAAA,GAAAA,WAAAA,QAA8C,wDAExEiC,MAAO,CACL,mBAAoB,CAClBlC,MAAO6B,IAAY5B,IAAAA,WAAAA,MAAqB,oDAd9B,IAmBpB,EAAC,+BAlLD,WACE,IAAM8K,EAAgBkD,KAAKC,MAAMjO,IAAAA,KAAAA,SAAAA,2CAQjC,OANA8K,EAAcC,gBAAkB,2BAC3BD,EAAckE,MAAMjE,gBACpBD,EAAcmE,MAAMlE,gBACpBD,EAAcoE,OAAOnE,gBAAe,EAGlCD,CACT,KAAC,EAjBqC,GCjDnBqE,GAAmB,gBAC/BC,MAAoB,IAAI/B,GAAY,KACpCgC,QAA+B,IAAIvB,EAAqB,ECUjE9N,IAAAA,aAAAA,IAAqB,0BAA0B,SAACA,GAC9CA,EAAIsP,MAAMC,OAAO,yBAA2BtD,GAE5CjM,EAAIwP,eAAiB,IAAIL,GAEzBnP,EAAIyP,cAAa,IACV,0BACJC,iBAAgB,kBACf,SAAKjQ,UAAU,cACb,EAAC,IAAK,CAACC,KAAK,UAAU+H,aAAa,GAChCzH,EAAI2P,WAAWC,MAAM,yDAEpB,IAEPF,gBAAgB,CACfG,QAAS,oCACTlO,MAAO3B,EAAI2P,WAAWC,MAAM,oDAC5BE,KAAM3W,EAAE4W,MACNnO,IACE5B,EAAI2P,WAAWC,MAAM,wDAAyD,CAC5EI,gBAAiB,+FACjBC,cAAe,iEACfC,YAAa,WAAWlQ,EAAIuF,KAAK4K,WAAU,YAC3CC,kBAAmB,uDAIzBC,SAAS,EACT3Q,KAAM,UACNc,SAAUR,EAAIuF,KAAK,6CAEpB+K,aAAanF,KAEhBtI,EAAAA,EAAAA,QAAOyI,IAAAA,UAAyB,YAAY,SAAU7J,GAAO,WACjC,2BAAtB3H,KAAKgI,UAAUR,IAAmCiP,IAAmBzW,KAAKgI,UAAUR,KAIxFG,EAAM3F,IACJ,SACA,EAAC,IAAM,CACL2D,UAAU,wBACVoB,KAAK,eACLF,QAAS,WACPX,EAAIwQ,MAAMC,KAAKhL,KAEfzF,EACG0Q,QAAqC,CACpC/K,IAAQ3F,EAAI2Q,MAAMC,UAAU,UAAS,+BAA+B,EAAK9O,UAAUR,GACnFoE,OAAQ,WAETG,MAAK,SAAC9B,GACO,MAARA,GAAAA,EAAU+B,WACZ1B,KAEApE,EAAI6Q,OAAOJ,KAAK,CAAE/Q,KAAM,WAAaM,EAAI2P,WAAWC,MAAM,8DAC1DhL,OAAOoB,SAAWhG,EAAI2Q,MAAMC,UAAU,YAE1C,IAAE,SACO,WACP5Q,EAAIwQ,MAAMM,OACZ,GACJ,GAAE,UAKR,GACF,G","sources":["webpack://@flarum/package-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/webpack/runtime/compat get default export","webpack://@flarum/package-manager/webpack/runtime/define property getters","webpack://@flarum/package-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/package-manager/webpack/runtime/make namespace object","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/package-manager/./src/admin/components/Label.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/package-manager/./src/admin/components/Pagination.tsx","webpack://@flarum/package-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/package-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/package-manager/./src/admin/components/Installer.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/package-manager/./src/admin/components/ExtensionItem.tsx","webpack://@flarum/package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/package-manager/../../../framework/core/js/src/common/utils/isObject.ts","webpack://@flarum/package-manager/../../../framework/core/js/src/common/utils/ItemList.ts","webpack://@flarum/package-manager/./src/admin/components/Updater.tsx","webpack://@flarum/package-manager/./src/admin/components/ControlSection.tsx","webpack://@flarum/package-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/package-manager/../../../node_modules/pretty-bytes/index.js","webpack://@flarum/package-manager/./src/admin/models/Task.ts","webpack://@flarum/package-manager/./src/admin/states/QueueState.ts","webpack://@flarum/package-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/package-manager/./src/admin/states/PackageManagerState.ts","webpack://@flarum/package-manager/./src/admin/index.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","// 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].call(module.exports, 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['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/ExtensionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/LoadingModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/utils/isExtensionEnabled'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","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}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import type Mithril from 'mithril';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\n\ninterface LabelAttrs extends ComponentAttrs {\n type: 'success' | 'error' | 'neutral' | 'warning';\n}\n\nexport default class Label extends Component {\n view(vnode: Mithril.Vnode) {\n const { className, type, ...attrs } = this.attrs;\n\n return (\n \n {vnode.children}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Task from '../models/Task';\n\ninterface TaskOutputModalAttrs extends IInternalModalAttrs {\n task: Task;\n}\n\nexport default class TaskOutputModal extends Modal {\n className() {\n return 'Modal--large QuickModal';\n }\n\n title() {\n return app.translator.trans(`flarum-package-manager.admin.sections.queue.operations.${this.attrs.task.operation()}`);\n }\n\n content() {\n return (\n
\n
\n
\n \n
\n $ composer {this.attrs.task.command()}\n
\n
\n
\n \n
\n \n
{this.attrs.task.output()}
\n
\n
\n
\n
\n
\n );\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport QueueState from '../states/QueueState';\n\ninterface PaginationAttrs extends ComponentAttrs {\n list: QueueState;\n}\n\n/**\n * @todo make it abstract in core for reusability.\n */\nexport default class Pagination extends Component {\n view() {\n return (\n \n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport icon from 'flarum/common/helpers/icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\n\nimport Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nimport Task, { TaskOperations } from '../models/Task';\nimport Pagination from './Pagination';\n\ninterface QueueTableColumn extends ComponentAttrs {\n label: string;\n content: (task: Task) => Mithril.Children;\n}\n\nexport default class QueueSection extends Component<{}> {\n oninit(vnode: Mithril.Vnode<{}, this>) {\n super.oninit(vnode);\n\n app.packageManager.queue.load();\n }\n\n view() {\n return (\n
\n
\n
\n

{app.translator.trans('flarum-package-manager.admin.sections.queue.title')}

\n app.packageManager.queue.load()}\n aria-label={app.translator.trans('flarum-package-manager.admin.sections.queue.refresh')}\n />\n
\n
\n
{this.queueTable()}
\n
\n );\n }\n\n columns() {\n const items = new ItemList();\n\n items.add(\n 'operation',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.operation')),\n content: (task) => (\n
\n {this.operationIcon(task.operation())}\n \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.operations.${task.operation()}`)}\n \n
\n ),\n },\n 80\n );\n\n items.add(\n 'package',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.package')),\n content: (task) => {\n const extension: Extension | null = app.data.extensions[task.package()?.replace(/(\\/flarum-|\\/flarum-ext-|\\/)/g, '-')];\n\n return extension ? (\n
\n
\n {!!extension.icon && icon(extension.icon.name)}\n
\n
\n {extension.extra['flarum-extension'].title}\n {task.package()}\n
\n
\n ) : (\n task.package()\n );\n },\n },\n 75\n );\n\n items.add(\n 'status',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.status')),\n content: (task) => (\n \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.statuses.${task.status()}`)}\n \n ),\n },\n 70\n );\n\n items.add(\n 'elapsedTime',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.elapsed_time')),\n content: (task) =>\n !task.startedAt() ? (\n app.translator.trans('flarum-package-manager.admin.sections.queue.task_just_started')\n ) : (\n \n {humanDuration(task.startedAt(), task.finishedAt())}\n \n ),\n },\n 65\n );\n\n items.add(\n 'memoryUsed',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.peak_memory_used')),\n content: (task) => {task.peakMemoryUsed()},\n },\n 60\n );\n\n items.add(\n 'details',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.details')),\n content: (task) => (\n app.modal.show(TaskOutputModal, { task })}\n />\n ),\n className: 'Table-controls',\n },\n 55\n );\n\n return items;\n }\n\n queueTable() {\n const tasks = app.packageManager.queue.getItems();\n\n if (!tasks) {\n return ;\n }\n\n if (tasks && !tasks.length) {\n return

{app.translator.trans('flarum-package-manager.admin.sections.queue.none')}

;\n }\n\n const columns = this.columns();\n\n return (\n <>\n \n \n \n {columns.toArray().map((item, index) => (\n \n ))}\n \n \n \n {tasks.map((task, index) => (\n \n {columns.toArray().map((item, index) => {\n const { label, content, ...attrs } = item;\n\n return (\n \n );\n })}\n \n ))}\n \n
{item.label}
\n {content(task)}\n
\n\n \n \n );\n }\n\n operationIcon(operation: TaskOperations): Mithril.Children {\n return icon(\n {\n update_check: 'fas fa-sync-alt',\n update_major: 'fas fa-play',\n update_minor: 'fas fa-play',\n update_global: 'fas fa-play',\n extension_install: 'fas fa-download',\n extension_remove: 'fas fa-times',\n extension_update: 'fas fa-arrow-alt-circle-up',\n why_not: 'fas fa-exclamation-circle',\n }[operation]\n );\n }\n}\n","import duration from 'dayjs/plugin/duration';\n\nexport default function humanDuration(start: Date, end: Date) {\n dayjs.extend(duration);\n\n const durationTime = dayjs(end).diff(start);\n\n return dayjs.duration(durationTime).humanize();\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));\n app.modal.close();\n } else {\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","import app from 'flarum/admin/app';\n\n// @ts-ignore\nwindow.jumpToQueue = jumpToQueue;\n\nexport default function jumpToQueue(): void {\n app.modal.close();\n m.route.set(app.route('extension', { id: 'flarum-package-manager' }));\n app.packageManager.queue.load();\n setTimeout(() => {\n document.getElementById('PackageManager-queueSection')?.scrollIntoView({ block: 'nearest' });\n }, 200);\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\n\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport { AsyncBackendResponse } from '../shims';\n\nexport interface InstallerAttrs extends ComponentAttrs {}\n\nexport type InstallerLoadingTypes = 'extension-install' | null;\n\nexport default class Installer extends Component {\n packageName!: Stream;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

\n {app.translator.trans('flarum-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com,\n })}\n

\n
\n \n \n {app.translator.trans('flarum-package-manager.admin.extensions.proceed')}\n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n app.packageManager.control.setLoading('extension-install');\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n })\n .then((response) => {\n if (response.processing) {\n jumpToQueue();\n } else {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n app.packageManager.control.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nimport errorHandler from '../utils/errorHandler';\n\ntype WhyNotResponse = {\n data: {\n reason: string;\n };\n};\n\nexport interface WhyNotModalAttrs extends IInternalModalAttrs {\n package: string;\n}\n\nexport default class WhyNotModal extends Modal {\n loading: boolean = true;\n whyNot: string | null = null;\n\n className() {\n return 'Modal--large WhyNotModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.why_not_modal.title');\n }\n\n oncreate(vnode: Mithril.VnodeDOM) {\n super.oncreate(vnode);\n\n this.requestWhyNot();\n }\n\n content() {\n return
{this.loading ? :
{this.whyNot}
}
;\n }\n\n requestWhyNot(): void {\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`,\n body: {\n data: {\n package: this.attrs.package,\n },\n },\n })\n .then((response) => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n })\n .catch(errorHandler);\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport icon from 'flarum/common/helpers/icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport { Extension } from 'flarum/admin/AdminApplication';\n\nimport { UpdatedPackage } from '../states/ControlSectionState';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate: CallableFunction;\n whyNotWarning?: boolean;\n isCore?: boolean;\n updatable?: boolean;\n isDanger?: boolean;\n}\n\nexport default class ExtensionItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs;\n const latestVersion = updates['latest-minor'] ?? (updates['latest-major'] && !isCore ? updates['latest-major'] : null);\n\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {this.version(updates['version'])}\n {latestVersion ? (\n \n ) : null}\n
\n
\n
\n {onClickUpdate ? (\n \n \n \n ) : null}\n {whyNotWarning ? (\n \n app.modal.show(WhyNotModal, { package: extension.name })}\n aria-label={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}\n />\n \n ) : null}\n
\n \n );\n }\n\n version(v: string): string {\n return 'v' + v.replace('v', '');\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Alert from 'flarum/common/components/Alert';\nimport RequestError from 'flarum/common/utils/RequestError';\n\nimport { UpdatedPackage, UpdateState } from '../states/ControlSectionState';\nimport errorHandler from '../utils/errorHandler';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport { AsyncBackendResponse } from '../shims';\nimport jumpToQueue from '../utils/jumpToQueue';\n\nexport interface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport type MajorUpdaterLoadingTypes = 'major-update' | 'major-update-dry-run';\n\nexport default class MajorUpdater extends Component {\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(): Mithril.Children {\n // @todo move Form-group--danger class to core for reuse\n return (\n
\n \"flarum\n \n

{app.translator.trans('flarum-package-manager.admin.major_updater.description')}

\n
\n \n \n {app.translator.trans('flarum-package-manager.admin.major_updater.dry_run')}\n \n \n \n {app.translator.trans('flarum-package-manager.admin.major_updater.update')}\n \n
\n {this.updateState.incompatibleExtensions.length ? (\n
\n {this.updateState.incompatibleExtensions.map((extension: string) => (\n \n ))}\n
\n ) : null}\n {this.updateState.status === 'failure' ? (\n app.modal.show(WhyNotModal, { package: 'flarum/core' })}\n >\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.why')}\n ,\n ]}\n >\n

\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.desc')}\n

\n \n ) : null}\n
\n );\n }\n\n update(dryRun: boolean) {\n app.packageManager.control.setLoading(dryRun ? 'major-update-dry-run' : 'major-update');\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`,\n body: {\n data: { dryRun },\n },\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .catch((e: RequestError) => {\n app.modal.close();\n this.updateState.status = 'failure';\n this.updateState.incompatibleExtensions = e.response?.errors?.pop()?.incompatible_extensions as string[];\n })\n .finally(() => {\n app.packageManager.control.setLoading(null);\n m.redraw();\n });\n }\n}\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/**\n * Returns if the passed value is an object.\n *\n * In this context, \"object\" refers to **any non-primitive value**, including\n * arrays, function, maps, dates, and more.\n *\n * @example\n * isObject({}); // true\n * @example\n * isObject([]); // true\n * @example\n * isObject(function () {}); // true\n * @example\n * isObject(Object(1)); // true\n * @example\n * isObject(null); // false\n * @example\n * isObject(1); // false\n * @example\n * isObject(\"hello world\"); // false\n *\n * @see https://github.com/jashkenas/underscore/blob/943977e34e2279503528a71ddcc2dd5f96483945/underscore.js#L87-L91\n */\nexport default function isObject(obj: unknown): obj is object {\n const type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","import isObject from './isObject';\n\nexport interface IItemObject {\n content: T;\n itemName: string;\n priority: number;\n}\n\nclass Item {\n content: T;\n priority: number;\n\n constructor(content: T, priority: number) {\n this.content = content;\n this.priority = priority;\n }\n}\n\n/**\n * The `ItemList` class collects items and then arranges them into an array\n * by priority.\n */\nexport default class ItemList {\n /**\n * The items in the list.\n */\n protected _items: Record> = {};\n\n // TODO: [Flarum 2.0] Remove `.items` getter.\n /**\n * A **read-only copy** of items in the list.\n *\n * We don't allow adding new items to the ItemList via setting new properties,\n * nor do we allow modifying existing items directly.\n *\n * @deprecated Use {@link ItemList.toObject} instead.\n */\n get items(): DeepReadonly>> {\n return new Proxy(this._items, {\n set() {\n console.warn('Modifying `ItemList.items` is not allowed.');\n return false;\n },\n });\n }\n\n /**\n * Check whether the list is empty.\n */\n isEmpty(): boolean {\n return Object.keys(this._items).length === 0;\n }\n\n /**\n * Check whether an item is present in the list.\n */\n has(key: string): boolean {\n return Object.keys(this._items).includes(key);\n }\n\n /**\n * Get the content of an item.\n */\n get(key: string): T {\n return this._items[key].content;\n }\n\n /**\n * Get the priority of an item.\n */\n getPriority(key: string): number {\n return this._items[key].priority;\n }\n\n /**\n * Add an item to the list.\n *\n * @param key A unique key for the item.\n * @param content The item's content.\n * @param priority The priority of the item. Items with a higher priority\n * will be positioned before items with a lower priority.\n */\n add(key: string, content: T, priority: number = 0): this {\n this._items[key] = new Item(content, priority);\n\n return this;\n }\n\n // TODO: [Flarum 2.0] Remove deprecated `.replace()` method.\n /**\n * Replace an item and/or priority in the list, only if it is already present.\n *\n * If `content` or `priority` are `null`, these values will not be replaced.\n *\n * If the provided `key` is not present, nothing will happen.\n *\n * @deprecated Please use the {@link ItemList.setContent} and {@link ItemList.setPriority}\n * methods to replace items and their priorities. This method will be removed in Flarum 2.0.\n *\n * @param key The key of the item in the list\n * @param content The item's new content\n * @param priority The item's new priority\n *\n * @example Replace priority and not content.\n * items.replace('myItem', null, 10);\n *\n * @example Replace content and not priority.\n * items.replace('myItem',

My new value.

);\n *\n * @example Replace content and priority.\n * items.replace('myItem',

My new value.

, 10);\n */\n replace(key: string, content: T | null = null, priority: number | null = null): this {\n if (!this.has(key)) return this;\n\n if (content !== null) {\n this._items[key].content = content;\n }\n\n if (priority !== null) {\n this._items[key].priority = priority;\n }\n\n return this;\n }\n\n /**\n * Replaces an item's content, if the provided item key exists.\n *\n * If the provided `key` is not present, an error will be thrown.\n *\n * @param key The key of the item in the list\n * @param content The item's new content\n *\n * @example Replace item content.\n * items.setContent('myItem',

My new value.

);\n *\n * @example Replace item content and priority.\n * items\n * .setContent('myItem',

My new value.

)\n * .setPriority('myItem', 10);\n *\n * @throws If the provided `key` is not present in the ItemList.\n */\n setContent(key: string, content: T): this {\n if (!this.has(key)) {\n throw new Error(`[ItemList] Cannot set content of Item. Key \\`${key}\\` is not present.`);\n }\n\n // Saves on bundle size to call the deprecated method internally\n return this.replace(key, content);\n }\n\n /**\n * Replaces an item's priority, if the provided item key exists.\n *\n * If the provided `key` is not present, an error will be thrown.\n *\n * @param key The key of the item in the list\n * @param priority The item's new priority\n *\n * @example Replace item priority.\n * items.setPriority('myItem', 10);\n *\n * @example Replace item priority and content.\n * items\n * .setPriority('myItem', 10)\n * .setContent('myItem',

My new value.

);\n *\n * @throws If the provided `key` is not present in the ItemList.\n */\n setPriority(key: string, priority: number): this {\n if (!this.has(key)) {\n throw new Error(`[ItemList] Cannot set priority of Item. Key \\`${key}\\` is not present.`);\n }\n\n this._items[key].priority = priority;\n\n return this;\n }\n\n /**\n * Remove an item from the list.\n *\n * If the provided `key` is not present, nothing will happen.\n */\n remove(key: string): this {\n delete this._items[key];\n\n return this;\n }\n\n /**\n * Merge another list's items into this one.\n *\n * The list passed to this function will overwrite items which already exist\n * with the same key.\n */\n merge(otherList: ItemList): ItemList {\n Object.keys(otherList._items).forEach((key) => {\n const val = otherList._items[key];\n\n if (val instanceof Item) {\n this._items[key] = val;\n }\n });\n\n return this;\n }\n\n /**\n * Convert the list into an array of item content arranged by priority.\n *\n * This **does not** preserve the original types of primitives and proxies\n * all content values to make `itemName` accessible on them.\n *\n * **NOTE:** If your ItemList holds primitive types (such as numbers, booleans\n * or strings), these will be converted to their object counterparts if you do\n * not provide `true` to this function.\n *\n * **NOTE:** Modifying any objects in the final array may also update the\n * content of the original ItemList.\n *\n * @param keepPrimitives Converts item content to objects and sets the\n * `itemName` property on them.\n *\n * @see https://github.com/flarum/core/issues/3030\n */\n toArray(keepPrimitives?: false): (T & { itemName: string })[];\n /**\n * Convert the list into an array of item content arranged by priority.\n *\n * Content values that are already objects will be proxied and have\n * `itemName` accessible on them. Primitive values will not have the\n * `itemName` property accessible.\n *\n * **NOTE:** Modifying any objects in the final array may also update the\n * content of the original ItemList.\n *\n * @param keepPrimitives Converts item content to objects and sets the\n * `itemName` property on them.\n */\n toArray(keepPrimitives: true): (T extends object ? T & Readonly<{ itemName: string }> : T)[];\n\n toArray(keepPrimitives: boolean = false): T[] | (T & Readonly<{ itemName: string }>)[] {\n const items: Item[] = Object.keys(this._items).map((key, i) => {\n const item = this._items[key];\n\n if (!keepPrimitives || isObject(item.content)) {\n // Convert content to object, then proxy it\n return {\n ...item,\n content: this.createItemContentProxy(isObject(item.content) ? item.content : Object(item.content), key),\n };\n } else {\n // ...otherwise just return a clone of the item.\n return { ...item };\n }\n });\n\n return items.sort((a, b) => b.priority - a.priority).map((item) => item.content);\n }\n\n /**\n * A read-only map of all keys to their respective items in no particular order.\n *\n * We don't allow adding new items to the ItemList via setting new properties,\n * nor do we allow modifying existing items directly. You should use the\n * {@link ItemList.add}, {@link ItemList.setContent} and\n * {@link ItemList.setPriority} methods instead.\n *\n * To match the old behaviour of the `ItemList.items` property, call\n * `Object.values(ItemList.toObject())`.\n *\n * @example\n * const items = new ItemList();\n * items.add('b', 'My cool value', 20);\n * items.add('a', 'My value', 10);\n * items.toObject();\n * // {\n * // a: { content: 'My value', priority: 10, itemName: 'a' },\n * // b: { content: 'My cool value', priority: 20, itemName: 'b' },\n * // }\n */\n toObject(): DeepReadonly>> {\n return Object.keys(this._items).reduce((map, key) => {\n const obj = {\n content: this.get(key),\n itemName: key,\n priority: this.getPriority(key),\n };\n\n map[key] = obj;\n\n return map;\n }, {} as Record>);\n }\n\n /**\n * Proxies an item's content, adding the `itemName` readonly property to it.\n *\n * @example\n * createItemContentProxy({ foo: 'bar' }, 'myItem');\n * // { foo: 'bar', itemName: 'myItem' }\n *\n * @param content The item's content (objects only)\n * @param key The item's key\n * @return Proxied content\n *\n * @internal\n */\n private createItemContentProxy(content: C, key: string): Readonly {\n return new Proxy(content, {\n get(target, property, receiver) {\n if (property === 'itemName') return key;\n\n return Reflect.get(target, property, receiver);\n },\n set(target, property, value, receiver) {\n if (key !== null && property === 'itemName') {\n throw new Error('`itemName` property is read-only');\n }\n\n return Reflect.set(target, property, value, receiver);\n },\n }) as C & { itemName: string };\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem from './ExtensionItem';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport Alert from 'flarum/common/components/Alert';\nimport ItemList from '@flarum/core/src/common/utils/ItemList';\n\nexport interface IUpdaterAttrs extends ComponentAttrs {}\n\nexport type UpdaterLoadingTypes = 'check' | 'minor-update' | 'global-update' | 'extension-update' | null;\n\nexport default class Updater extends Component {\n view() {\n const core = app.packageManager.control.coreUpdate;\n\n return [\n
\n \n

{app.translator.trans('flarum-package-manager.admin.updater.updater_help')}

\n {this.lastUpdateCheckView()}\n
{this.controlItems().toArray()}
\n {this.availableUpdatesView()}\n
,\n core && core.package['latest-major'] ? (\n \n ) : null,\n ];\n }\n\n lastUpdateCheckView() {\n return (\n (app.packageManager.control.lastUpdateCheck?.checkedAt && (\n

\n \n {app.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')}\n \n {humanTime(app.packageManager.control.lastUpdateCheck.checkedAt)}\n

\n )) ||\n null\n );\n }\n\n availableUpdatesView() {\n const state = app.packageManager.control;\n\n if (app.packageManager.control.isLoading()) {\n return (\n
\n \n
\n );\n }\n\n if (!(state.extensionUpdates.length || state.coreUpdate)) {\n return (\n
\n \n {app.translator.trans('flarum-package-manager.admin.updater.up_to_date')}\n \n
\n );\n }\n\n return (\n
\n
\n {state.coreUpdate ? (\n state.updateCoreMinor()}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes('flarum/core')}\n />\n ) : null}\n {state.extensionUpdates.map((extension: Extension) => (\n state.updateExtension(extension)}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes(extension.name)}\n />\n ))}\n
\n
\n );\n }\n\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'updateCheck',\n app.packageManager.control.checkForUpdates()}\n loading={app.packageManager.control.isLoading('check')}\n disabled={app.packageManager.control.isLoadingOtherThan('check')}\n >\n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n ,\n 100\n );\n\n items.add(\n 'globalUpdate',\n app.packageManager.control.updateGlobally()}\n loading={app.packageManager.control.isLoading('global-update')}\n disabled={app.packageManager.control.isLoadingOtherThan('global-update')}\n >\n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n );\n\n return items;\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Mithril from 'mithril';\n\nexport default class ControlSection extends Component {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\n view() {\n return (\n
\n
\n
\n

{app.translator.trans('flarum-package-manager.admin.sections.control.title')}

\n
\n
\n
\n {app.data['flarum-package-manager.writable_dirs'] ? (\n <>\n \n \n \n ) : (\n
\n \n {app.translator.trans('flarum-package-manager.admin.file_permissions')}\n \n
\n )}\n
\n
\n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport ExtensionPage, { ExtensionPageAttrs } from 'flarum/admin/components/ExtensionPage';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\n\nexport default class SettingsPage extends ExtensionPage {\n sections(vnode: Mithril.VnodeDOM): ItemList {\n const items = super.sections(vnode);\n\n items.setPriority('content', 10);\n\n items.add('control', , 8);\n\n if (parseInt(app.data.settings['flarum-package-manager.queue_jobs'])) {\n items.add('queue', , 5);\n }\n\n items.setPriority('permissions', 0);\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'kiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0 ${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + ' ' + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + ' ' + unit;\n}\n","import Model from 'flarum/common/Model';\nimport prettyBytes from 'pretty-bytes';\n\nexport type TaskOperations =\n | 'extension_install'\n | 'extension_remove'\n | 'extension_update'\n | 'update_global'\n | 'update_minor'\n | 'update_major'\n | 'update_check'\n | 'why_not';\n\nexport default class Task extends Model {\n status() {\n return Model.attribute<'pending' | 'running' | 'failure' | 'success'>('status').call(this);\n }\n\n operation() {\n return Model.attribute('operation').call(this);\n }\n\n command() {\n return Model.attribute('command').call(this);\n }\n\n package() {\n return Model.attribute('package').call(this);\n }\n\n output() {\n return Model.attribute('output').call(this);\n }\n\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n startedAt() {\n return Model.attribute('startedAt', Model.transformDate).call(this);\n }\n\n finishedAt() {\n return Model.attribute('finishedAt', Model.transformDate).call(this);\n }\n\n peakMemoryUsed() {\n return prettyBytes(Model.attribute('peakMemoryUsed').call(this) * 1024);\n }\n}\n","import app from 'flarum/admin/app';\nimport Task from '../models/Task';\nimport { ApiQueryParamsPlural } from 'flarum/common/Store';\n\nexport default class QueueState {\n private tasks: Task[] | null = null;\n private limit = 20;\n private offset = 0;\n private total = 0;\n\n load(params?: ApiQueryParamsPlural) {\n this.tasks = null;\n params = {\n page: {\n limit: this.limit,\n offset: this.offset,\n ...params?.page,\n },\n ...params,\n };\n\n return app.store.find('package-manager-tasks', params || {}).then((data) => {\n this.tasks = data;\n this.total = data.payload.meta?.total;\n\n m.redraw();\n\n return data;\n });\n }\n\n getItems() {\n return this.tasks;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.total / this.limit);\n }\n\n pageNumber(): number {\n return Math.ceil(this.offset / this.limit);\n }\n\n hasPrev(): boolean {\n return this.pageNumber() !== 0;\n }\n\n hasNext(): boolean {\n return this.offset + this.limit < this.total;\n }\n\n prev(): void {\n if (this.hasPrev()) {\n this.offset -= this.limit;\n this.load();\n }\n }\n\n next(): void {\n if (this.hasNext()) {\n this.offset += this.limit;\n this.load();\n }\n }\n}\n","import app from 'flarum/admin/app';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport { UpdaterLoadingTypes } from '../components/Updater';\nimport { InstallerLoadingTypes } from '../components/Installer';\nimport { MajorUpdaterLoadingTypes } from '../components/MajorUpdater';\nimport { AsyncBackendResponse } from '../shims';\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\nexport type ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\nexport type LastUpdateCheck = {\n checkedAt: Date | null;\n updates: ComposerUpdates;\n};\n\ntype UpdateType = 'major' | 'minor' | 'global';\ntype UpdateStatus = 'success' | 'failure' | null;\nexport type UpdateState = {\n ranAt: Date | null;\n status: UpdateStatus;\n limitedPackages: string[];\n incompatibleExtensions: string[];\n};\n\nexport type LastUpdateRun = {\n [key in UpdateType]: UpdateState;\n} & {\n limitedPackages: () => string[];\n};\n\nexport type LoadingTypes = UpdaterLoadingTypes | InstallerLoadingTypes | MajorUpdaterLoadingTypes;\n\nexport type CoreUpdate = {\n package: UpdatedPackage;\n extension: Extension;\n};\n\nexport default class ControlSectionState {\n loading: LoadingTypes = null;\n\n public packageUpdates: Record = {};\n public lastUpdateCheck!: LastUpdateCheck;\n public extensionUpdates!: Extension[];\n public coreUpdate: CoreUpdate | null = null;\n get lastUpdateRun(): LastUpdateRun {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-package-manager.last_update_run']) as LastUpdateRun;\n\n lastUpdateRun.limitedPackages = () => [\n ...lastUpdateRun.major.limitedPackages,\n ...lastUpdateRun.minor.limitedPackages,\n ...lastUpdateRun.global.limitedPackages,\n ];\n\n return lastUpdateRun;\n }\n\n constructor() {\n this.lastUpdateCheck = JSON.parse(app.data.settings['flarum-package-manager.last_update_check']) as LastUpdateCheck;\n this.extensionUpdates = this.formatExtensionUpdates(this.lastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(this.lastUpdateCheck);\n }\n\n isLoading(name: LoadingTypes = null): boolean {\n return (name && this.loading === name) || (!name && this.loading !== null);\n }\n\n isLoadingOtherThan(name: LoadingTypes): boolean {\n return this.loading !== null && this.loading !== name;\n }\n\n setLoading(name: LoadingTypes): void {\n this.loading = name;\n }\n\n checkForUpdates() {\n this.setLoading('check');\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n })\n .then((response) => {\n if ((response as AsyncBackendResponse).processing) {\n jumpToQueue();\n } else {\n this.lastUpdateCheck = response as LastUpdateCheck;\n this.extensionUpdates = this.formatExtensionUpdates(response as LastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(response as LastUpdateCheck);\n m.redraw();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n if (confirm(extractText(app.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content')))) {\n app.modal.show(LoadingModal);\n this.setLoading('minor-update');\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n }\n\n updateExtension(extension: Extension) {\n app.modal.show(LoadingModal);\n this.setLoading('extension-update');\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_update', {\n extension: extension.extra['flarum-extension'].title,\n })\n );\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.setLoading('global-update');\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n\n formatExtensionUpdates(lastUpdateCheck: LastUpdateCheck): Extension[] {\n this.packageUpdates = {};\n\n lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]);\n }\n\n formatCoreUpdate(lastUpdateCheck: LastUpdateCheck): CoreUpdate | null {\n const core = lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n\n if (!core) return null;\n\n return {\n package: core,\n extension: {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n // @ts-ignore\n backgroundImage: `url(${app.data.resources[0]['attributes']['baseUrl']}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n extra: {\n 'flarum-extension': {\n title: extractText(app.translator.trans('flarum-package-manager.admin.updater.flarum')),\n },\n },\n },\n };\n }\n}\n","import QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\n\nexport default class PackageManagerState {\n public queue: QueueState = new QueueState();\n public control: ControlSectionState = new ControlSectionState();\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport Alert from 'flarum/common/components/Alert';\n\nimport SettingsPage from './components/SettingsPage';\nimport Task from './models/Task';\nimport jumpToQueue from './utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nimport { AsyncBackendResponse } from './shims';\nimport PackageManagerState from './states/PackageManagerState';\n\napp.initializers.add('flarum-package-manager', (app) => {\n app.store.models['package-manager-tasks'] = Task;\n\n app.packageManager = new PackageManagerState();\n\n app.extensionData\n .for('flarum-package-manager')\n .registerSetting(() => (\n
\n \n {app.translator.trans('flarum-package-manager.admin.settings.access_warning')}\n \n
\n ))\n .registerSetting({\n setting: 'flarum-package-manager.queue_jobs',\n label: app.translator.trans('flarum-package-manager.admin.settings.queue_jobs'),\n help: m.trust(\n extractText(\n app.translator.trans('flarum-package-manager.admin.settings.queue_jobs_help', {\n basic_impl_link: 'https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting',\n adv_impl_link: 'https://discuss.flarum.org/d/21873-redis-sessions-cache-queues',\n php_version: `${app.data.phpVersion}`,\n folder_perms_link: 'https://docs.flarum.org/install#folder-ownership',\n })\n )\n ),\n default: false,\n type: 'boolean',\n disabled: app.data['flarum-package-manager.using_sync_queue'],\n })\n .registerPage(SettingsPage);\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\n});\n"],"names":["module","exports","t","s","n","i","e","r","o","u","h","a","d","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","p","f","$l","m","l","$","Math","ceil","floor","y","abs","g","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","_objectWithoutPropertiesLoose","source","excluded","target","sourceKeys","length","indexOf","Label","view","vnode","attrs","className","type","classList","children","Component","TaskOutputModal","title","app","task","operation","content","command","output","Modal","Pagination","disabled","list","hasPrev","onclick","prev","icon","current","pageNumber","total","getTotalPages","hasNext","next","QueueSection","oninit","id","queueTable","columns","items","ItemList","label","extractText","operationIcon","extension","style","name","extra","running","failure","pending","success","status","startedAt","text","dayjs","finishedAt","start","end","extend","durationTime","diff","humanDuration","peakMemoryUsed","tasks","toArray","item","index","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","error","response","errors","includes","code","guessed_cause","jumpToQueue","route","set","setTimeout","document","getElementById","scrollIntoView","block","window","Installer","packageName","Stream","htmlFor","extiverse","href","placeholder","bidi","onsubmit","loading","data","package","LoadingModal","method","url","body","then","processing","extensionId","location","reload","errorHandler","redraw","WhyNotModal","whyNot","oncreate","requestWhyNot","reason","ExtensionItem","updates","onClickUpdate","whyNotWarning","isCore","isDanger","latestVersion","version","v","MajorUpdater","updateState","alt","src","coreUpdate","update","incompatibleExtensions","dismissible","controls","dryRun","pop","incompatible_extensions","_extends","assign","arguments","apply","_defineProperties","props","descriptor","configurable","writable","_createClass","Constructor","protoProps","staticProps","isObject","Item","priority","_items","isEmpty","has","getPriority","setContent","Error","setPriority","remove","merge","otherList","val","keepPrimitives","createItemContentProxy","sort","b","toObject","itemName","Proxy","property","receiver","Reflect","console","warn","Updater","lastUpdateCheckView","controlItems","availableUpdatesView","checkedAt","humanTime","state","extensionUpdates","updateCoreMinor","lastUpdateRun","limitedPackages","packageUpdates","updateExtension","ControlSection","SettingsPage","sections","parseInt","ExtensionPage","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","options","result","Array","isArray","Task","Model","createdAt","isFinite","TypeError","UNITS","bits","binary","signed","localeOptions","isNegative","prefix","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","QueueState","limit","offset","load","params","page","payload","meta","getItems","ControlSectionState","lastUpdateCheck","JSON","parse","formatExtensionUpdates","formatCoreUpdate","isLoading","isLoadingOtherThan","setLoading","checkForUpdates","confirm","updateGlobally","installed","filter","composerPackage","safeToUpdate","values","backgroundImage","major","minor","global","PackageManagerState","queue","control","store","models","packageManager","extensionData","registerSetting","translator","trans","setting","help","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","default","registerPage","isExtensionEnabled","modal","show","request","forum","attribute","alerts","close"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@flarum/package-manager/../../../node_modules/dayjs/plugin/duration.js","webpack://@flarum/package-manager/webpack/bootstrap","webpack://@flarum/package-manager/webpack/runtime/compat get default export","webpack://@flarum/package-manager/webpack/runtime/define property getters","webpack://@flarum/package-manager/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/package-manager/webpack/runtime/make namespace object","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/app']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/components/LoadingModal']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['admin/utils/isExtensionEnabled']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/package-manager/./src/admin/components/Label.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/package-manager/./src/admin/components/TaskOutputModal.tsx","webpack://@flarum/package-manager/./src/admin/components/Pagination.tsx","webpack://@flarum/package-manager/./src/admin/components/QueueSection.tsx","webpack://@flarum/package-manager/./src/admin/utils/humanDuration.ts","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/package-manager/./src/admin/utils/errorHandler.ts","webpack://@flarum/package-manager/./src/admin/utils/jumpToQueue.ts","webpack://@flarum/package-manager/./src/admin/components/Installer.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/package-manager/./src/admin/components/WhyNotModal.tsx","webpack://@flarum/package-manager/./src/admin/components/ExtensionItem.tsx","webpack://@flarum/package-manager/./src/admin/components/MajorUpdater.tsx","webpack://@flarum/package-manager/./src/admin/components/Updater.tsx","webpack://@flarum/package-manager/./src/admin/components/ControlSection.tsx","webpack://@flarum/package-manager/./src/admin/components/SettingsPage.tsx","webpack://@flarum/package-manager/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/package-manager/../../../node_modules/pretty-bytes/index.js","webpack://@flarum/package-manager/./src/admin/models/Task.ts","webpack://@flarum/package-manager/./src/admin/states/QueueState.ts","webpack://@flarum/package-manager/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/package-manager/./src/admin/states/ControlSectionState.ts","webpack://@flarum/package-manager/./src/admin/states/PackageManagerState.ts","webpack://@flarum/package-manager/./src/admin/index.tsx"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","// 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].call(module.exports, 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['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/ExtensionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/LoadingModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/utils/isExtensionEnabled'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","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}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import type Mithril from 'mithril';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\n\ninterface LabelAttrs extends ComponentAttrs {\n type: 'success' | 'error' | 'neutral' | 'warning';\n}\n\nexport default class Label extends Component {\n view(vnode: Mithril.Vnode) {\n const { className, type, ...attrs } = this.attrs;\n\n return (\n \n {vnode.children}\n \n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Task from '../models/Task';\n\ninterface TaskOutputModalAttrs extends IInternalModalAttrs {\n task: Task;\n}\n\nexport default class TaskOutputModal extends Modal {\n className() {\n return 'Modal--large QuickModal';\n }\n\n title() {\n return app.translator.trans(`flarum-package-manager.admin.sections.queue.operations.${this.attrs.task.operation()}`);\n }\n\n content() {\n return (\n
\n
\n
\n \n
\n $ composer {this.attrs.task.command()}\n
\n
\n
\n \n
\n \n
{this.attrs.task.output()}
\n
\n
\n
\n
\n
\n );\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport QueueState from '../states/QueueState';\n\ninterface PaginationAttrs extends ComponentAttrs {\n list: QueueState;\n}\n\n/**\n * @todo make it abstract in core for reusability.\n */\nexport default class Pagination extends Component {\n view() {\n return (\n \n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport icon from 'flarum/common/helpers/icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\n\nimport Label from './Label';\nimport TaskOutputModal from './TaskOutputModal';\nimport humanDuration from '../utils/humanDuration';\nimport Task, { TaskOperations } from '../models/Task';\nimport Pagination from './Pagination';\n\ninterface QueueTableColumn extends ComponentAttrs {\n label: string;\n content: (task: Task) => Mithril.Children;\n}\n\nexport default class QueueSection extends Component<{}> {\n oninit(vnode: Mithril.Vnode<{}, this>) {\n super.oninit(vnode);\n\n app.packageManager.queue.load();\n }\n\n view() {\n return (\n
\n
\n
\n

{app.translator.trans('flarum-package-manager.admin.sections.queue.title')}

\n app.packageManager.queue.load()}\n aria-label={app.translator.trans('flarum-package-manager.admin.sections.queue.refresh')}\n />\n
\n
\n
{this.queueTable()}
\n
\n );\n }\n\n columns() {\n const items = new ItemList();\n\n items.add(\n 'operation',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.operation')),\n content: (task) => (\n
\n {this.operationIcon(task.operation())}\n \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.operations.${task.operation()}`)}\n \n
\n ),\n },\n 80\n );\n\n items.add(\n 'package',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.package')),\n content: (task) => {\n const extension: Extension | null = app.data.extensions[task.package()?.replace(/(\\/flarum-|\\/flarum-ext-|\\/)/g, '-')];\n\n return extension ? (\n
\n
\n {!!extension.icon && icon(extension.icon.name)}\n
\n
\n {extension.extra['flarum-extension'].title}\n {task.package()}\n
\n
\n ) : (\n task.package()\n );\n },\n },\n 75\n );\n\n items.add(\n 'status',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.status')),\n content: (task) => (\n \n {app.translator.trans(`flarum-package-manager.admin.sections.queue.statuses.${task.status()}`)}\n \n ),\n },\n 70\n );\n\n items.add(\n 'elapsedTime',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.elapsed_time')),\n content: (task) =>\n !task.startedAt() ? (\n app.translator.trans('flarum-package-manager.admin.sections.queue.task_just_started')\n ) : (\n \n {humanDuration(task.startedAt(), task.finishedAt())}\n \n ),\n },\n 65\n );\n\n items.add(\n 'memoryUsed',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.peak_memory_used')),\n content: (task) => {task.peakMemoryUsed()},\n },\n 60\n );\n\n items.add(\n 'details',\n {\n label: extractText(app.translator.trans('flarum-package-manager.admin.sections.queue.columns.details')),\n content: (task) => (\n app.modal.show(TaskOutputModal, { task })}\n />\n ),\n className: 'Table-controls',\n },\n 55\n );\n\n return items;\n }\n\n queueTable() {\n const tasks = app.packageManager.queue.getItems();\n\n if (!tasks) {\n return ;\n }\n\n if (tasks && !tasks.length) {\n return

{app.translator.trans('flarum-package-manager.admin.sections.queue.none')}

;\n }\n\n const columns = this.columns();\n\n return (\n <>\n \n \n \n {columns.toArray().map((item, index) => (\n \n ))}\n \n \n \n {tasks.map((task, index) => (\n \n {columns.toArray().map((item, index) => {\n const { label, content, ...attrs } = item;\n\n return (\n \n );\n })}\n \n ))}\n \n
{item.label}
\n {content(task)}\n
\n\n \n \n );\n }\n\n operationIcon(operation: TaskOperations): Mithril.Children {\n return icon(\n {\n update_check: 'fas fa-sync-alt',\n update_major: 'fas fa-play',\n update_minor: 'fas fa-play',\n update_global: 'fas fa-play',\n extension_install: 'fas fa-download',\n extension_remove: 'fas fa-times',\n extension_update: 'fas fa-arrow-alt-circle-up',\n why_not: 'fas fa-exclamation-circle',\n }[operation]\n );\n }\n}\n","import duration from 'dayjs/plugin/duration';\n\nexport default function humanDuration(start: Date, end: Date) {\n dayjs.extend(duration);\n\n const durationTime = dayjs(end).diff(start);\n\n return dayjs.duration(durationTime).humanize();\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import app from 'flarum/admin/app';\n\nexport default function (e: any) {\n const error = e.response.errors[0];\n\n if (!['composer_command_failure', 'extension_already_installed', 'extension_not_installed'].includes(error.code)) {\n throw e;\n }\n\n switch (error.code) {\n case 'composer_command_failure':\n if (error.guessed_cause) {\n app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));\n app.modal.close();\n } else {\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));\n }\n break;\n\n case 'extension_already_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_already_installed'));\n app.modal.close();\n break;\n\n case 'extension_not_installed':\n app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.extension_not_installed'));\n app.modal.close();\n }\n}\n","import app from 'flarum/admin/app';\n\n// @ts-ignore\nwindow.jumpToQueue = jumpToQueue;\n\nexport default function jumpToQueue(): void {\n app.modal.close();\n m.route.set(app.route('extension', { id: 'flarum-package-manager' }));\n app.packageManager.queue.load();\n setTimeout(() => {\n document.getElementById('PackageManager-queueSection')?.scrollIntoView({ block: 'nearest' });\n }, 200);\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\n\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport { AsyncBackendResponse } from '../shims';\n\nexport interface InstallerAttrs extends ComponentAttrs {}\n\nexport type InstallerLoadingTypes = 'extension-install' | null;\n\nexport default class Installer extends Component {\n packageName!: Stream;\n\n oninit(vnode: Mithril.Vnode): void {\n super.oninit(vnode);\n\n this.packageName = Stream('');\n }\n\n view(): Mithril.Children {\n return (\n
\n \n

\n {app.translator.trans('flarum-package-manager.admin.extensions.install_help', {\n extiverse: extiverse.com,\n })}\n

\n
\n \n \n {app.translator.trans('flarum-package-manager.admin.extensions.proceed')}\n \n
\n
\n );\n }\n\n data(): any {\n return {\n package: this.packageName(),\n };\n }\n\n onsubmit(): void {\n app.packageManager.control.setLoading('extension-install');\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions`,\n body: {\n data: this.data(),\n },\n })\n .then((response) => {\n if (response.processing) {\n jumpToQueue();\n } else {\n const extensionId = response.id;\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_install', { extension: extensionId })\n );\n window.location.href = `${app.forum.attribute('adminUrl')}#/extension/${extensionId}`;\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n app.packageManager.control.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nimport errorHandler from '../utils/errorHandler';\n\ntype WhyNotResponse = {\n data: {\n reason: string;\n };\n};\n\nexport interface WhyNotModalAttrs extends IInternalModalAttrs {\n package: string;\n}\n\nexport default class WhyNotModal extends Modal {\n loading: boolean = true;\n whyNot: string | null = null;\n\n className() {\n return 'Modal--large WhyNotModal';\n }\n\n title() {\n return app.translator.trans('flarum-package-manager.admin.why_not_modal.title');\n }\n\n oncreate(vnode: Mithril.VnodeDOM) {\n super.oncreate(vnode);\n\n this.requestWhyNot();\n }\n\n content() {\n return
{this.loading ? :
{this.whyNot}
}
;\n }\n\n requestWhyNot(): void {\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`,\n body: {\n data: {\n package: this.attrs.package,\n },\n },\n })\n .then((response) => {\n this.loading = false;\n this.whyNot = response.data.reason;\n m.redraw();\n })\n .catch(errorHandler);\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport icon from 'flarum/common/helpers/icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport Button from 'flarum/common/components/Button';\nimport { Extension } from 'flarum/admin/AdminApplication';\n\nimport { UpdatedPackage } from '../states/ControlSectionState';\nimport WhyNotModal from './WhyNotModal';\nimport Label from './Label';\n\nexport interface ExtensionItemAttrs extends ComponentAttrs {\n extension: Extension;\n updates: UpdatedPackage;\n onClickUpdate: CallableFunction;\n whyNotWarning?: boolean;\n isCore?: boolean;\n updatable?: boolean;\n isDanger?: boolean;\n}\n\nexport default class ExtensionItem extends Component {\n view(vnode: Mithril.Vnode): Mithril.Children {\n const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs;\n const latestVersion = updates['latest-minor'] ?? (updates['latest-major'] && !isCore ? updates['latest-major'] : null);\n\n return (\n \n
\n {extension.icon ? icon(extension.icon.name) : ''}\n
\n
\n
{extension.extra['flarum-extension'].title}
\n
\n {this.version(updates['version'])}\n {latestVersion ? (\n \n ) : null}\n
\n
\n
\n {onClickUpdate ? (\n \n \n \n ) : null}\n {whyNotWarning ? (\n \n app.modal.show(WhyNotModal, { package: extension.name })}\n aria-label={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}\n />\n \n ) : null}\n
\n \n );\n }\n\n version(v: string): string {\n return 'v' + v.replace('v', '');\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport Alert from 'flarum/common/components/Alert';\nimport RequestError from 'flarum/common/utils/RequestError';\n\nimport { UpdatedPackage, UpdateState } from '../states/ControlSectionState';\nimport errorHandler from '../utils/errorHandler';\nimport WhyNotModal from './WhyNotModal';\nimport ExtensionItem from './ExtensionItem';\nimport { AsyncBackendResponse } from '../shims';\nimport jumpToQueue from '../utils/jumpToQueue';\n\nexport interface MajorUpdaterAttrs extends ComponentAttrs {\n coreUpdate: UpdatedPackage;\n updateState: UpdateState;\n}\n\nexport type MajorUpdaterLoadingTypes = 'major-update' | 'major-update-dry-run';\n\nexport default class MajorUpdater extends Component {\n updateState!: UpdateState;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.updateState = this.attrs.updateState;\n }\n\n view(): Mithril.Children {\n // @todo move Form-group--danger class to core for reuse\n return (\n
\n \"flarum\n \n

{app.translator.trans('flarum-package-manager.admin.major_updater.description')}

\n
\n \n \n {app.translator.trans('flarum-package-manager.admin.major_updater.dry_run')}\n \n \n \n {app.translator.trans('flarum-package-manager.admin.major_updater.update')}\n \n
\n {this.updateState.incompatibleExtensions.length ? (\n
\n {this.updateState.incompatibleExtensions.map((extension: string) => (\n \n ))}\n
\n ) : null}\n {this.updateState.status === 'failure' ? (\n app.modal.show(WhyNotModal, { package: 'flarum/core' })}\n >\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.why')}\n ,\n ]}\n >\n

\n {app.translator.trans('flarum-package-manager.admin.major_updater.failure.desc')}\n

\n \n ) : null}\n
\n );\n }\n\n update(dryRun: boolean) {\n app.packageManager.control.setLoading(dryRun ? 'major-update-dry-run' : 'major-update');\n app.modal.show(LoadingModal);\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/major-update`,\n body: {\n data: { dryRun },\n },\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .catch((e: RequestError) => {\n app.modal.close();\n this.updateState.status = 'failure';\n this.updateState.incompatibleExtensions = e.response?.errors?.pop()?.incompatible_extensions as string[];\n })\n .finally(() => {\n app.packageManager.control.setLoading(null);\n m.redraw();\n });\n }\n}\n","import app from 'flarum/admin/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport MajorUpdater from './MajorUpdater';\nimport ExtensionItem from './ExtensionItem';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport Alert from 'flarum/common/components/Alert';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport interface IUpdaterAttrs extends ComponentAttrs {}\n\nexport type UpdaterLoadingTypes = 'check' | 'minor-update' | 'global-update' | 'extension-update' | null;\n\nexport default class Updater extends Component {\n view() {\n const core = app.packageManager.control.coreUpdate;\n\n return [\n
\n \n

{app.translator.trans('flarum-package-manager.admin.updater.updater_help')}

\n {this.lastUpdateCheckView()}\n
{this.controlItems().toArray()}
\n {this.availableUpdatesView()}\n
,\n core && core.package['latest-major'] ? (\n \n ) : null,\n ];\n }\n\n lastUpdateCheckView() {\n return (\n (app.packageManager.control.lastUpdateCheck?.checkedAt && (\n

\n \n {app.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')}\n \n {humanTime(app.packageManager.control.lastUpdateCheck.checkedAt)}\n

\n )) ||\n null\n );\n }\n\n availableUpdatesView() {\n const state = app.packageManager.control;\n\n if (app.packageManager.control.isLoading()) {\n return (\n
\n \n
\n );\n }\n\n if (!(state.extensionUpdates.length || state.coreUpdate)) {\n return (\n
\n \n {app.translator.trans('flarum-package-manager.admin.updater.up_to_date')}\n \n
\n );\n }\n\n return (\n
\n
\n {state.coreUpdate ? (\n state.updateCoreMinor()}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes('flarum/core')}\n />\n ) : null}\n {state.extensionUpdates.map((extension: Extension) => (\n state.updateExtension(extension)}\n whyNotWarning={state.lastUpdateRun.limitedPackages().includes(extension.name)}\n />\n ))}\n
\n
\n );\n }\n\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'updateCheck',\n app.packageManager.control.checkForUpdates()}\n loading={app.packageManager.control.isLoading('check')}\n disabled={app.packageManager.control.isLoadingOtherThan('check')}\n >\n {app.translator.trans('flarum-package-manager.admin.updater.check_for_updates')}\n ,\n 100\n );\n\n items.add(\n 'globalUpdate',\n app.packageManager.control.updateGlobally()}\n loading={app.packageManager.control.isLoading('global-update')}\n disabled={app.packageManager.control.isLoadingOtherThan('global-update')}\n >\n {app.translator.trans('flarum-package-manager.admin.updater.run_global_update')}\n \n );\n\n return items;\n }\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Alert from 'flarum/common/components/Alert';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nimport Installer from './Installer';\nimport Updater from './Updater';\nimport Mithril from 'mithril';\n\nexport default class ControlSection extends Component {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n }\n\n view() {\n return (\n
\n
\n
\n

{app.translator.trans('flarum-package-manager.admin.sections.control.title')}

\n
\n
\n
\n {app.data['flarum-package-manager.writable_dirs'] ? (\n <>\n \n \n \n ) : (\n
\n \n {app.translator.trans('flarum-package-manager.admin.file_permissions')}\n \n
\n )}\n
\n
\n );\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/admin/app';\nimport ExtensionPage, { ExtensionPageAttrs } from 'flarum/admin/components/ExtensionPage';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nimport QueueSection from './QueueSection';\nimport ControlSection from './ControlSection';\n\nexport default class SettingsPage extends ExtensionPage {\n sections(vnode: Mithril.VnodeDOM): ItemList {\n const items = super.sections(vnode);\n\n items.setPriority('content', 10);\n\n items.add('control', , 8);\n\n if (parseInt(app.data.settings['flarum-package-manager.queue_jobs'])) {\n items.add('queue', , 5);\n }\n\n items.setPriority('permissions', 0);\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","const BYTE_UNITS = [\n\t'B',\n\t'kB',\n\t'MB',\n\t'GB',\n\t'TB',\n\t'PB',\n\t'EB',\n\t'ZB',\n\t'YB',\n];\n\nconst BIBYTE_UNITS = [\n\t'B',\n\t'kiB',\n\t'MiB',\n\t'GiB',\n\t'TiB',\n\t'PiB',\n\t'EiB',\n\t'ZiB',\n\t'YiB',\n];\n\nconst BIT_UNITS = [\n\t'b',\n\t'kbit',\n\t'Mbit',\n\t'Gbit',\n\t'Tbit',\n\t'Pbit',\n\t'Ebit',\n\t'Zbit',\n\t'Ybit',\n];\n\nconst BIBIT_UNITS = [\n\t'b',\n\t'kibit',\n\t'Mibit',\n\t'Gibit',\n\t'Tibit',\n\t'Pibit',\n\t'Eibit',\n\t'Zibit',\n\t'Yibit',\n];\n\n/*\nFormats the given number using `Number#toLocaleString`.\n- If locale is a string, the value is expected to be a locale-key (for example: `de`).\n- If locale is true, the system default locale is used for translation.\n- If no value for locale is specified, the number is returned unmodified.\n*/\nconst toLocaleString = (number, locale, options) => {\n\tlet result = number;\n\tif (typeof locale === 'string' || Array.isArray(locale)) {\n\t\tresult = number.toLocaleString(locale, options);\n\t} else if (locale === true || options !== undefined) {\n\t\tresult = number.toLocaleString(undefined, options);\n\t}\n\n\treturn result;\n};\n\nexport default function prettyBytes(number, options) {\n\tif (!Number.isFinite(number)) {\n\t\tthrow new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);\n\t}\n\n\toptions = {\n\t\tbits: false,\n\t\tbinary: false,\n\t\t...options,\n\t};\n\n\tconst UNITS = options.bits\n\t\t? (options.binary ? BIBIT_UNITS : BIT_UNITS)\n\t\t: (options.binary ? BIBYTE_UNITS : BYTE_UNITS);\n\n\tif (options.signed && number === 0) {\n\t\treturn ` 0 ${UNITS[0]}`;\n\t}\n\n\tconst isNegative = number < 0;\n\tconst prefix = isNegative ? '-' : (options.signed ? '+' : '');\n\n\tif (isNegative) {\n\t\tnumber = -number;\n\t}\n\n\tlet localeOptions;\n\n\tif (options.minimumFractionDigits !== undefined) {\n\t\tlocaleOptions = {minimumFractionDigits: options.minimumFractionDigits};\n\t}\n\n\tif (options.maximumFractionDigits !== undefined) {\n\t\tlocaleOptions = {maximumFractionDigits: options.maximumFractionDigits, ...localeOptions};\n\t}\n\n\tif (number < 1) {\n\t\tconst numberString = toLocaleString(number, options.locale, localeOptions);\n\t\treturn prefix + numberString + ' ' + UNITS[0];\n\t}\n\n\tconst exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);\n\tnumber /= (options.binary ? 1024 : 1000) ** exponent;\n\n\tif (!localeOptions) {\n\t\tnumber = number.toPrecision(3);\n\t}\n\n\tconst numberString = toLocaleString(Number(number), options.locale, localeOptions);\n\n\tconst unit = UNITS[exponent];\n\n\treturn prefix + numberString + ' ' + unit;\n}\n","import Model from 'flarum/common/Model';\nimport prettyBytes from 'pretty-bytes';\n\nexport type TaskOperations =\n | 'extension_install'\n | 'extension_remove'\n | 'extension_update'\n | 'update_global'\n | 'update_minor'\n | 'update_major'\n | 'update_check'\n | 'why_not';\n\nexport default class Task extends Model {\n status() {\n return Model.attribute<'pending' | 'running' | 'failure' | 'success'>('status').call(this);\n }\n\n operation() {\n return Model.attribute('operation').call(this);\n }\n\n command() {\n return Model.attribute('command').call(this);\n }\n\n package() {\n return Model.attribute('package').call(this);\n }\n\n output() {\n return Model.attribute('output').call(this);\n }\n\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n startedAt() {\n return Model.attribute('startedAt', Model.transformDate).call(this);\n }\n\n finishedAt() {\n return Model.attribute('finishedAt', Model.transformDate).call(this);\n }\n\n peakMemoryUsed() {\n return prettyBytes(Model.attribute('peakMemoryUsed').call(this) * 1024);\n }\n}\n","import app from 'flarum/admin/app';\nimport Task from '../models/Task';\nimport { ApiQueryParamsPlural } from 'flarum/common/Store';\n\nexport default class QueueState {\n private tasks: Task[] | null = null;\n private limit = 20;\n private offset = 0;\n private total = 0;\n\n load(params?: ApiQueryParamsPlural) {\n this.tasks = null;\n params = {\n page: {\n limit: this.limit,\n offset: this.offset,\n ...params?.page,\n },\n ...params,\n };\n\n return app.store.find('package-manager-tasks', params || {}).then((data) => {\n this.tasks = data;\n this.total = data.payload.meta?.total;\n\n m.redraw();\n\n return data;\n });\n }\n\n getItems() {\n return this.tasks;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.total / this.limit);\n }\n\n pageNumber(): number {\n return Math.ceil(this.offset / this.limit);\n }\n\n hasPrev(): boolean {\n return this.pageNumber() !== 0;\n }\n\n hasNext(): boolean {\n return this.offset + this.limit < this.total;\n }\n\n prev(): void {\n if (this.hasPrev()) {\n this.offset -= this.limit;\n this.load();\n }\n }\n\n next(): void {\n if (this.hasNext()) {\n this.offset += this.limit;\n this.load();\n }\n }\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import app from 'flarum/admin/app';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport { UpdaterLoadingTypes } from '../components/Updater';\nimport { InstallerLoadingTypes } from '../components/Installer';\nimport { MajorUpdaterLoadingTypes } from '../components/MajorUpdater';\nimport { AsyncBackendResponse } from '../shims';\nimport errorHandler from '../utils/errorHandler';\nimport jumpToQueue from '../utils/jumpToQueue';\nimport { Extension } from 'flarum/admin/AdminApplication';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport type UpdatedPackage = {\n name: string;\n version: string;\n latest: string;\n 'latest-minor': string | null;\n 'latest-major': string | null;\n 'latest-status': string;\n description: string;\n};\n\nexport type ComposerUpdates = {\n installed: UpdatedPackage[];\n};\n\nexport type LastUpdateCheck = {\n checkedAt: Date | null;\n updates: ComposerUpdates;\n};\n\ntype UpdateType = 'major' | 'minor' | 'global';\ntype UpdateStatus = 'success' | 'failure' | null;\nexport type UpdateState = {\n ranAt: Date | null;\n status: UpdateStatus;\n limitedPackages: string[];\n incompatibleExtensions: string[];\n};\n\nexport type LastUpdateRun = {\n [key in UpdateType]: UpdateState;\n} & {\n limitedPackages: () => string[];\n};\n\nexport type LoadingTypes = UpdaterLoadingTypes | InstallerLoadingTypes | MajorUpdaterLoadingTypes;\n\nexport type CoreUpdate = {\n package: UpdatedPackage;\n extension: Extension;\n};\n\nexport default class ControlSectionState {\n loading: LoadingTypes = null;\n\n public packageUpdates: Record = {};\n public lastUpdateCheck!: LastUpdateCheck;\n public extensionUpdates!: Extension[];\n public coreUpdate: CoreUpdate | null = null;\n get lastUpdateRun(): LastUpdateRun {\n const lastUpdateRun = JSON.parse(app.data.settings['flarum-package-manager.last_update_run']) as LastUpdateRun;\n\n lastUpdateRun.limitedPackages = () => [\n ...lastUpdateRun.major.limitedPackages,\n ...lastUpdateRun.minor.limitedPackages,\n ...lastUpdateRun.global.limitedPackages,\n ];\n\n return lastUpdateRun;\n }\n\n constructor() {\n this.lastUpdateCheck = JSON.parse(app.data.settings['flarum-package-manager.last_update_check']) as LastUpdateCheck;\n this.extensionUpdates = this.formatExtensionUpdates(this.lastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(this.lastUpdateCheck);\n }\n\n isLoading(name: LoadingTypes = null): boolean {\n return (name && this.loading === name) || (!name && this.loading !== null);\n }\n\n isLoadingOtherThan(name: LoadingTypes): boolean {\n return this.loading !== null && this.loading !== name;\n }\n\n setLoading(name: LoadingTypes): void {\n this.loading = name;\n }\n\n checkForUpdates() {\n this.setLoading('check');\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/check-for-updates`,\n })\n .then((response) => {\n if ((response as AsyncBackendResponse).processing) {\n jumpToQueue();\n } else {\n this.lastUpdateCheck = response as LastUpdateCheck;\n this.extensionUpdates = this.formatExtensionUpdates(response as LastUpdateCheck);\n this.coreUpdate = this.formatCoreUpdate(response as LastUpdateCheck);\n m.redraw();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n m.redraw();\n });\n }\n\n updateCoreMinor() {\n if (confirm(extractText(app.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content')))) {\n app.modal.show(LoadingModal);\n this.setLoading('minor-update');\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/minor-update`,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n }\n\n updateExtension(extension: Extension) {\n app.modal.show(LoadingModal);\n this.setLoading('extension-update');\n\n app\n .request({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${extension.id}`,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show(\n { type: 'success' },\n app.translator.trans('flarum-package-manager.admin.extensions.successful_update', {\n extension: extension.extra['flarum-extension'].title,\n })\n );\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n\n updateGlobally() {\n app.modal.show(LoadingModal);\n this.setLoading('global-update');\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/package-manager/global-update`,\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));\n window.location.reload();\n }\n })\n .catch(errorHandler)\n .finally(() => {\n this.setLoading(null);\n app.modal.close();\n m.redraw();\n });\n }\n\n formatExtensionUpdates(lastUpdateCheck: LastUpdateCheck): Extension[] {\n this.packageUpdates = {};\n\n lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {\n const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');\n\n const extension = app.data.extensions[id];\n const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);\n\n if (extension && safeToUpdate) {\n this.packageUpdates[extension.id] = composerPackage;\n }\n\n return extension && safeToUpdate;\n });\n\n return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]);\n }\n\n formatCoreUpdate(lastUpdateCheck: LastUpdateCheck): CoreUpdate | null {\n const core = lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => composerPackage.name === 'flarum/core').pop();\n\n if (!core) return null;\n\n return {\n package: core,\n extension: {\n id: 'flarum-core',\n name: 'flarum/core',\n version: app.data.settings.version,\n icon: {\n // @ts-ignore\n backgroundImage: `url(${app.data.resources[0]['attributes']['baseUrl']}/assets/extensions/flarum-package-manager/flarum.svg`,\n },\n extra: {\n 'flarum-extension': {\n title: extractText(app.translator.trans('flarum-package-manager.admin.updater.flarum')),\n },\n },\n },\n };\n }\n}\n","import QueueState from './QueueState';\nimport ControlSectionState from './ControlSectionState';\n\nexport default class PackageManagerState {\n public queue: QueueState = new QueueState();\n public control: ControlSectionState = new ControlSectionState();\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/admin/app';\nimport ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport LoadingModal from 'flarum/admin/components/LoadingModal';\nimport isExtensionEnabled from 'flarum/admin/utils/isExtensionEnabled';\nimport Alert from 'flarum/common/components/Alert';\n\nimport SettingsPage from './components/SettingsPage';\nimport Task from './models/Task';\nimport jumpToQueue from './utils/jumpToQueue';\nimport extractText from 'flarum/common/utils/extractText';\nimport { AsyncBackendResponse } from './shims';\nimport PackageManagerState from './states/PackageManagerState';\n\napp.initializers.add('flarum-package-manager', (app) => {\n app.store.models['package-manager-tasks'] = Task;\n\n app.packageManager = new PackageManagerState();\n\n app.extensionData\n .for('flarum-package-manager')\n .registerSetting(() => (\n
\n \n {app.translator.trans('flarum-package-manager.admin.settings.access_warning')}\n \n
\n ))\n .registerSetting({\n setting: 'flarum-package-manager.queue_jobs',\n label: app.translator.trans('flarum-package-manager.admin.settings.queue_jobs'),\n help: m.trust(\n extractText(\n app.translator.trans('flarum-package-manager.admin.settings.queue_jobs_help', {\n basic_impl_link: 'https://discuss.flarum.org/d/28151-database-queue-the-simplest-queue-even-for-shared-hosting',\n adv_impl_link: 'https://discuss.flarum.org/d/21873-redis-sessions-cache-queues',\n php_version: `${app.data.phpVersion}`,\n folder_perms_link: 'https://docs.flarum.org/install#folder-ownership',\n })\n )\n ),\n default: false,\n type: 'boolean',\n disabled: app.data['flarum-package-manager.using_sync_queue'],\n })\n .registerPage(SettingsPage);\n\n extend(ExtensionPage.prototype, 'topItems', function (items) {\n if (this.extension.id === 'flarum-package-manager' || isExtensionEnabled(this.extension.id)) {\n return;\n }\n\n items.add(\n 'remove',\n {\n app.modal.show(LoadingModal);\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/package-manager/extensions/${this.extension.id}`,\n method: 'DELETE',\n })\n .then((response) => {\n if (response?.processing) {\n jumpToQueue();\n } else {\n app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.extensions.successful_remove'));\n window.location = app.forum.attribute('adminUrl');\n }\n })\n .finally(() => {\n app.modal.close();\n });\n }}\n >\n Remove\n \n );\n });\n});\n"],"names":["module","exports","t","s","n","i","e","r","o","u","h","a","d","years","months","days","hours","minutes","seconds","milliseconds","weeks","c","p","f","$l","m","l","$","Math","ceil","floor","y","abs","g","negative","format","this","$d","$ms","parseFromMilliseconds","Object","keys","forEach","calMilliseconds","match","slice","map","Number","prototype","reduce","toISOString","toJSON","Y","YY","YYYY","M","MM","D","DD","H","HH","mm","ss","SSS","replace","String","as","get","add","subtract","locale","clone","humanize","fromNow","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","$utils","duration","isDuration","bind","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","call","getter","__esModule","definition","key","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","value","flarum","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","create","constructor","_objectWithoutPropertiesLoose","source","excluded","target","sourceKeys","length","indexOf","Label","view","vnode","attrs","className","type","classList","children","Component","TaskOutputModal","title","app","task","operation","content","command","output","Modal","Pagination","disabled","list","hasPrev","onclick","prev","icon","current","pageNumber","total","getTotalPages","hasNext","next","QueueSection","oninit","id","queueTable","columns","items","ItemList","label","extractText","operationIcon","extension","style","name","extra","running","failure","pending","success","status","startedAt","text","dayjs","finishedAt","start","end","extend","durationTime","diff","humanDuration","peakMemoryUsed","tasks","toArray","item","index","update_check","update_major","update_minor","update_global","extension_install","extension_remove","extension_update","why_not","error","response","errors","includes","code","guessed_cause","jumpToQueue","route","set","setTimeout","document","getElementById","scrollIntoView","block","window","Installer","packageName","Stream","htmlFor","extiverse","href","placeholder","bidi","onsubmit","loading","data","package","LoadingModal","method","url","body","then","processing","extensionId","location","reload","errorHandler","redraw","WhyNotModal","whyNot","oncreate","requestWhyNot","reason","ExtensionItem","updates","onClickUpdate","whyNotWarning","isCore","isDanger","latestVersion","version","v","MajorUpdater","updateState","alt","src","coreUpdate","update","incompatibleExtensions","dismissible","controls","dryRun","pop","incompatible_extensions","Updater","lastUpdateCheckView","controlItems","availableUpdatesView","checkedAt","humanTime","state","extensionUpdates","updateCoreMinor","lastUpdateRun","limitedPackages","packageUpdates","updateExtension","ControlSection","SettingsPage","sections","setPriority","parseInt","ExtensionPage","_extends","assign","arguments","apply","BYTE_UNITS","BIBYTE_UNITS","BIT_UNITS","BIBIT_UNITS","toLocaleString","number","options","result","Array","isArray","Task","Model","createdAt","isFinite","TypeError","UNITS","bits","binary","signed","localeOptions","isNegative","prefix","minimumFractionDigits","maximumFractionDigits","exponent","min","log","log10","toPrecision","prettyBytes","QueueState","limit","offset","load","params","page","payload","meta","getItems","_defineProperties","props","descriptor","configurable","writable","ControlSectionState","lastUpdateCheck","JSON","parse","formatExtensionUpdates","formatCoreUpdate","Constructor","protoProps","isLoading","isLoadingOtherThan","setLoading","checkForUpdates","confirm","updateGlobally","installed","filter","composerPackage","safeToUpdate","values","backgroundImage","major","minor","global","PackageManagerState","queue","control","store","models","packageManager","extensionData","registerSetting","translator","trans","setting","help","trust","basic_impl_link","adv_impl_link","php_version","phpVersion","folder_perms_link","default","registerPage","isExtensionEnabled","modal","show","request","forum","attribute","alerts","close"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/tags/js/dist-typings/admin/components/EditTagModal.d.ts b/extensions/tags/js/dist-typings/admin/components/EditTagModal.d.ts index 81cb2aefc..ebb10b83e 100644 --- a/extensions/tags/js/dist-typings/admin/components/EditTagModal.d.ts +++ b/extensions/tags/js/dist-typings/admin/components/EditTagModal.d.ts @@ -1,4 +1,4 @@ -/// +/// import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal'; import ItemList from 'flarum/common/utils/ItemList'; import Stream from 'flarum/common/utils/Stream'; diff --git a/extensions/tags/js/dist/admin.js b/extensions/tags/js/dist/admin.js index 3c4c92482..26e7f2dce 100644 --- a/extensions/tags/js/dist/admin.js +++ b/extensions/tags/js/dist/admin.js @@ -1,3 +1,3 @@ /*! For license information please see admin.js.LICENSE.txt */ -(()=>{var t={488:(t,e,n)=>{"use strict";n.d(e,{l:()=>Fn});const r=flarum.core.compat["admin/app"];var o=n.n(r);const a=flarum.core.compat["common/extend"],i=flarum.core.compat["admin/components/PermissionGrid"];var s=n.n(i);const l=flarum.core.compat["admin/components/PermissionDropdown"];var c=n.n(l);const u=flarum.core.compat["common/components/Dropdown"];var d=n.n(u);const h=flarum.core.compat["common/components/Button"];var f=n.n(h);const p=flarum.core.compat["common/components/LoadingIndicator"];var g=n.n(p);const v=flarum.core.compat["common/utils/extract"];var b=n.n(v);const y=flarum.core.compat["common/components/Link"];var w=n.n(y);const _=flarum.core.compat["common/utils/classList"];var T=n.n(_);const x=flarum.core.compat["common/helpers/textContrastClass"];var S=n.n(x);function E(t,e,n){void 0===e&&(e={}),void 0===n&&(n={});var r=t&&t.icon(),o=n.useColor,a=void 0===o||o;return e.className=T()([e.className,"icon",r?t.icon():"TagIcon"]),t&&a?(e.style=e.style||{},e.style["--color"]=t.color(),r&&(e.style.color=t.color())):t||(e.className+=" untagged"),r?m("i",e):m("span",e)}function N(t,e){void 0===e&&(e={}),e.style=e.style||{},e.className="TagLabel "+(e.className||"");var n=b()(e,"link"),r=t?t.name():app.translator.trans("flarum-tags.lib.deleted_tag_text");if(t){var o=t.color();o&&(e.style["--tag-bg"]=o,e.className=T()(e.className,"colored",S()(o))),n&&(e.title=t.description()||"",e.href=app.route("tag",{tags:t.slug()})),t.isChild()&&(e.className+=" TagLabel--child")}else e.className+=" untagged";return m(n?w():"span",e,m("span",{className:"TagLabel-text"},t&&t.icon()&&E(t,{className:"TagLabel-icon"},{useColor:!1}),m("span",{className:"TagLabel-name"},r)))}function C(t){return t.slice(0).sort((function(t,e){var n=t.position(),r=e.position();if(null===n&&null===r)return e.discussionCount()-t.discussionCount();if(null===r)return-1;if(null===n)return 1;var o=t.parent(),a=e.parent();return o===a?n-r:o&&a?o.position()-a.position():o?o===e?1:o.position()-r:a?a===t?-1:n-a.position():0}))}function D(){(0,a.extend)(s().prototype,"oninit",(function(){this.loading=!0})),(0,a.extend)(s().prototype,"oncreate",(function(){var t=this;o().tagList.load().then((function(){t.loading=!1,m.redraw()}))})),(0,a.override)(s().prototype,"view",(function(t,e){return this.loading?m(g(),null):t(e)})),(0,a.override)(o(),"getRequiredPermissions",(function(t,e){var n=e.match(/^tag\d+\./);return n?t(e.substr(n[0].length)).map((function(t){return n[0]+t})):t(e)})),(0,a.extend)(s().prototype,"scopeItems",(function(t){C(o().store.all("tags")).filter((function(t){return t.isRestricted()})).forEach((function(e){return t.add("tag"+e.id(),{label:N(e),onremove:function(){return e.save({isRestricted:!1})},render:function(t){return"setting"in t?null:"viewForum"===t.permission||"startDiscussion"===t.permission||t.permission.startsWith("discussion.")&&!1!==t.tagScoped||t.tagScoped?m(c(),{permission:"tag"+e.id()+"."+t.permission,allowGuest:t.allowGuest}):null}})}))})),(0,a.extend)(s().prototype,"scopeControlItems",(function(t){var e=C(o().store.all("tags").filter((function(t){return!t.isRestricted()})));e.length&&t.add("tag",m(d(),{className:"Dropdown--restrictByTag",buttonClassName:"Button Button--text",label:o().translator.trans("flarum-tags.admin.permissions.restrict_by_tag_heading"),icon:"fas fa-plus",caretIcon:null},e.map((function(t){return m(f(),{icon:!0,onclick:function(){return t.save({isRestricted:!0})}},[E(t,{className:"Button-icon"})," ",t.name()])}))))}))}function O(){app.extensionData.for("flarum-tags").registerPermission({icon:"fas fa-tag",label:app.translator.trans("flarum-tags.admin.permissions.tag_discussions_label"),permission:"discussion.tag"},"moderate",95).registerPermission({icon:"fas fa-tags",label:app.translator.trans("flarum-tags.admin.permissions.bypass_tag_counts_label"),permission:"bypassTagCounts"},"start",89)}const I=flarum.core.compat["admin/components/BasicsPage"];var P=n.n(I);function M(){(0,a.extend)(P().prototype,"homePageItems",(function(t){t.add("tags",{path:"/tags",label:app.translator.trans("flarum-tags.admin.basics.tags_label")})}))}const L=flarum.core.compat["admin/components/SettingDropdown"];var k=n.n(L);function A(){(0,a.extend)(s().prototype,"startItems",(function(t){t.add("allowTagChange",{icon:"fas fa-tag",label:o().translator.trans("flarum-tags.admin.permissions.allow_edit_tags_label"),setting:function(){var t=parseInt(o().data.settings.allow_tag_change,10);return m(k(),{defaultLabel:t?o().translator.trans("core.admin.permissions_controls.allow_some_minutes_button",{count:t}):o().translator.trans("core.admin.permissions_controls.allow_indefinitely_button"),key:"allow_tag_change",options:[{value:"-1",label:o().translator.trans("core.admin.permissions_controls.allow_indefinitely_button")},{value:"10",label:o().translator.trans("core.admin.permissions_controls.allow_ten_minutes_button")},{value:"reply",label:o().translator.trans("core.admin.permissions_controls.allow_until_reply_button")}]})}},90)}))}const R=flarum.core.compat["admin/components/AdminPage"];var F=n.n(R);function B(){return B=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(o[n]=t[n]);return o}var rt=["className","isToggled"],ot=function(t){function e(){return t.apply(this,arguments)||this}return X(e,t),e.prototype.view=function(t){var e=this.attrs,n=e.className,r=e.isToggled,o=nt(e,rt),a=r?"far fa-check-circle":"far fa-circle";return m(f(),Object.assign({},o,{icon:a,className:T()([n,r&&"Button--toggled"])}),t.children)},e}(H()),at=function(t){function e(){for(var e,n=arguments.length,r=new Array(n),o=0;ot.max.primary)throw new Error("The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.");if(t.min.secondary>t.max.secondary)throw new Error("The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.");if(t.min.total>t.max.primary+t.max.secondary)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.");if(t.max.totalt.max.total)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of tags allowed.")}(e.limits)};var n=e.prototype;return n.oninit=function(e){var n=this;t.prototype.oninit.call(this,e),this.navigator.onUp((function(){return n.setIndex(n.getCurrentNumericIndex()-1,!0)})).onDown((function(){return n.setIndex(n.getCurrentNumericIndex()+1,!0)})).onSelect(this.select.bind(this)).onRemove((function(){return n.selected.splice(n.selected.length-1,1)})),G().tagList.load(["parent"]).then((function(t){n.loading=!1,n.attrs.selectableTags&&(t=n.attrs.selectableTags(t)),n.tags=C(t),n.attrs.selectedTags&&n.attrs.selectedTags.map(n.addTag.bind(n)),n.indexTag=t[0],m.redraw()}))},n.className=function(){return T()("TagSelectionModal",this.attrs.className)},n.title=function(){return this.attrs.title},n.content=function(){var t=this;if(this.loading||!this.tags)return m(g(),null);var e=this.filter().toLowerCase(),n=this.primaryCount(),r=this.secondaryCount(),o=this.getFilteredTags(),a=Math.max(z()(this.getInstruction(n,r)).length,this.filter().length);return[m("div",{className:"Modal-body"},m("div",{className:"TagSelectionModal-form"},m("div",{className:"TagSelectionModal-form-input"},m("div",{className:"TagsInput FormControl "+(this.focused?"focus":""),onclick:function(){return t.$(".TagsInput input").focus()}},m("span",{className:"TagsInput-selected"},this.selected.map((function(e){return m("span",{className:"TagsInput-tag",onclick:function(){t.removeTag(e),t.onready()}},N(e))}))),m("input",{className:"FormControl",placeholder:z()(this.getInstruction(n,r)),bidi:this.filter,style:{width:a+"ch"},onkeydown:this.navigator.navigate.bind(this.navigator),onfocus:function(){return t.focused=!0},onblur:function(){return t.focused=!1}}))),m("div",{className:"TagSelectionModal-form-submit App-primaryControl"},m(f(),{type:"submit",className:"Button Button--primary",disabled:!this.meetsRequirements(n,r),icon:"fas fa-check"},G().translator.trans("flarum-tags.lib.tag_selection_modal.submit_button"))))),m("div",{className:"Modal-footer"},m("ul",{className:"TagSelectionModal-list SelectTagList"},o.map((function(n){return m("li",{"data-index":n.id(),className:T()({pinned:null!==n.position(),child:!!n.parent(),colored:!!n.color(),selected:t.selected.includes(n),active:t.indexTag===n}),style:{color:n.color()},onmouseover:function(){return t.indexTag=n},onclick:t.toggleTag.bind(t,n)},E(n),m("span",{className:"SelectTagListItem-name"},K()(n.name(),e)),n.description()?m("span",{className:"SelectTagListItem-description"},n.description()):"")}))),this.attrs.limits.allowBypassing&&m("div",{className:"TagSelectionModal-controls"},m(ot,{className:"Button",onclick:function(){return t.bypassReqs=!t.bypassReqs},isToggled:this.bypassReqs},G().translator.trans("flarum-tags.lib.tag_selection_modal.bypass_requirements"))))]},n.getFilteredTags=function(){var t=this,e=this.filter().toLowerCase(),n=this.primaryCount(),r=this.secondaryCount(),o=this.tags;return this.attrs.requireParentTag&&(o=o.filter((function(e){var n=e.parent();return null!==n&&(!1===n||t.selected.includes(n))}))),this.bypassReqs||(this.selected.length>=this.attrs.limits.max.total?o=o.filter((function(e){return t.selected.includes(e)})):(n>=this.attrs.limits.max.primary&&(o=o.filter((function(e){return!e.isPrimary()||t.selected.includes(e)}))),r>=this.attrs.limits.max.secondary&&(o=o.filter((function(e){return e.isPrimary()||t.selected.includes(e)}))))),e&&(o=o.filter((function(t){return t.name().toLowerCase().includes(e)}))),this.indexTag&&o.includes(this.indexTag)||(this.indexTag=o[0]),o},n.primaryCount=function(){return this.selected.filter((function(t){return t.isPrimary()})).length},n.secondaryCount=function(){return this.selected.filter((function(t){return!t.isPrimary()})).length},n.meetsRequirements=function(t,e){return!!(this.bypassReqs||this.attrs.allowResetting&&0===this.selected.length)||!(this.selected.length=this.attrs.limits.min.primary&&e>=this.attrs.limits.min.secondary},n.addTag=function(t){if(t&&this.attrs.canSelect(t)){if(this.attrs.onSelect&&this.attrs.onSelect(t,this.selected),this.attrs.requireParentTag){var e=t.parent();e&&!this.selected.includes(e)&&this.selected.push(e)}this.selected.includes(t)||this.selected.push(t)}},n.removeTag=function(t){var e=this.selected.indexOf(t);-1!==e&&(this.selected.splice(e,1),this.attrs.requireParentTag&&this.selected.filter((function(e){return e.parent()===t})).forEach(this.removeTag.bind(this)),this.attrs.onDeselect&&this.attrs.onDeselect(t,this.selected))},n.toggleTag=function(t){this.tags&&(this.selected.includes(t)?this.removeTag(t):this.addTag(t),this.filter()&&(this.filter(""),this.indexTag=this.tags[0]),this.onready())},n.getInstruction=function(t,e){if(this.bypassReqs)return"";if(t li")},n.getCurrentNumericIndex=function(){return this.indexTag?this.selectableItems().index(this.getItem(this.indexTag)):-1},n.getItem=function(t){return this.selectableItems().filter('[data-index="'+t.id()+'"]')},n.setIndex=function(t,e){var n=this.selectableItems(),r=n.parent();t<0?t=n.length-1:t>=n.length&&(t=0);var o=n.eq(t);if(this.indexTag=G().store.getById("tags",o.attr("data-index")),m.redraw(),e&&this.indexTag){var a,i=r.scrollTop(),s=r.offset().top,l=s+r.outerHeight(),c=o.offset().top,u=c+o.outerHeight();cl&&(a=i-l+u+parseInt(r.css("padding-bottom"),10)),void 0!==a&&r.stop(!0).animate({scrollTop:a},100)}},e}(Q());function it(t){var e,n,r="";if("string"==typeof t||"number"==typeof t)r+=t;else if("object"==typeof t)if(Array.isArray(t))for(e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}function gt(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var vt=gt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),bt=gt(/Edge/i),yt=gt(/firefox/i),wt=gt(/safari/i)&&!gt(/chrome/i)&&!gt(/android/i),_t=gt(/iP(ad|od|hone)/i),Tt=gt(/chrome/i)&>(/android/i),xt={capture:!1,passive:!1};function St(t,e,n){t.addEventListener(e,n,!vt&&xt)}function Et(t,e,n){t.removeEventListener(e,n,!vt&&xt)}function Nt(t,e){if(e){if(">"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function Ct(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function Dt(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&Nt(t,e):Nt(t,e))||r&&t===n)return t;if(t===n)break}while(t=Ct(t))}return null}var Ot,It=/\s+/g;function Pt(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(It," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(It," ")}}function Mt(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"==typeof n?"":"px")}}function Lt(t,e){var n="";if("string"==typeof t)n=t;else do{var r=Mt(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function kt(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,a=r.length;if(n)for(;o=a:o<=a))return r;if(r===At())break;r=Ht(r,!1)}return!1}function Bt(t,e,n,r){for(var o=0,a=0,i=t.children;a2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=pt(n,Jt);Vt.pluginEvent.bind(Ge)(t,e,dt({dragEl:te,parentEl:ee,ghostEl:ne,rootEl:re,nextEl:oe,lastDownEl:ae,cloneEl:ie,cloneHidden:se,dragStarted:we,putSortable:he,activeSortable:Ge.active,originalEvent:r,oldIndex:le,oldDraggableIndex:ue,newIndex:ce,newDraggableIndex:de,hideGhostForTarget:Xe,unhideGhostForTarget:Ye,cloneNowHidden:function(){se=!0},cloneNowShown:function(){se=!1},dispatchSortableEvent:function(t){Qt({sortable:e,name:t,originalEvent:r})}},o))};function Qt(t){!function(t){var e=t.sortable,n=t.rootEl,r=t.name,o=t.targetEl,a=t.cloneEl,i=t.toEl,s=t.fromEl,l=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,m=t.originalEvent,h=t.putSortable,f=t.extraEventProperties;if(e=e||n&&n[Ut]){var p,g=e.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||vt||bt?(p=document.createEvent("Event")).initEvent(r,!0,!0):p=new CustomEvent(r,{bubbles:!0,cancelable:!0}),p.to=i||n,p.from=s||n,p.item=o||n,p.clone=a,p.oldIndex=l,p.newIndex=c,p.oldDraggableIndex=u,p.newDraggableIndex=d,p.originalEvent=m,p.pullMode=h?h.lastPutMode:void 0;var b=dt(dt({},f),Vt.getEventProperties(r,e));for(var y in b)p[y]=b[y];n&&n.dispatchEvent(p),g[v]&&g[v].call(e,p)}}(dt({putSortable:he,cloneEl:ie,targetEl:te,rootEl:re,oldIndex:le,oldDraggableIndex:ue,newIndex:ce,newDraggableIndex:de},t))}var te,ee,ne,re,oe,ae,ie,se,le,ce,ue,de,me,he,fe,pe,ge,ve,be,ye,we,_e,Te,xe,Se,Ee=!1,Ne=!1,Ce=[],De=!1,Oe=!1,Ie=[],Pe=!1,Me=[],Le="undefined"!=typeof document,ke=_t,Ae=bt||vt?"cssFloat":"float",Re=Le&&!Tt&&!_t&&"draggable"in document.createElement("div"),Fe=function(){if(Le){if(vt)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Be=function(t,e){var n=Mt(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Bt(t,0,e),a=Bt(t,1,e),i=o&&Mt(o),s=a&&Mt(a),l=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+Rt(o).width,c=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+Rt(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var u="left"===i.float?"left":"right";return!a||"both"!==s.clear&&s.clear!==u?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||l>=r&&"none"===n[Ae]||a&&"none"===n[Ae]&&l+c>r)?"vertical":"horizontal"},je=function(t){function e(t,n){return function(r,o,a,i){var s=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||s))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(r,o,a,i),n)(r,o,a,i);var l=(n?r:o).options.group.name;return!0===t||"string"==typeof t&&t===l||t.join&&t.indexOf(l)>-1}}var n={},r=t.group;r&&"object"==mt(r)||(r={name:r}),n.name=r.name,n.checkPull=e(r.pull,!0),n.checkPut=e(r.put),n.revertClone=r.revertClone,t.group=n},Xe=function(){!Fe&&ne&&Mt(ne,"display","none")},Ye=function(){!Fe&&ne&&Mt(ne,"display","")};Le&&!Tt&&document.addEventListener("click",(function(t){if(Ne)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),Ne=!1,!1}),!0);var He=function(t){if(te){t=t.touches?t.touches[0]:t;var e=(o=t.clientX,a=t.clientY,Ce.some((function(t){var e=t[Ut].options.emptyInsertThreshold;if(e&&!jt(t)){var n=Rt(t),r=o>=n.left-e&&o<=n.right+e,s=a>=n.top-e&&a<=n.bottom+e;return r&&s?i=t:void 0}})),i);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[Ut]._onDragOver(n)}}var o,a,i},qe=function(t){te&&te.parentNode[Ut]._isOutsideThisEl(t.target)};function Ge(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=ft({},e),t[Ut]=this;var n,r,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Be(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Ge.supportPointer&&"PointerEvent"in window&&!wt,emptyInsertThreshold:5};for(var a in Vt.initializePlugins(this,t,o),o)!(a in e)&&(e[a]=o[a]);for(var i in je(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&Re,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?St(t,"pointerdown",this._onTapStart):(St(t,"mousedown",this._onTapStart),St(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(St(t,"dragover",this),St(t,"dragenter",this)),Ce.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),ft(this,(r=[],{captureAnimationState:function(){r=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==Mt(t,"display")&&t!==Ge.ghost){r.push({target:t,rect:Rt(t)});var e=dt({},r[r.length-1].rect);if(t.thisAnimationDuration){var n=Lt(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){r.push(t)},removeAnimationState:function(t){r.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var r in e)if(e.hasOwnProperty(r)&&e[r]===t[n][r])return Number(n);return-1}(r,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var o=!1,a=0;r.forEach((function(t){var n=0,r=t.target,i=r.fromRect,s=Rt(r),l=r.prevFromRect,c=r.prevToRect,u=t.rect,d=Lt(r,!0);d&&(s.top-=d.f,s.left-=d.e),r.toRect=s,r.thisAnimationDuration&&qt(l,s)&&!qt(i,s)&&(u.top-s.top)/(u.left-s.left)==(i.top-s.top)/(i.left-s.left)&&(n=function(t,e,n,r){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*r.animation}(u,l,c,e.options)),qt(s,i)||(r.prevFromRect=i,r.prevToRect=s,n||(n=e.options.animation),e.animate(r,u,s,n)),n&&(o=!0,a=Math.max(a,n),clearTimeout(r.animationResetTimer),r.animationResetTimer=setTimeout((function(){r.animationTime=0,r.prevFromRect=null,r.fromRect=null,r.prevToRect=null,r.thisAnimationDuration=null}),n),r.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof t&&t()}),a):"function"==typeof t&&t(),r=[]},animate:function(t,e,n,r){if(r){Mt(t,"transition",""),Mt(t,"transform","");var o=Lt(this.el),a=o&&o.a,i=o&&o.d,s=(e.left-n.left)/(a||1),l=(e.top-n.top)/(i||1);t.animatingX=!!s,t.animatingY=!!l,Mt(t,"transform","translate3d("+s+"px,"+l+"px,0)"),this.forRepaintDummy=function(t){return t.offsetWidth}(t),Mt(t,"transition","transform "+r+"ms"+(this.options.easing?" "+this.options.easing:"")),Mt(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){Mt(t,"transition",""),Mt(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),r)}}}))}function We(t,e,n,r,o,a,i,s){var l,c,u=t[Ut],d=u.options.onMove;return!window.CustomEvent||vt||bt?(l=document.createEvent("Event")).initEvent("move",!0,!0):l=new CustomEvent("move",{bubbles:!0,cancelable:!0}),l.to=e,l.from=t,l.dragged=n,l.draggedRect=r,l.related=o||e,l.relatedRect=a||Rt(e),l.willInsertAfter=s,l.originalEvent=i,t.dispatchEvent(l),d&&(c=d.call(u,l,i)),c}function ze(t){t.draggable=!1}function Ue(){Pe=!1}function $e(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,r=0;n--;)r+=e.charCodeAt(n);return r.toString(36)}function Ke(t){return setTimeout(t,0)}function Ve(t){return clearTimeout(t)}Ge.prototype={constructor:Ge,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(_e=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,te):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,r=this.options,o=r.preventOnFilter,a=t.type,i=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,s=(i||t).target,l=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||s,c=r.filter;if(function(t){Me.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var r=e[n];r.checked&&Me.push(r)}}(n),!te&&!(/mousedown|pointerdown/.test(a)&&0!==t.button||r.disabled)&&!l.isContentEditable&&(this.nativeDraggable||!wt||!s||"SELECT"!==s.tagName.toUpperCase())&&!((s=Dt(s,r.draggable,n,!1))&&s.animated||ae===s)){if(le=Xt(s),ue=Xt(s,r.draggable),"function"==typeof c){if(c.call(this,t,s,this))return Qt({sortable:e,rootEl:l,name:"filter",targetEl:s,toEl:n,fromEl:n}),Zt("filter",e,{evt:t}),void(o&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(r){if(r=Dt(l,r.trim(),n,!1))return Qt({sortable:e,rootEl:r,name:"filter",targetEl:s,fromEl:n,toEl:n}),Zt("filter",e,{evt:t}),!0}))))return void(o&&t.cancelable&&t.preventDefault());r.handle&&!Dt(l,r.handle,n,!1)||this._prepareDragStart(t,i,s)}}},_prepareDragStart:function(t,e,n){var r,o=this,a=o.el,i=o.options,s=a.ownerDocument;if(n&&!te&&n.parentNode===a){var l=Rt(n);if(re=a,ee=(te=n).parentNode,oe=te.nextSibling,ae=n,me=i.group,Ge.dragged=te,fe={target:te,clientX:(e||t).clientX,clientY:(e||t).clientY},be=fe.clientX-l.left,ye=fe.clientY-l.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,te.style["will-change"]="all",r=function(){Zt("delayEnded",o,{evt:t}),Ge.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!yt&&o.nativeDraggable&&(te.draggable=!0),o._triggerDragStart(t,e),Qt({sortable:o,name:"choose",originalEvent:t}),Pt(te,i.chosenClass,!0))},i.ignore.split(",").forEach((function(t){kt(te,t.trim(),ze)})),St(s,"dragover",He),St(s,"mousemove",He),St(s,"touchmove",He),St(s,"mouseup",o._onDrop),St(s,"touchend",o._onDrop),St(s,"touchcancel",o._onDrop),yt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,te.draggable=!0),Zt("delayStart",this,{evt:t}),!i.delay||i.delayOnTouchOnly&&!e||this.nativeDraggable&&(bt||vt))r();else{if(Ge.eventCanceled)return void this._onDrop();St(s,"mouseup",o._disableDelayedDrag),St(s,"touchend",o._disableDelayedDrag),St(s,"touchcancel",o._disableDelayedDrag),St(s,"mousemove",o._delayedDragTouchMoveHandler),St(s,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&St(s,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){te&&ze(te),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;Et(t,"mouseup",this._disableDelayedDrag),Et(t,"touchend",this._disableDelayedDrag),Et(t,"touchcancel",this._disableDelayedDrag),Et(t,"mousemove",this._delayedDragTouchMoveHandler),Et(t,"touchmove",this._delayedDragTouchMoveHandler),Et(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?St(document,"pointermove",this._onTouchMove):St(document,e?"touchmove":"mousemove",this._onTouchMove):(St(te,"dragend",this),St(re,"dragstart",this._onDragStart));try{document.selection?Ke((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(Ee=!1,re&&te){Zt("dragStarted",this,{evt:e}),this.nativeDraggable&&St(document,"dragover",qe);var n=this.options;!t&&Pt(te,n.dragClass,!1),Pt(te,n.ghostClass,!0),Ge.active=this,t&&this._appendGhost(),Qt({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(pe){this._lastX=pe.clientX,this._lastY=pe.clientY,Xe();for(var t=document.elementFromPoint(pe.clientX,pe.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(pe.clientX,pe.clientY))!==e;)e=t;if(te.parentNode[Ut]._isOutsideThisEl(t),e)do{if(e[Ut]&&e[Ut]._onDragOver({clientX:pe.clientX,clientY:pe.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);Ye()}},_onTouchMove:function(t){if(fe){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,a=ne&&Lt(ne,!0),i=ne&&a&&a.a,s=ne&&a&&a.d,l=ke&&Se&&Yt(Se),c=(o.clientX-fe.clientX+r.x)/(i||1)+(l?l[0]-Ie[0]:0)/(i||1),u=(o.clientY-fe.clientY+r.y)/(s||1)+(l?l[1]-Ie[1]:0)/(s||1);if(!Ge.active&&!Ee){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+10||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+10}(t,o,this)&&!p.animated){if(p===te)return P(!1);if(p&&a===t.target&&(i=p),i&&(n=Rt(i)),!1!==We(re,a,te,e,i,n,t,!!i))return I(),p&&p.nextSibling?a.insertBefore(te,p.nextSibling):a.appendChild(te),ee=a,M(),P(!0)}else if(p&&function(t,e,n){var r=Rt(Bt(n.el,0,n.options,!0));return e?t.clientXu+c*a/2:ld-xe)return-Te}else if(l>u+c*(1-o)/2&&ld-c*a/2)?l>u+c/2?1:-1:0}(t,i,n,o,_?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,Oe,_e===i),0!==v){var E=Xt(te);do{E-=v,y=ee.children[E]}while(y&&("none"===Mt(y,"display")||y===ne))}if(0===v||y===i)return P(!1);_e=i,Te=v;var N=i.nextElementSibling,C=!1,D=We(re,a,te,e,i,n,t,C=1===v);if(!1!==D)return 1!==D&&-1!==D||(C=1===D),Pe=!0,setTimeout(Ue,30),I(),C&&!N?a.appendChild(te):i.parentNode.insertBefore(te,C?N:i),x&&Wt(x,0,S-x.scrollTop),ee=te.parentNode,void 0===b||Oe||(xe=Math.abs(b-Rt(i)[T])),M(),P(!0)}if(a.contains(te))return P(!1)}return!1}function O(s,l){Zt(s,h,dt({evt:t,isOwner:u,axis:o?"vertical":"horizontal",revert:r,dragRect:e,targetRect:n,canSort:d,fromSortable:m,target:i,completed:P,onMove:function(n,r){return We(re,a,te,e,n,Rt(n),t,r)},changed:M},l))}function I(){O("dragOverAnimationCapture"),h.captureAnimationState(),h!==m&&m.captureAnimationState()}function P(e){return O("dragOverCompleted",{insertion:e}),e&&(u?c._hideClone():c._showClone(h),h!==m&&(Pt(te,he?he.options.ghostClass:c.options.ghostClass,!1),Pt(te,s.ghostClass,!0)),he!==h&&h!==Ge.active?he=h:h===Ge.active&&he&&(he=null),m===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){O("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==m&&(m.animateAll(),m._ignoreWhileAnimating=null)),(i===te&&!te.animated||i===a&&!i.animated)&&(_e=null),s.dragoverBubble||t.rootEl||i===document||(te.parentNode[Ut]._isOutsideThisEl(t.target),!e&&He(t)),!s.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),f=!0}function M(){ce=Xt(te),de=Xt(te,s.draggable),Qt({sortable:h,name:"change",toEl:a,newIndex:ce,newDraggableIndex:de,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Et(document,"mousemove",this._onTouchMove),Et(document,"touchmove",this._onTouchMove),Et(document,"pointermove",this._onTouchMove),Et(document,"dragover",He),Et(document,"mousemove",He),Et(document,"touchmove",He)},_offUpEvents:function(){var t=this.el.ownerDocument;Et(t,"mouseup",this._onDrop),Et(t,"touchend",this._onDrop),Et(t,"pointerup",this._onDrop),Et(t,"touchcancel",this._onDrop),Et(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;ce=Xt(te),de=Xt(te,n.draggable),Zt("drop",this,{evt:t}),ee=te&&te.parentNode,ce=Xt(te),de=Xt(te,n.draggable),Ge.eventCanceled||(Ee=!1,Oe=!1,De=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ve(this.cloneId),Ve(this._dragStartId),this.nativeDraggable&&(Et(document,"drop",this),Et(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),wt&&Mt(document.body,"user-select",""),Mt(te,"transform",""),t&&(we&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),ne&&ne.parentNode&&ne.parentNode.removeChild(ne),(re===ee||he&&"clone"!==he.lastPutMode)&&ie&&ie.parentNode&&ie.parentNode.removeChild(ie),te&&(this.nativeDraggable&&Et(te,"dragend",this),ze(te),te.style["will-change"]="",we&&!Ee&&Pt(te,he?he.options.ghostClass:this.options.ghostClass,!1),Pt(te,this.options.chosenClass,!1),Qt({sortable:this,name:"unchoose",toEl:ee,newIndex:null,newDraggableIndex:null,originalEvent:t}),re!==ee?(ce>=0&&(Qt({rootEl:ee,name:"add",toEl:ee,fromEl:re,originalEvent:t}),Qt({sortable:this,name:"remove",toEl:ee,originalEvent:t}),Qt({rootEl:ee,name:"sort",toEl:ee,fromEl:re,originalEvent:t}),Qt({sortable:this,name:"sort",toEl:ee,originalEvent:t})),he&&he.save()):ce!==le&&ce>=0&&(Qt({sortable:this,name:"update",toEl:ee,originalEvent:t}),Qt({sortable:this,name:"sort",toEl:ee,originalEvent:t})),Ge.active&&(null!=ce&&-1!==ce||(ce=le,de=ue),Qt({sortable:this,name:"end",toEl:ee,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){Zt("nulling",this),re=te=ee=ne=oe=ie=ae=se=fe=pe=we=ce=de=le=ue=_e=Te=he=me=Ge.dragged=Ge.ghost=Ge.clone=Ge.active=null,Me.forEach((function(t){t.checked=!0})),Me.length=ge=ve=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":te&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,a=this.options;r li").map((function(){return{id:$(this).data("id"),children:$(this).find("li").map((function(){return $(this).data("id")})).get()}})).get();e.forEach((function(t,e){var n=o().store.getById("tags",t.id);n.pushData({attributes:{position:e,isChild:!1},relationships:{parent:null}}),t.children.forEach((function(t,e){o().store.getById("tags",t).pushData({attributes:{position:e,isChild:!0},relationships:{parent:n}})}))})),o().request({url:o().forum.attribute("apiUrl")+"/tags/order",method:"POST",body:{order:e}}),this.forcedRefreshKey++,m.redraw()},e}(fn());function En(t,e,n,r,o,a,i){try{var s=t[a](i),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(r,o)}function Nn(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function i(t){En(a,r,o,i,s,"next",t)}function s(t){En(a,r,o,i,s,"throw",t)}i(void 0)}))}}var Cn=n(507),Dn=n.n(Cn),On=function(){function t(){this.loadedIncludes=void 0}var e=t.prototype;return e.load=function(){var t=Nn(Dn().mark((function t(e){var n,r=this;return Dn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=[]),this.loadedIncludes){t.next=3;break}return t.abrupt("return",this.query(e));case 3:if(0!==(n=e.filter((function(t){return!r.loadedIncludes.has(t)}))).length){t.next=6;break}return t.abrupt("return",Promise.resolve(G().store.all("tags")));case 6:return t.abrupt("return",this.query(n));case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.query=function(){var t=Nn(Dn().mark((function t(e){var n=this;return Dn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return void 0===e&&(e=[]),null!=this.loadedIncludes||(this.loadedIncludes=new Set),t.abrupt("return",G().store.find("tags",{include:e.join(",")}).then((function(t){return e.forEach((function(t){return n.loadedIncludes.add(t)})),t})));case 3:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}();const In=flarum.core.compat["common/extenders"];var Pn=n.n(In);const Mn=flarum.core.compat["common/utils/computed"];var Ln=n.n(Mn);const kn=flarum.core.compat["common/Model"];var An=n.n(kn),Rn=function(t){function e(){return t.apply(this,arguments)||this}X(e,t);var n=e.prototype;return n.name=function(){return An().attribute("name").call(this)},n.slug=function(){return An().attribute("slug").call(this)},n.description=function(){return An().attribute("description").call(this)},n.color=function(){return An().attribute("color").call(this)},n.backgroundUrl=function(){return An().attribute("backgroundUrl").call(this)},n.backgroundMode=function(){return An().attribute("backgroundMode").call(this)},n.icon=function(){return An().attribute("icon").call(this)},n.position=function(){return An().attribute("position").call(this)},n.parent=function(){return An().hasOne("parent").call(this)},n.children=function(){return An().hasMany("children").call(this)},n.defaultSort=function(){return An().attribute("defaultSort").call(this)},n.isChild=function(){return An().attribute("isChild").call(this)},n.isHidden=function(){return An().attribute("isHidden").call(this)},n.discussionCount=function(){return An().attribute("discussionCount").call(this)},n.lastPostedAt=function(){return An().attribute("lastPostedAt",An().transformDate).call(this)},n.lastPostedDiscussion=function(){return An().hasOne("lastPostedDiscussion").call(this)},n.isRestricted=function(){return An().attribute("isRestricted").call(this)},n.canStartDiscussion=function(){return An().attribute("canStartDiscussion").call(this)},n.canAddToDiscussion=function(){return An().attribute("canAddToDiscussion").call(this)},n.isPrimary=function(){return Ln()("position","parent",(function(t,e){return null!==t&&!1===e})).call(this)},e}(An());const Fn=[(new(Pn().Store)).add("tags",Rn)],Bn={"tags/utils/sortTags":C,"tags/models/Tag":Rn,"tags/helpers/tagsLabel":lt,"tags/helpers/tagIcon":E,"tags/helpers/tagLabel":N,"tags/components/TagSelectionModal":at,"tags/states/TagListState":On},jn=Object.assign(Bn,{"tags/addTagsHomePageOption":M,"tags/addTagChangePermission":A,"tags/components/TagsPage":Sn,"tags/components/EditTagModal":Tn,"tags/addTagPermission":O,"tags/addTagsPermissionScope":D}),Xn=flarum.core;o().initializers.add("flarum-tags",(function(t){t.tagList=new On,t.extensionData.for("flarum-tags").registerPage(Sn),D(),O(),M(),A(),(0,a.extend)(F().prototype,"customSettingComponents",(function(t){var e=this;t.add("flarum-tags.select-tags",(function(t){return m(ct,Object.assign({},t,{settingValue:e.settings[t.setting]}))}))}))})),Object.assign(Xn.compat,jn)},810:()=>{},440:(t,e,n)=>{var r=n(75).default;function o(){"use strict";t.exports=o=function(){return e},t.exports.__esModule=!0,t.exports.default=t.exports;var e={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(t,e,n){t[e]=n.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function d(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(t){d=function(t,e,n){return t[e]=n}}function m(t,e,n,r){var o=e&&e.prototype instanceof p?e:p,a=Object.create(o.prototype),s=new D(r||[]);return i(a,"_invoke",{value:S(t,n,s)}),a}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=m;var f={};function p(){}function g(){}function v(){}var b={};d(b,l,(function(){return this}));var y=Object.getPrototypeOf,w=y&&y(y(O([])));w&&w!==n&&a.call(w,l)&&(b=w);var _=v.prototype=p.prototype=Object.create(b);function T(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(o,i,s,l){var c=h(t[o],t,i);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==r(d)&&a.call(d,"__await")?e.resolve(d.__await).then((function(t){n("next",t,s,l)}),(function(t){n("throw",t,s,l)})):e.resolve(d).then((function(t){u.value=t,s(u)}),(function(t){return n("throw",t,s,l)}))}l(c.arg)}var o;i(this,"_invoke",{value:function(t,r){function a(){return new e((function(e,o){n(t,r,e,o)}))}return o=o?o.then(a,a):a()}})}function S(t,e,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var s=E(i,n);if(s){if(s===f)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=h(t,e,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}function E(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var r=h(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,f;var o=r.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function N(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 C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function D(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(N,this),this.reset(!0)}function O(t){if(t){var e=t[l];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,r=function e(){for(;++n=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:O(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},75:t=>{function e(n){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},507:(t,e,n)=>{var r=n(440)();t.exports=r;try{regeneratorRuntime=r}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var a=e[r]={exports:{}};return t[r](a,a.exports,n),a.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{extend:()=>o.l});var t=n(810),e={};for(const n in t)"default"!==n&&(e[n]=()=>t[n]);n.d(r,e);var o=n(488)})(),module.exports=r})(); +(()=>{var t={946:(t,e,n)=>{"use strict";n.d(e,{l:()=>Rn});const o=flarum.core.compat["admin/app"];var r=n.n(o);const a=flarum.core.compat["common/extend"],i=flarum.core.compat["admin/components/PermissionGrid"];var s=n.n(i);const l=flarum.core.compat["admin/components/PermissionDropdown"];var c=n.n(l);const u=flarum.core.compat["common/components/Dropdown"];var d=n.n(u);const h=flarum.core.compat["common/components/Button"];var f=n.n(h);const p=flarum.core.compat["common/components/LoadingIndicator"];var g=n.n(p);const v=flarum.core.compat["common/utils/extract"];var b=n.n(v);const y=flarum.core.compat["common/components/Link"];var w=n.n(y);const _=flarum.core.compat["common/utils/classList"];var T=n.n(_);const x=flarum.core.compat["common/helpers/textContrastClass"];var S=n.n(x);function E(t,e,n){void 0===e&&(e={}),void 0===n&&(n={});var o=t&&t.icon(),r=n.useColor,a=void 0===r||r;return e.className=T()([e.className,"icon",o?t.icon():"TagIcon"]),t&&a?(e.style=e.style||{},e.style["--color"]=t.color(),o&&(e.style.color=t.color())):t||(e.className+=" untagged"),o?m("i",e):m("span",e)}function N(t,e){void 0===e&&(e={}),e.style=e.style||{},e.className="TagLabel "+(e.className||"");var n=b()(e,"link"),o=t?t.name():app.translator.trans("flarum-tags.lib.deleted_tag_text");if(t){var r=t.color();r&&(e.style["--tag-bg"]=r,e.className=T()(e.className,"colored",S()(r))),n&&(e.title=t.description()||"",e.href=app.route("tag",{tags:t.slug()})),t.isChild()&&(e.className+=" TagLabel--child")}else e.className+=" untagged";return m(n?w():"span",e,m("span",{className:"TagLabel-text"},t&&t.icon()&&E(t,{className:"TagLabel-icon"},{useColor:!1}),m("span",{className:"TagLabel-name"},o)))}function C(t){return t.slice(0).sort((function(t,e){var n=t.position(),o=e.position();if(null===n&&null===o)return e.discussionCount()-t.discussionCount();if(null===o)return-1;if(null===n)return 1;var r=t.parent(),a=e.parent();return r===a?n-o:r&&a?r.position()-a.position():r?r===e?1:r.position()-o:a?a===t?-1:n-a.position():0}))}function D(){(0,a.extend)(s().prototype,"oninit",(function(){this.loading=!0})),(0,a.extend)(s().prototype,"oncreate",(function(){var t=this;r().tagList.load().then((function(){t.loading=!1,m.redraw()}))})),(0,a.override)(s().prototype,"view",(function(t,e){return this.loading?m(g(),null):t(e)})),(0,a.override)(r(),"getRequiredPermissions",(function(t,e){var n=e.match(/^tag\d+\./);return n?t(e.substr(n[0].length)).map((function(t){return n[0]+t})):t(e)})),(0,a.extend)(s().prototype,"scopeItems",(function(t){C(r().store.all("tags")).filter((function(t){return t.isRestricted()})).forEach((function(e){return t.add("tag"+e.id(),{label:N(e),onremove:function(){return e.save({isRestricted:!1})},render:function(t){return"setting"in t?null:"viewForum"===t.permission||"startDiscussion"===t.permission||t.permission.startsWith("discussion.")&&!1!==t.tagScoped||t.tagScoped?m(c(),{permission:"tag"+e.id()+"."+t.permission,allowGuest:t.allowGuest}):null}})}))})),(0,a.extend)(s().prototype,"scopeControlItems",(function(t){var e=C(r().store.all("tags").filter((function(t){return!t.isRestricted()})));e.length&&t.add("tag",m(d(),{className:"Dropdown--restrictByTag",buttonClassName:"Button Button--text",label:r().translator.trans("flarum-tags.admin.permissions.restrict_by_tag_heading"),icon:"fas fa-plus",caretIcon:null},e.map((function(t){return m(f(),{icon:!0,onclick:function(){return t.save({isRestricted:!0})}},[E(t,{className:"Button-icon"})," ",t.name()])}))))}))}function O(){app.extensionData.for("flarum-tags").registerPermission({icon:"fas fa-tag",label:app.translator.trans("flarum-tags.admin.permissions.tag_discussions_label"),permission:"discussion.tag"},"moderate",95).registerPermission({icon:"fas fa-tags",label:app.translator.trans("flarum-tags.admin.permissions.bypass_tag_counts_label"),permission:"bypassTagCounts"},"start",89)}const I=flarum.core.compat["admin/components/BasicsPage"];var P=n.n(I);function M(){(0,a.extend)(P().prototype,"homePageItems",(function(t){t.add("tags",{path:"/tags",label:app.translator.trans("flarum-tags.admin.basics.tags_label")})}))}const L=flarum.core.compat["admin/components/SettingDropdown"];var k=n.n(L);function A(){(0,a.extend)(s().prototype,"startItems",(function(t){t.add("allowTagChange",{icon:"fas fa-tag",label:r().translator.trans("flarum-tags.admin.permissions.allow_edit_tags_label"),setting:function(){var t=parseInt(r().data.settings.allow_tag_change,10);return m(k(),{defaultLabel:t?r().translator.trans("core.admin.permissions_controls.allow_some_minutes_button",{count:t}):r().translator.trans("core.admin.permissions_controls.allow_indefinitely_button"),key:"allow_tag_change",options:[{value:"-1",label:r().translator.trans("core.admin.permissions_controls.allow_indefinitely_button")},{value:"10",label:r().translator.trans("core.admin.permissions_controls.allow_ten_minutes_button")},{value:"reply",label:r().translator.trans("core.admin.permissions_controls.allow_until_reply_button")}]})}},90)}))}const R=flarum.core.compat["admin/components/AdminPage"];var F=n.n(R);function B(){return B=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0||(r[n]=t[n]);return r}var ot=["className","isToggled"],rt=function(t){function e(){return t.apply(this,arguments)||this}return X(e,t),e.prototype.view=function(t){var e=this.attrs,n=e.className,o=e.isToggled,r=nt(e,ot),a=o?"far fa-check-circle":"far fa-circle";return m(f(),Object.assign({},r,{icon:a,className:T()([n,o&&"Button--toggled"])}),t.children)},e}(H()),at=function(t){function e(){for(var e,n=arguments.length,o=new Array(n),r=0;rt.max.primary)throw new Error("The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.");if(t.min.secondary>t.max.secondary)throw new Error("The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.");if(t.min.total>t.max.primary+t.max.secondary)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.");if(t.max.totalt.max.total)throw new Error("The minimum number of tags allowed cannot be more than the maximum number of tags allowed.")}(e.limits)};var n=e.prototype;return n.oninit=function(e){var n=this;t.prototype.oninit.call(this,e),this.navigator.onUp((function(){return n.setIndex(n.getCurrentNumericIndex()-1,!0)})).onDown((function(){return n.setIndex(n.getCurrentNumericIndex()+1,!0)})).onSelect(this.select.bind(this)).onRemove((function(){return n.selected.splice(n.selected.length-1,1)})),G().tagList.load(["parent"]).then((function(t){n.loading=!1,n.attrs.selectableTags&&(t=n.attrs.selectableTags(t)),n.tags=C(t),n.attrs.selectedTags&&n.attrs.selectedTags.map(n.addTag.bind(n)),n.indexTag=t[0],m.redraw()}))},n.className=function(){return T()("TagSelectionModal",this.attrs.className)},n.title=function(){return this.attrs.title},n.content=function(){var t=this;if(this.loading||!this.tags)return m(g(),null);var e=this.filter().toLowerCase(),n=this.primaryCount(),o=this.secondaryCount(),r=this.getFilteredTags(),a=Math.max(z()(this.getInstruction(n,o)).length,this.filter().length);return[m("div",{className:"Modal-body"},m("div",{className:"TagSelectionModal-form"},m("div",{className:"TagSelectionModal-form-input"},m("div",{className:"TagsInput FormControl "+(this.focused?"focus":""),onclick:function(){return t.$(".TagsInput input").focus()}},m("span",{className:"TagsInput-selected"},this.selected.map((function(e){return m("span",{className:"TagsInput-tag",onclick:function(){t.removeTag(e),t.onready()}},N(e))}))),m("input",{className:"FormControl",placeholder:z()(this.getInstruction(n,o)),bidi:this.filter,style:{width:a+"ch"},onkeydown:this.navigator.navigate.bind(this.navigator),onfocus:function(){return t.focused=!0},onblur:function(){return t.focused=!1}}))),m("div",{className:"TagSelectionModal-form-submit App-primaryControl"},m(f(),{type:"submit",className:"Button Button--primary",disabled:!this.meetsRequirements(n,o),icon:"fas fa-check"},G().translator.trans("flarum-tags.lib.tag_selection_modal.submit_button"))))),m("div",{className:"Modal-footer"},m("ul",{className:"TagSelectionModal-list SelectTagList"},r.map((function(n){return m("li",{"data-index":n.id(),className:T()({pinned:null!==n.position(),child:!!n.parent(),colored:!!n.color(),selected:t.selected.includes(n),active:t.indexTag===n}),style:{color:n.color()},onmouseover:function(){return t.indexTag=n},onclick:t.toggleTag.bind(t,n)},E(n),m("span",{className:"SelectTagListItem-name"},K()(n.name(),e)),n.description()?m("span",{className:"SelectTagListItem-description"},n.description()):"")}))),this.attrs.limits.allowBypassing&&m("div",{className:"TagSelectionModal-controls"},m(rt,{className:"Button",onclick:function(){return t.bypassReqs=!t.bypassReqs},isToggled:this.bypassReqs},G().translator.trans("flarum-tags.lib.tag_selection_modal.bypass_requirements"))))]},n.getFilteredTags=function(){var t=this,e=this.filter().toLowerCase(),n=this.primaryCount(),o=this.secondaryCount(),r=this.tags;return this.attrs.requireParentTag&&(r=r.filter((function(e){var n=e.parent();return null!==n&&(!1===n||t.selected.includes(n))}))),this.bypassReqs||(this.selected.length>=this.attrs.limits.max.total?r=r.filter((function(e){return t.selected.includes(e)})):(n>=this.attrs.limits.max.primary&&(r=r.filter((function(e){return!e.isPrimary()||t.selected.includes(e)}))),o>=this.attrs.limits.max.secondary&&(r=r.filter((function(e){return e.isPrimary()||t.selected.includes(e)}))))),e&&(r=r.filter((function(t){return t.name().toLowerCase().includes(e)}))),this.indexTag&&r.includes(this.indexTag)||(this.indexTag=r[0]),r},n.primaryCount=function(){return this.selected.filter((function(t){return t.isPrimary()})).length},n.secondaryCount=function(){return this.selected.filter((function(t){return!t.isPrimary()})).length},n.meetsRequirements=function(t,e){return!!(this.bypassReqs||this.attrs.allowResetting&&0===this.selected.length)||!(this.selected.length=this.attrs.limits.min.primary&&e>=this.attrs.limits.min.secondary},n.addTag=function(t){if(t&&this.attrs.canSelect(t)){if(this.attrs.onSelect&&this.attrs.onSelect(t,this.selected),this.attrs.requireParentTag){var e=t.parent();e&&!this.selected.includes(e)&&this.selected.push(e)}this.selected.includes(t)||this.selected.push(t)}},n.removeTag=function(t){var e=this.selected.indexOf(t);-1!==e&&(this.selected.splice(e,1),this.attrs.requireParentTag&&this.selected.filter((function(e){return e.parent()===t})).forEach(this.removeTag.bind(this)),this.attrs.onDeselect&&this.attrs.onDeselect(t,this.selected))},n.toggleTag=function(t){this.tags&&(this.selected.includes(t)?this.removeTag(t):this.addTag(t),this.filter()&&(this.filter(""),this.indexTag=this.tags[0]),this.onready())},n.getInstruction=function(t,e){if(this.bypassReqs)return"";if(t li")},n.getCurrentNumericIndex=function(){return this.indexTag?this.selectableItems().index(this.getItem(this.indexTag)):-1},n.getItem=function(t){return this.selectableItems().filter('[data-index="'+t.id()+'"]')},n.setIndex=function(t,e){var n=this.selectableItems(),o=n.parent();t<0?t=n.length-1:t>=n.length&&(t=0);var r=n.eq(t);if(this.indexTag=G().store.getById("tags",r.attr("data-index")),m.redraw(),e&&this.indexTag){var a,i=o.scrollTop(),s=o.offset().top,l=s+o.outerHeight(),c=r.offset().top,u=c+r.outerHeight();cl&&(a=i-l+u+parseInt(o.css("padding-bottom"),10)),void 0!==a&&o.stop(!0).animate({scrollTop:a},100)}},e}(Q()),it=["link"];function st(t,e){void 0===e&&(e={});var n=[],o=e,r=o.link,a=nt(o,it);return a.className=T()("TagsLabel",a.className),t?C(t).forEach((function(e){(e||1===t.length)&&n.push(N(e,{link:r}))})):n.push(N()),m("span",a,n)}var lt=function(t){function e(){for(var e,n=arguments.length,o=new Array(n),r=0;r=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function pt(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var gt=pt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),vt=pt(/Edge/i),bt=pt(/firefox/i),yt=pt(/safari/i)&&!pt(/chrome/i)&&!pt(/android/i),wt=pt(/iP(ad|od|hone)/i),_t=pt(/chrome/i)&&pt(/android/i),Tt={capture:!1,passive:!1};function xt(t,e,n){t.addEventListener(e,n,!gt&&Tt)}function St(t,e,n){t.removeEventListener(e,n,!gt&&Tt)}function Et(t,e){if(e){if(">"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function Nt(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function Ct(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&Et(t,e):Et(t,e))||o&&t===n)return t;if(t===n)break}while(t=Nt(t))}return null}var Dt,Ot=/\s+/g;function It(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(Ot," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(Ot," ")}}function Pt(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||-1!==e.indexOf("webkit")||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function Mt(t,e){var n="";if("string"==typeof t)n=t;else do{var o=Pt(t,"transform");o&&"none"!==o&&(n=o+" "+n)}while(!e&&(t=t.parentNode));var r=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return r&&new r(n)}function Lt(t,e,n){if(t){var o=t.getElementsByTagName(e),r=0,a=o.length;if(n)for(;r=a:r<=a))return o;if(o===kt())break;o=Yt(o,!1)}return!1}function Ft(t,e,n,o){for(var r=0,a=0,i=t.children;a2&&void 0!==arguments[2]?arguments[2]:{},o=n.evt,r=ft(n,Vt);Kt.pluginEvent.bind(qe)(t,e,ut({dragEl:Qt,parentEl:te,ghostEl:ee,rootEl:ne,nextEl:oe,lastDownEl:re,cloneEl:ae,cloneHidden:ie,dragStarted:ye,putSortable:me,activeSortable:qe.active,originalEvent:o,oldIndex:se,oldDraggableIndex:ce,newIndex:le,newDraggableIndex:ue,hideGhostForTarget:je,unhideGhostForTarget:Xe,cloneNowHidden:function(){ie=!0},cloneNowShown:function(){ie=!1},dispatchSortableEvent:function(t){Zt({sortable:e,name:t,originalEvent:o})}},r))};function Zt(t){!function(t){var e=t.sortable,n=t.rootEl,o=t.name,r=t.targetEl,a=t.cloneEl,i=t.toEl,s=t.fromEl,l=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,m=t.originalEvent,h=t.putSortable,f=t.extraEventProperties;if(e=e||n&&n[zt]){var p,g=e.options,v="on"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||gt||vt?(p=document.createEvent("Event")).initEvent(o,!0,!0):p=new CustomEvent(o,{bubbles:!0,cancelable:!0}),p.to=i||n,p.from=s||n,p.item=r||n,p.clone=a,p.oldIndex=l,p.newIndex=c,p.oldDraggableIndex=u,p.newDraggableIndex=d,p.originalEvent=m,p.pullMode=h?h.lastPutMode:void 0;var b=ut(ut({},f),Kt.getEventProperties(o,e));for(var y in b)p[y]=b[y];n&&n.dispatchEvent(p),g[v]&&g[v].call(e,p)}}(ut({putSortable:me,cloneEl:ae,targetEl:Qt,rootEl:ne,oldIndex:se,oldDraggableIndex:ce,newIndex:le,newDraggableIndex:ue},t))}var Qt,te,ee,ne,oe,re,ae,ie,se,le,ce,ue,de,me,he,fe,pe,ge,ve,be,ye,we,_e,Te,xe,Se=!1,Ee=!1,Ne=[],Ce=!1,De=!1,Oe=[],Ie=!1,Pe=[],Me="undefined"!=typeof document,Le=wt,ke=vt||gt?"cssFloat":"float",Ae=Me&&!_t&&!wt&&"draggable"in document.createElement("div"),Re=function(){if(Me){if(gt)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),Fe=function(t,e){var n=Pt(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),r=Ft(t,0,e),a=Ft(t,1,e),i=r&&Pt(r),s=a&&Pt(a),l=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+At(r).width,c=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+At(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(r&&i.float&&"none"!==i.float){var u="left"===i.float?"left":"right";return!a||"both"!==s.clear&&s.clear!==u?"horizontal":"vertical"}return r&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||l>=o&&"none"===n[ke]||a&&"none"===n[ke]&&l+c>o)?"vertical":"horizontal"},Be=function(t){function e(t,n){return function(o,r,a,i){var s=o.options.group.name&&r.options.group.name&&o.options.group.name===r.options.group.name;if(null==t&&(n||s))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(o,r,a,i),n)(o,r,a,i);var l=(n?o:r).options.group.name;return!0===t||"string"==typeof t&&t===l||t.join&&t.indexOf(l)>-1}}var n={},o=t.group;o&&"object"==dt(o)||(o={name:o}),n.name=o.name,n.checkPull=e(o.pull,!0),n.checkPut=e(o.put),n.revertClone=o.revertClone,t.group=n},je=function(){!Re&&ee&&Pt(ee,"display","none")},Xe=function(){!Re&&ee&&Pt(ee,"display","")};Me&&!_t&&document.addEventListener("click",(function(t){if(Ee)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),Ee=!1,!1}),!0);var Ye=function(t){if(Qt){t=t.touches?t.touches[0]:t;var e=(r=t.clientX,a=t.clientY,Ne.some((function(t){var e=t[zt].options.emptyInsertThreshold;if(e&&!Bt(t)){var n=At(t),o=r>=n.left-e&&r<=n.right+e,s=a>=n.top-e&&a<=n.bottom+e;return o&&s?i=t:void 0}})),i);if(e){var n={};for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[zt]._onDragOver(n)}}var r,a,i},He=function(t){Qt&&Qt.parentNode[zt]._isOutsideThisEl(t.target)};function qe(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=ht({},e),t[zt]=this;var n,o,r={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Fe(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==qe.supportPointer&&"PointerEvent"in window&&!yt,emptyInsertThreshold:5};for(var a in Kt.initializePlugins(this,t,r),r)!(a in e)&&(e[a]=r[a]);for(var i in Be(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&Ae,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?xt(t,"pointerdown",this._onTapStart):(xt(t,"mousedown",this._onTapStart),xt(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(xt(t,"dragover",this),xt(t,"dragenter",this)),Ne.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),ht(this,(o=[],{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==Pt(t,"display")&&t!==qe.ghost){o.push({target:t,rect:At(t)});var e=ut({},o[o.length-1].rect);if(t.thisAnimationDuration){var n=Mt(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var r=!1,a=0;o.forEach((function(t){var n=0,o=t.target,i=o.fromRect,s=At(o),l=o.prevFromRect,c=o.prevToRect,u=t.rect,d=Mt(o,!0);d&&(s.top-=d.f,s.left-=d.e),o.toRect=s,o.thisAnimationDuration&&Ht(l,s)&&!Ht(i,s)&&(u.top-s.top)/(u.left-s.left)==(i.top-s.top)/(i.left-s.left)&&(n=function(t,e,n,o){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*o.animation}(u,l,c,e.options)),Ht(s,i)||(o.prevFromRect=i,o.prevToRect=s,n||(n=e.options.animation),e.animate(o,u,s,n)),n&&(r=!0,a=Math.max(a,n),clearTimeout(o.animationResetTimer),o.animationResetTimer=setTimeout((function(){o.animationTime=0,o.prevFromRect=null,o.fromRect=null,o.prevToRect=null,o.thisAnimationDuration=null}),n),o.thisAnimationDuration=n)})),clearTimeout(n),r?n=setTimeout((function(){"function"==typeof t&&t()}),a):"function"==typeof t&&t(),o=[]},animate:function(t,e,n,o){if(o){Pt(t,"transition",""),Pt(t,"transform","");var r=Mt(this.el),a=r&&r.a,i=r&&r.d,s=(e.left-n.left)/(a||1),l=(e.top-n.top)/(i||1);t.animatingX=!!s,t.animatingY=!!l,Pt(t,"transform","translate3d("+s+"px,"+l+"px,0)"),this.forRepaintDummy=function(t){return t.offsetWidth}(t),Pt(t,"transition","transform "+o+"ms"+(this.options.easing?" "+this.options.easing:"")),Pt(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){Pt(t,"transition",""),Pt(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),o)}}}))}function Ge(t,e,n,o,r,a,i,s){var l,c,u=t[zt],d=u.options.onMove;return!window.CustomEvent||gt||vt?(l=document.createEvent("Event")).initEvent("move",!0,!0):l=new CustomEvent("move",{bubbles:!0,cancelable:!0}),l.to=e,l.from=t,l.dragged=n,l.draggedRect=o,l.related=r||e,l.relatedRect=a||At(e),l.willInsertAfter=s,l.originalEvent=i,t.dispatchEvent(l),d&&(c=d.call(u,l,i)),c}function We(t){t.draggable=!1}function ze(){Ie=!1}function Ue(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function $e(t){return setTimeout(t,0)}function Ke(t){return clearTimeout(t)}qe.prototype={constructor:qe,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(we=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Qt):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,o=this.options,r=o.preventOnFilter,a=t.type,i=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,s=(i||t).target,l=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||s,c=o.filter;if(function(t){Pe.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var o=e[n];o.checked&&Pe.push(o)}}(n),!Qt&&!(/mousedown|pointerdown/.test(a)&&0!==t.button||o.disabled)&&!l.isContentEditable&&(this.nativeDraggable||!yt||!s||"SELECT"!==s.tagName.toUpperCase())&&!((s=Ct(s,o.draggable,n,!1))&&s.animated||re===s)){if(se=jt(s),ce=jt(s,o.draggable),"function"==typeof c){if(c.call(this,t,s,this))return Zt({sortable:e,rootEl:l,name:"filter",targetEl:s,toEl:n,fromEl:n}),Jt("filter",e,{evt:t}),void(r&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(o){if(o=Ct(l,o.trim(),n,!1))return Zt({sortable:e,rootEl:o,name:"filter",targetEl:s,fromEl:n,toEl:n}),Jt("filter",e,{evt:t}),!0}))))return void(r&&t.cancelable&&t.preventDefault());o.handle&&!Ct(l,o.handle,n,!1)||this._prepareDragStart(t,i,s)}}},_prepareDragStart:function(t,e,n){var o,r=this,a=r.el,i=r.options,s=a.ownerDocument;if(n&&!Qt&&n.parentNode===a){var l=At(n);if(ne=a,te=(Qt=n).parentNode,oe=Qt.nextSibling,re=n,de=i.group,qe.dragged=Qt,he={target:Qt,clientX:(e||t).clientX,clientY:(e||t).clientY},ve=he.clientX-l.left,be=he.clientY-l.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Qt.style["will-change"]="all",o=function(){Jt("delayEnded",r,{evt:t}),qe.eventCanceled?r._onDrop():(r._disableDelayedDragEvents(),!bt&&r.nativeDraggable&&(Qt.draggable=!0),r._triggerDragStart(t,e),Zt({sortable:r,name:"choose",originalEvent:t}),It(Qt,i.chosenClass,!0))},i.ignore.split(",").forEach((function(t){Lt(Qt,t.trim(),We)})),xt(s,"dragover",Ye),xt(s,"mousemove",Ye),xt(s,"touchmove",Ye),xt(s,"mouseup",r._onDrop),xt(s,"touchend",r._onDrop),xt(s,"touchcancel",r._onDrop),bt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Qt.draggable=!0),Jt("delayStart",this,{evt:t}),!i.delay||i.delayOnTouchOnly&&!e||this.nativeDraggable&&(vt||gt))o();else{if(qe.eventCanceled)return void this._onDrop();xt(s,"mouseup",r._disableDelayedDrag),xt(s,"touchend",r._disableDelayedDrag),xt(s,"touchcancel",r._disableDelayedDrag),xt(s,"mousemove",r._delayedDragTouchMoveHandler),xt(s,"touchmove",r._delayedDragTouchMoveHandler),i.supportPointer&&xt(s,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(o,i.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Qt&&We(Qt),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;St(t,"mouseup",this._disableDelayedDrag),St(t,"touchend",this._disableDelayedDrag),St(t,"touchcancel",this._disableDelayedDrag),St(t,"mousemove",this._delayedDragTouchMoveHandler),St(t,"touchmove",this._delayedDragTouchMoveHandler),St(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?xt(document,"pointermove",this._onTouchMove):xt(document,e?"touchmove":"mousemove",this._onTouchMove):(xt(Qt,"dragend",this),xt(ne,"dragstart",this._onDragStart));try{document.selection?$e((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(Se=!1,ne&&Qt){Jt("dragStarted",this,{evt:e}),this.nativeDraggable&&xt(document,"dragover",He);var n=this.options;!t&&It(Qt,n.dragClass,!1),It(Qt,n.ghostClass,!0),qe.active=this,t&&this._appendGhost(),Zt({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(fe){this._lastX=fe.clientX,this._lastY=fe.clientY,je();for(var t=document.elementFromPoint(fe.clientX,fe.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(fe.clientX,fe.clientY))!==e;)e=t;if(Qt.parentNode[zt]._isOutsideThisEl(t),e)do{if(e[zt]&&e[zt]._onDragOver({clientX:fe.clientX,clientY:fe.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);Xe()}},_onTouchMove:function(t){if(he){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,r=t.touches?t.touches[0]:t,a=ee&&Mt(ee,!0),i=ee&&a&&a.a,s=ee&&a&&a.d,l=Le&&xe&&Xt(xe),c=(r.clientX-he.clientX+o.x)/(i||1)+(l?l[0]-Oe[0]:0)/(i||1),u=(r.clientY-he.clientY+o.y)/(s||1)+(l?l[1]-Oe[1]:0)/(s||1);if(!qe.active&&!Se){if(n&&Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))o.right+10||t.clientX<=o.right&&t.clientY>o.bottom&&t.clientX>=o.left:t.clientX>o.right&&t.clientY>o.top||t.clientX<=o.right&&t.clientY>o.bottom+10}(t,r,this)&&!p.animated){if(p===Qt)return P(!1);if(p&&a===t.target&&(i=p),i&&(n=At(i)),!1!==Ge(ne,a,Qt,e,i,n,t,!!i))return I(),p&&p.nextSibling?a.insertBefore(Qt,p.nextSibling):a.appendChild(Qt),te=a,M(),P(!0)}else if(p&&function(t,e,n){var o=At(Ft(n.el,0,n.options,!0));return e?t.clientXu+c*a/2:ld-Te)return-_e}else if(l>u+c*(1-r)/2&&ld-c*a/2)?l>u+c/2?1:-1:0}(t,i,n,r,_?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,De,we===i),0!==v){var E=jt(Qt);do{E-=v,y=te.children[E]}while(y&&("none"===Pt(y,"display")||y===ee))}if(0===v||y===i)return P(!1);we=i,_e=v;var N=i.nextElementSibling,C=!1,D=Ge(ne,a,Qt,e,i,n,t,C=1===v);if(!1!==D)return 1!==D&&-1!==D||(C=1===D),Ie=!0,setTimeout(ze,30),I(),C&&!N?a.appendChild(Qt):i.parentNode.insertBefore(Qt,C?N:i),x&&Gt(x,0,S-x.scrollTop),te=Qt.parentNode,void 0===b||De||(Te=Math.abs(b-At(i)[T])),M(),P(!0)}if(a.contains(Qt))return P(!1)}return!1}function O(s,l){Jt(s,h,ut({evt:t,isOwner:u,axis:r?"vertical":"horizontal",revert:o,dragRect:e,targetRect:n,canSort:d,fromSortable:m,target:i,completed:P,onMove:function(n,o){return Ge(ne,a,Qt,e,n,At(n),t,o)},changed:M},l))}function I(){O("dragOverAnimationCapture"),h.captureAnimationState(),h!==m&&m.captureAnimationState()}function P(e){return O("dragOverCompleted",{insertion:e}),e&&(u?c._hideClone():c._showClone(h),h!==m&&(It(Qt,me?me.options.ghostClass:c.options.ghostClass,!1),It(Qt,s.ghostClass,!0)),me!==h&&h!==qe.active?me=h:h===qe.active&&me&&(me=null),m===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){O("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==m&&(m.animateAll(),m._ignoreWhileAnimating=null)),(i===Qt&&!Qt.animated||i===a&&!i.animated)&&(we=null),s.dragoverBubble||t.rootEl||i===document||(Qt.parentNode[zt]._isOutsideThisEl(t.target),!e&&Ye(t)),!s.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),f=!0}function M(){le=jt(Qt),ue=jt(Qt,s.draggable),Zt({sortable:h,name:"change",toEl:a,newIndex:le,newDraggableIndex:ue,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){St(document,"mousemove",this._onTouchMove),St(document,"touchmove",this._onTouchMove),St(document,"pointermove",this._onTouchMove),St(document,"dragover",Ye),St(document,"mousemove",Ye),St(document,"touchmove",Ye)},_offUpEvents:function(){var t=this.el.ownerDocument;St(t,"mouseup",this._onDrop),St(t,"touchend",this._onDrop),St(t,"pointerup",this._onDrop),St(t,"touchcancel",this._onDrop),St(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;le=jt(Qt),ue=jt(Qt,n.draggable),Jt("drop",this,{evt:t}),te=Qt&&Qt.parentNode,le=jt(Qt),ue=jt(Qt,n.draggable),qe.eventCanceled||(Se=!1,De=!1,Ce=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ke(this.cloneId),Ke(this._dragStartId),this.nativeDraggable&&(St(document,"drop",this),St(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),yt&&Pt(document.body,"user-select",""),Pt(Qt,"transform",""),t&&(ye&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),ee&&ee.parentNode&&ee.parentNode.removeChild(ee),(ne===te||me&&"clone"!==me.lastPutMode)&&ae&&ae.parentNode&&ae.parentNode.removeChild(ae),Qt&&(this.nativeDraggable&&St(Qt,"dragend",this),We(Qt),Qt.style["will-change"]="",ye&&!Se&&It(Qt,me?me.options.ghostClass:this.options.ghostClass,!1),It(Qt,this.options.chosenClass,!1),Zt({sortable:this,name:"unchoose",toEl:te,newIndex:null,newDraggableIndex:null,originalEvent:t}),ne!==te?(le>=0&&(Zt({rootEl:te,name:"add",toEl:te,fromEl:ne,originalEvent:t}),Zt({sortable:this,name:"remove",toEl:te,originalEvent:t}),Zt({rootEl:te,name:"sort",toEl:te,fromEl:ne,originalEvent:t}),Zt({sortable:this,name:"sort",toEl:te,originalEvent:t})),me&&me.save()):le!==se&&le>=0&&(Zt({sortable:this,name:"update",toEl:te,originalEvent:t}),Zt({sortable:this,name:"sort",toEl:te,originalEvent:t})),qe.active&&(null!=le&&-1!==le||(le=se,ue=ce),Zt({sortable:this,name:"end",toEl:te,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){Jt("nulling",this),ne=Qt=te=ee=oe=ae=re=ie=he=fe=ye=le=ue=se=ce=we=_e=me=de=qe.dragged=qe.ghost=qe.clone=qe.active=null,Pe.forEach((function(t){t.checked=!0})),Pe.length=pe=ge=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Qt&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,r=n.length,a=this.options;o li").map((function(){return{id:$(this).data("id"),children:$(this).find("li").map((function(){return $(this).data("id")})).get()}})).get();e.forEach((function(t,e){var n=r().store.getById("tags",t.id);n.pushData({attributes:{position:e,isChild:!1},relationships:{parent:null}}),t.children.forEach((function(t,e){r().store.getById("tags",t).pushData({attributes:{position:e,isChild:!0},relationships:{parent:n}})}))})),r().request({url:r().forum.attribute("apiUrl")+"/tags/order",method:"POST",body:{order:e}}),this.forcedRefreshKey++,m.redraw()},e}(hn());function Sn(t,e,n,o,r,a,i){try{var s=t[a](i),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,r)}function En(t){return function(){var e=this,n=arguments;return new Promise((function(o,r){var a=t.apply(e,n);function i(t){Sn(a,o,r,i,s,"next",t)}function s(t){Sn(a,o,r,i,s,"throw",t)}i(void 0)}))}}var Nn=n(507),Cn=n.n(Nn),Dn=function(){function t(){this.loadedIncludes=void 0}var e=t.prototype;return e.load=function(){var t=En(Cn().mark((function t(e){var n,o=this;return Cn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(void 0===e&&(e=[]),this.loadedIncludes){t.next=3;break}return t.abrupt("return",this.query(e));case 3:if(0!==(n=e.filter((function(t){return!o.loadedIncludes.has(t)}))).length){t.next=6;break}return t.abrupt("return",Promise.resolve(G().store.all("tags")));case 6:return t.abrupt("return",this.query(n));case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.query=function(){var t=En(Cn().mark((function t(e){var n=this;return Cn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return void 0===e&&(e=[]),null!=this.loadedIncludes||(this.loadedIncludes=new Set),t.abrupt("return",G().store.find("tags",{include:e.join(",")}).then((function(t){return e.forEach((function(t){return n.loadedIncludes.add(t)})),t})));case 3:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}();const On=flarum.core.compat["common/extenders"];var In=n.n(On);const Pn=flarum.core.compat["common/utils/computed"];var Mn=n.n(Pn);const Ln=flarum.core.compat["common/Model"];var kn=n.n(Ln),An=function(t){function e(){return t.apply(this,arguments)||this}X(e,t);var n=e.prototype;return n.name=function(){return kn().attribute("name").call(this)},n.slug=function(){return kn().attribute("slug").call(this)},n.description=function(){return kn().attribute("description").call(this)},n.color=function(){return kn().attribute("color").call(this)},n.backgroundUrl=function(){return kn().attribute("backgroundUrl").call(this)},n.backgroundMode=function(){return kn().attribute("backgroundMode").call(this)},n.icon=function(){return kn().attribute("icon").call(this)},n.position=function(){return kn().attribute("position").call(this)},n.parent=function(){return kn().hasOne("parent").call(this)},n.children=function(){return kn().hasMany("children").call(this)},n.defaultSort=function(){return kn().attribute("defaultSort").call(this)},n.isChild=function(){return kn().attribute("isChild").call(this)},n.isHidden=function(){return kn().attribute("isHidden").call(this)},n.discussionCount=function(){return kn().attribute("discussionCount").call(this)},n.lastPostedAt=function(){return kn().attribute("lastPostedAt",kn().transformDate).call(this)},n.lastPostedDiscussion=function(){return kn().hasOne("lastPostedDiscussion").call(this)},n.isRestricted=function(){return kn().attribute("isRestricted").call(this)},n.canStartDiscussion=function(){return kn().attribute("canStartDiscussion").call(this)},n.canAddToDiscussion=function(){return kn().attribute("canAddToDiscussion").call(this)},n.isPrimary=function(){return Mn()("position","parent",(function(t,e){return null!==t&&!1===e})).call(this)},e}(kn());const Rn=[(new(In().Store)).add("tags",An)],Fn={"tags/utils/sortTags":C,"tags/models/Tag":An,"tags/helpers/tagsLabel":st,"tags/helpers/tagIcon":E,"tags/helpers/tagLabel":N,"tags/components/TagSelectionModal":at,"tags/states/TagListState":Dn},Bn=Object.assign(Fn,{"tags/addTagsHomePageOption":M,"tags/addTagChangePermission":A,"tags/components/TagsPage":xn,"tags/components/EditTagModal":_n,"tags/addTagPermission":O,"tags/addTagsPermissionScope":D}),jn=flarum.core;r().initializers.add("flarum-tags",(function(t){t.tagList=new Dn,t.extensionData.for("flarum-tags").registerPage(xn),D(),O(),M(),A(),(0,a.extend)(F().prototype,"customSettingComponents",(function(t){var e=this;t.add("flarum-tags.select-tags",(function(t){return m(lt,Object.assign({},t,{settingValue:e.settings[t.setting]}))}))}))})),Object.assign(jn.compat,Bn)},810:()=>{},440:(t,e,n)=>{var o=n(75).default;function r(){"use strict";t.exports=r=function(){return e},t.exports.__esModule=!0,t.exports.default=t.exports;var e={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(t,e,n){t[e]=n.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function d(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(t){d=function(t,e,n){return t[e]=n}}function m(t,e,n,o){var r=e&&e.prototype instanceof p?e:p,a=Object.create(r.prototype),s=new D(o||[]);return i(a,"_invoke",{value:S(t,n,s)}),a}function h(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=m;var f={};function p(){}function g(){}function v(){}var b={};d(b,l,(function(){return this}));var y=Object.getPrototypeOf,w=y&&y(y(O([])));w&&w!==n&&a.call(w,l)&&(b=w);var _=v.prototype=p.prototype=Object.create(b);function T(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,i,s,l){var c=h(t[r],t,i);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==o(d)&&a.call(d,"__await")?e.resolve(d.__await).then((function(t){n("next",t,s,l)}),(function(t){n("throw",t,s,l)})):e.resolve(d).then((function(t){u.value=t,s(u)}),(function(t){return n("throw",t,s,l)}))}l(c.arg)}var r;i(this,"_invoke",{value:function(t,o){function a(){return new e((function(e,r){n(t,o,e,r)}))}return r=r?r.then(a,a):a()}})}function S(t,e,n){var o="suspendedStart";return function(r,a){if("executing"===o)throw new Error("Generator is already running");if("completed"===o){if("throw"===r)throw a;return{value:void 0,done:!0}}for(n.method=r,n.arg=a;;){var i=n.delegate;if(i){var s=E(i,n);if(s){if(s===f)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===o)throw o="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o="executing";var l=h(t,e,n);if("normal"===l.type){if(o=n.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o="completed",n.method="throw",n.arg=l.arg)}}}function E(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var o=h(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var r=o.arg;return r?r.done?(e[t.resultName]=r.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):r:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function N(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 C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function D(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(N,this),this.reset(!0)}function O(t){if(t){var e=t[l];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--o){var r=this.tryEntries[o],i=r.completion;if("root"===r.tryLoc)return n("end");if(r.tryLoc<=this.prev){var s=a.call(r,"catchLoc"),l=a.call(r,"finallyLoc");if(s&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&a.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var o=n.completion;if("throw"===o.type){var r=o.arg;C(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:O(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),f}},e}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},75:t=>{function e(n){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},507:(t,e,n)=>{var o=n(440)();t.exports=o;try{regeneratorRuntime=o}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=o:Function("r","regeneratorRuntime = r")(o)}}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var a=e[o]={exports:{}};return t[o](a,a.exports,n),a.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};(()=>{"use strict";n.r(o),n.d(o,{extend:()=>r.l});var t=n(810),e={};for(const n in t)"default"!==n&&(e[n]=()=>t[n]);n.d(o,e);var r=n(946)})(),module.exports=o})(); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/extensions/tags/js/dist/admin.js.map b/extensions/tags/js/dist/admin.js.map index a7147a467..9ce892ae3 100644 --- a/extensions/tags/js/dist/admin.js.map +++ b/extensions/tags/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"file":"admin.js","mappings":"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","sources":["webpack://@flarum/tags/external root \"flarum.core.compat['admin/app']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/tags/external root \"flarum.core.compat['admin/components/PermissionGrid']\"","webpack://@flarum/tags/external root \"flarum.core.compat['admin/components/PermissionDropdown']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extract']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/textContrastClass']\"","webpack://@flarum/tags/./src/common/helpers/tagIcon.js","webpack://@flarum/tags/./src/common/helpers/tagLabel.js","webpack://@flarum/tags/./src/common/utils/sortTags.tsx","webpack://@flarum/tags/./src/admin/addTagsPermissionScope.tsx","webpack://@flarum/tags/./src/admin/addTagPermission.js","webpack://@flarum/tags/external root \"flarum.core.compat['admin/components/BasicsPage']\"","webpack://@flarum/tags/./src/admin/addTagsHomePageOption.js","webpack://@flarum/tags/external root \"flarum.core.compat['admin/components/SettingDropdown']\"","webpack://@flarum/tags/./src/admin/addTagChangePermission.js","webpack://@flarum/tags/external root \"flarum.core.compat['admin/components/AdminPage']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/app']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/tags/./src/forum/components/ToggleButton.js","webpack://@flarum/tags/./src/common/components/TagSelectionModal.tsx","webpack://@flarum/tags/../../../node_modules/clsx/dist/clsx.m.js","webpack://@flarum/tags/./src/common/helpers/tagsLabel.js","webpack://@flarum/tags/./src/admin/components/SelectTagsSettingComponent.tsx","webpack://@flarum/tags/../../../node_modules/sortablejs/modular/sortable.esm.js","webpack://@flarum/tags/external root \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/ColorPreviewInput']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/tags/./src/admin/components/EditTagModal.tsx","webpack://@flarum/tags/./src/admin/components/TagsPage.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@flarum/tags/./src/common/states/TagListState.ts","webpack://@flarum/tags/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/tags/./src/common/models/Tag.ts","webpack://@flarum/tags/./src/common/extend.ts","webpack://@flarum/tags/./src/common/compat.js","webpack://@flarum/tags/./src/admin/compat.js","webpack://@flarum/tags/external assign \"flarum.core\"","webpack://@flarum/tags/./src/admin/index.ts","webpack://@flarum/tags/./src/admin/addTagSelectionSettingComponent.tsx","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/regenerator/index.js","webpack://@flarum/tags/webpack/bootstrap","webpack://@flarum/tags/webpack/runtime/compat get default export","webpack://@flarum/tags/webpack/runtime/define property getters","webpack://@flarum/tags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/tags/webpack/runtime/make namespace object"],"sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/PermissionGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/PermissionDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extract'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/textContrastClass'];","import classList from 'flarum/common/utils/classList';\n\nexport default function tagIcon(tag, attrs = {}, settings = {}) {\n const hasIcon = tag && tag.icon();\n const { useColor = true } = settings;\n\n attrs.className = classList([attrs.className, 'icon', hasIcon ? tag.icon() : 'TagIcon']);\n\n if (tag && useColor) {\n attrs.style = attrs.style || {};\n attrs.style['--color'] = tag.color();\n\n if (hasIcon) {\n attrs.style.color = tag.color();\n }\n } else if (!tag) {\n attrs.className += ' untagged';\n }\n\n return hasIcon ? : ;\n}\n","import extract from 'flarum/common/utils/extract';\nimport Link from 'flarum/common/components/Link';\nimport classList from 'flarum/common/utils/classList';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport tagIcon from './tagIcon';\n\nexport default function tagLabel(tag, attrs = {}) {\n attrs.style = attrs.style || {};\n attrs.className = 'TagLabel ' + (attrs.className || '');\n\n const link = extract(attrs, 'link');\n const tagText = tag ? tag.name() : app.translator.trans('flarum-tags.lib.deleted_tag_text');\n\n if (tag) {\n const color = tag.color();\n if (color) {\n attrs.style['--tag-bg'] = color;\n attrs.className = classList(attrs.className, 'colored', textContrastClass(color));\n }\n\n if (link) {\n attrs.title = tag.description() || '';\n attrs.href = app.route('tag', { tags: tag.slug() });\n }\n\n if (tag.isChild()) {\n attrs.className += ' TagLabel--child';\n }\n } else {\n attrs.className += ' untagged';\n }\n\n return m(\n link ? Link : 'span',\n attrs,\n \n {tag && tag.icon() && tagIcon(tag, { className: 'TagLabel-icon' }, { useColor: false })}\n {tagText}\n \n );\n}\n","import Tag from '../models/Tag';\n\nexport default function sortTags(tags: Tag[]) {\n return tags.slice(0).sort((a, b) => {\n const aPos = a.position();\n const bPos = b.position();\n\n // If they're both secondary tags, sort them by their discussions count,\n // descending.\n if (aPos === null && bPos === null) return b.discussionCount() - a.discussionCount();\n\n // If just one is a secondary tag, then the primary tag should\n // come first.\n if (bPos === null) return -1;\n if (aPos === null) return 1;\n\n // If we've made it this far, we know they're both primary tags. So we'll\n // need to see if they have parents.\n const aParent = a.parent();\n const bParent = b.parent();\n\n // If they both have the same parent, then their positions are local,\n // so we can compare them directly.\n if (aParent === bParent) return aPos - bPos;\n // If they are both child tags, then we will compare the positions of their\n // parents.\n else if (aParent && bParent) return aParent.position()! - bParent.position()!;\n // If we are comparing a child tag with its parent, then we let the parent\n // come first. If we are comparing an unrelated parent/child, then we\n // compare both of the parents.\n else if (aParent) return aParent === b ? 1 : aParent.position()! - bPos;\n else if (bParent) return bParent === a ? -1 : aPos - bParent.position()!;\n\n return 0;\n });\n}\n","import app from 'flarum/admin/app';\nimport { extend, override } from 'flarum/common/extend';\nimport PermissionGrid from 'flarum/admin/components/PermissionGrid';\nimport PermissionDropdown from 'flarum/admin/components/PermissionDropdown';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nimport tagLabel from '../common/helpers/tagLabel';\nimport tagIcon from '../common/helpers/tagIcon';\nimport sortTags from '../common/utils/sortTags';\nimport Tag from '../common/models/Tag';\n\nexport default function () {\n extend(PermissionGrid.prototype, 'oninit', function () {\n this.loading = true;\n });\n\n extend(PermissionGrid.prototype, 'oncreate', function () {\n app.tagList.load().then(() => {\n this.loading = false;\n m.redraw();\n });\n });\n\n override(PermissionGrid.prototype, 'view', function (original, vnode) {\n if (this.loading) {\n return ;\n }\n\n return original(vnode);\n });\n\n override(app, 'getRequiredPermissions', (original, permission) => {\n const tagPrefix = permission.match(/^tag\\d+\\./);\n\n if (tagPrefix) {\n const globalPermission = permission.substr(tagPrefix[0].length);\n\n const required = original(globalPermission);\n\n return required.map((required) => tagPrefix[0] + required);\n }\n\n return original(permission);\n });\n\n extend(PermissionGrid.prototype, 'scopeItems', (items) => {\n sortTags(app.store.all('tags'))\n .filter((tag) => tag.isRestricted())\n .forEach((tag) =>\n items.add('tag' + tag.id(), {\n label: tagLabel(tag),\n onremove: () => tag.save({ isRestricted: false }),\n render: (item) => {\n if ('setting' in item) return null;\n\n if (\n item.permission === 'viewForum' ||\n item.permission === 'startDiscussion' ||\n (item.permission.startsWith('discussion.') && item.tagScoped !== false) ||\n item.tagScoped\n ) {\n return ;\n }\n\n return null;\n },\n })\n );\n });\n\n extend(PermissionGrid.prototype, 'scopeControlItems', (items) => {\n const tags = sortTags(app.store.all('tags').filter((tag) => !tag.isRestricted()));\n\n if (tags.length) {\n items.add(\n 'tag',\n \n {tags.map((tag) => (\n \n ))}\n \n );\n }\n });\n}\n","export default function () {\n app.extensionData\n .for('flarum-tags')\n .registerPermission(\n {\n icon: 'fas fa-tag',\n label: app.translator.trans('flarum-tags.admin.permissions.tag_discussions_label'),\n permission: 'discussion.tag',\n },\n 'moderate',\n 95\n )\n .registerPermission(\n {\n icon: 'fas fa-tags',\n label: app.translator.trans('flarum-tags.admin.permissions.bypass_tag_counts_label'),\n permission: 'bypassTagCounts',\n },\n 'start',\n 89\n );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/BasicsPage'];","import { extend } from 'flarum/common/extend';\nimport BasicsPage from 'flarum/admin/components/BasicsPage';\n\nexport default function () {\n extend(BasicsPage.prototype, 'homePageItems', (items) => {\n items.add('tags', {\n path: '/tags',\n label: app.translator.trans('flarum-tags.admin.basics.tags_label'),\n });\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/SettingDropdown'];","import app from 'flarum/admin/app';\nimport { extend } from 'flarum/common/extend';\nimport PermissionGrid from 'flarum/admin/components/PermissionGrid';\nimport SettingDropdown from 'flarum/admin/components/SettingDropdown';\n\nexport default function () {\n extend(PermissionGrid.prototype, 'startItems', (items) => {\n items.add(\n 'allowTagChange',\n {\n icon: 'fas fa-tag',\n label: app.translator.trans('flarum-tags.admin.permissions.allow_edit_tags_label'),\n setting: () => {\n const minutes = parseInt(app.data.settings.allow_tag_change, 10);\n\n return (\n \n );\n },\n },\n 90\n );\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/AdminPage'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\n\n/**\n * @TODO move to core\n */\nexport default class ToggleButton extends Component {\n view(vnode) {\n const { className, isToggled, ...attrs } = this.attrs;\n const icon = isToggled ? 'far fa-check-circle' : 'far fa-circle';\n\n return (\n \n );\n }\n}\n","import app from 'flarum/common/app';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\nimport highlight from 'flarum/common/helpers/highlight';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Modal from 'flarum/common/components/Modal';\nimport Stream from 'flarum/common/utils/Stream';\n\nimport sortTags from '../utils/sortTags';\nimport tagLabel from '../helpers/tagLabel';\nimport tagIcon from '../helpers/tagIcon';\nimport ToggleButton from '../../forum/components/ToggleButton';\n\nimport type Tag from '../models/Tag';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\n\nexport interface ITagSelectionModalLimits {\n /** Whether to allow bypassing the limits set here. This will show a toggle button to bypass limits. */\n allowBypassing?: boolean;\n /** Maximum number of primary/secondary tags allowed. */\n max?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n /** Minimum number of primary/secondary tags to be selected. */\n min?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n}\n\nexport interface ITagSelectionModalAttrs extends IInternalModalAttrs {\n /** Custom modal className to use. */\n className?: string;\n /** Modal title, defaults to 'Choose Tags'. */\n title?: string;\n /** Initial tag selection value. */\n selectedTags?: Tag[];\n /** Limits set based on minimum and maximum number of primary/secondary tags that can be selected. */\n limits?: ITagSelectionModalLimits;\n /** Whether to allow resetting the value. Defaults to true. */\n allowResetting?: boolean;\n /** Whether to require the parent tag of a selected tag to be selected as well. */\n requireParentTag?: boolean;\n /** Filter tags that can be selected. */\n selectableTags?: (tags: Tag[]) => Tag[];\n /** Whether a tag can be selected. */\n canSelect: (tag: Tag) => boolean;\n /** Callback for when a tag is selected. */\n onSelect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when a tag is deselected. */\n onDeselect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when the selection is submitted. */\n onsubmit?: (selected: Tag[]) => void;\n}\n\nexport type ITagSelectionModalState = undefined;\n\nexport default class TagSelectionModal<\n CustomAttrs extends ITagSelectionModalAttrs = ITagSelectionModalAttrs,\n CustomState extends ITagSelectionModalState = ITagSelectionModalState\n> extends Modal {\n protected loading = true;\n protected tags!: Tag[];\n protected selected: Tag[] = [];\n protected bypassReqs: boolean = false;\n\n protected filter = Stream('');\n protected focused = false;\n protected navigator = new KeyboardNavigatable();\n protected indexTag?: Tag;\n\n static initAttrs(attrs: ITagSelectionModalAttrs) {\n super.initAttrs(attrs);\n\n // Default values for optional attributes.\n attrs.title ||= extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.title'));\n attrs.canSelect ||= () => true;\n attrs.allowResetting ??= true;\n attrs.limits = {\n min: {\n total: attrs.limits?.min?.total ?? -Infinity,\n primary: attrs.limits?.min?.primary ?? -Infinity,\n secondary: attrs.limits?.min?.secondary ?? -Infinity,\n },\n max: {\n total: attrs.limits?.max?.total ?? Infinity,\n primary: attrs.limits?.max?.primary ?? Infinity,\n secondary: attrs.limits?.max?.secondary ?? Infinity,\n },\n };\n\n // Prevent illogical limits from being provided.\n catchInvalidLimits(attrs.limits);\n }\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.navigator\n .onUp(() => this.setIndex(this.getCurrentNumericIndex() - 1, true))\n .onDown(() => this.setIndex(this.getCurrentNumericIndex() + 1, true))\n .onSelect(this.select.bind(this))\n .onRemove(() => this.selected.splice(this.selected.length - 1, 1));\n\n app.tagList.load(['parent']).then((tags) => {\n this.loading = false;\n\n if (this.attrs.selectableTags) {\n tags = this.attrs.selectableTags(tags);\n }\n\n this.tags = sortTags(tags);\n\n if (this.attrs.selectedTags) {\n this.attrs.selectedTags.map(this.addTag.bind(this));\n }\n\n this.indexTag = tags[0];\n\n m.redraw();\n });\n }\n\n className() {\n return classList('TagSelectionModal', this.attrs.className);\n }\n\n title() {\n return this.attrs.title;\n }\n\n content() {\n if (this.loading || !this.tags) {\n return ;\n }\n\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n const tags = this.getFilteredTags();\n\n const inputWidth = Math.max(extractText(this.getInstruction(primaryCount, secondaryCount)).length, this.filter().length);\n\n return [\n
\n
\n
\n
this.$('.TagsInput input').focus()}>\n \n {this.selected.map((tag) => (\n {\n this.removeTag(tag);\n this.onready();\n }}\n >\n {tagLabel(tag)}\n \n ))}\n \n (this.focused = true)}\n onblur={() => (this.focused = false)}\n />\n
\n
\n
\n \n {app.translator.trans('flarum-tags.lib.tag_selection_modal.submit_button')}\n \n
\n
\n
,\n\n
\n
    \n {tags.map((tag) => (\n (this.indexTag = tag)}\n onclick={this.toggleTag.bind(this, tag)}\n >\n {tagIcon(tag)}\n {highlight(tag.name(), filter)}\n {tag.description() ? {tag.description()} : ''}\n \n ))}\n
\n {this.attrs.limits!.allowBypassing && (\n
\n (this.bypassReqs = !this.bypassReqs)} isToggled={this.bypassReqs}>\n {app.translator.trans('flarum-tags.lib.tag_selection_modal.bypass_requirements')}\n \n
\n )}\n
,\n ];\n }\n\n /**\n * Filters the available tags on every state change.\n */\n private getFilteredTags(): Tag[] {\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n let tags = this.tags;\n\n if (this.attrs.requireParentTag) {\n // Filter out all child tags whose parents have not been selected. This\n // makes it impossible to select a child if its parent hasn't been selected.\n tags = tags.filter((tag) => {\n const parent = tag.parent();\n return parent !== null && (parent === false || this.selected.includes(parent));\n });\n }\n\n if (!this.bypassReqs) {\n // If we reached the total maximum number of tags, we can't select anymore.\n if (this.selected.length >= this.attrs.limits!.max!.total!) {\n tags = tags.filter((tag) => this.selected.includes(tag));\n }\n // If the number of selected primary/secondary tags is at the maximum, then\n // we'll filter out all other tags of that type.\n else {\n if (primaryCount >= this.attrs.limits!.max!.primary!) {\n tags = tags.filter((tag) => !tag.isPrimary() || this.selected.includes(tag));\n }\n if (secondaryCount >= this.attrs.limits!.max!.secondary!) {\n tags = tags.filter((tag) => tag.isPrimary() || this.selected.includes(tag));\n }\n }\n }\n\n // If the user has entered text in the filter input, then filter by tags\n // whose name matches what they've entered.\n if (filter) {\n tags = tags.filter((tag) => tag.name().toLowerCase().includes(filter));\n }\n\n if (!this.indexTag || !tags.includes(this.indexTag)) this.indexTag = tags[0];\n\n return tags;\n }\n\n /**\n * Counts the number of selected primary tags.\n */\n protected primaryCount(): number {\n return this.selected.filter((tag) => tag.isPrimary()).length;\n }\n\n /**\n * Counts the number of selected secondary tags.\n */\n protected secondaryCount(): number {\n return this.selected.filter((tag) => !tag.isPrimary()).length;\n }\n\n /**\n * Validates the number of selected primary/secondary tags against the set min max limits.\n */\n protected meetsRequirements(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs || (this.attrs.allowResetting && this.selected.length === 0)) {\n return true;\n }\n\n if (this.selected.length < this.attrs.limits!.min!.total!) {\n return false;\n }\n\n return primaryCount >= this.attrs.limits!.min!.primary! && secondaryCount >= this.attrs.limits!.min!.secondary!;\n }\n\n /**\n * Add the given tag to the list of selected tags.\n */\n protected addTag(tag: Tag | undefined) {\n if (!tag || !this.attrs.canSelect(tag)) return;\n\n if (this.attrs.onSelect) {\n this.attrs.onSelect(tag, this.selected);\n }\n\n // If this tag has a parent, we'll also need to add the parent tag to the\n // selected list if it's not already in there.\n if (this.attrs.requireParentTag) {\n const parent = tag.parent();\n if (parent && !this.selected.includes(parent)) {\n this.selected.push(parent);\n }\n }\n\n if (!this.selected.includes(tag)) {\n this.selected.push(tag);\n }\n }\n\n /**\n * Remove the given tag from the list of selected tags.\n */\n protected removeTag(tag: Tag) {\n const index = this.selected.indexOf(tag);\n\n if (index !== -1) {\n this.selected.splice(index, 1);\n\n // Look through the list of selected tags for any tags which have the tag\n // we just removed as their parent. We'll need to remove them too.\n if (this.attrs.requireParentTag) {\n this.selected.filter((t) => t.parent() === tag).forEach(this.removeTag.bind(this));\n }\n\n if (this.attrs.onDeselect) {\n this.attrs.onDeselect(tag, this.selected);\n }\n }\n }\n\n protected toggleTag(tag: Tag) {\n // Won't happen, needed for type safety.\n if (!this.tags) return;\n\n if (this.selected.includes(tag)) {\n this.removeTag(tag);\n } else {\n this.addTag(tag);\n }\n\n if (this.filter()) {\n this.filter('');\n this.indexTag = this.tags[0];\n }\n\n this.onready();\n }\n\n /**\n * Gives human text instructions based on the current number of selected tags and set limits.\n */\n protected getInstruction(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs) {\n return '';\n }\n\n if (primaryCount < this.attrs.limits!.min!.primary!) {\n const remaining = this.attrs.limits!.min!.primary! - primaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_primary_placeholder', { count: remaining }));\n } else if (secondaryCount < this.attrs.limits!.min!.secondary!) {\n const remaining = this.attrs.limits!.min!.secondary! - secondaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_secondary_placeholder', { count: remaining }));\n } else if (this.selected.length < this.attrs.limits!.min!.total!) {\n const remaining = this.attrs.limits!.min!.total! - this.selected.length;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_tags_placeholder', { count: remaining }));\n }\n\n return '';\n }\n\n /**\n * Submit tag selection.\n */\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n if (this.attrs.onsubmit) this.attrs.onsubmit(this.selected);\n\n this.hide();\n }\n\n protected select(e: KeyboardEvent) {\n // Ctrl + Enter submits the selection, just Enter completes the current entry\n if (e.metaKey || e.ctrlKey || (this.indexTag && this.selected.includes(this.indexTag))) {\n if (this.selected.length) {\n // The DOM submit method doesn't emit a `submit event, so we\n // simulate a manual submission so our `onsubmit` logic is run.\n this.$('button[type=\"submit\"]').click();\n }\n } else if (this.indexTag) {\n this.getItem(this.indexTag)[0].dispatchEvent(new Event('click'));\n }\n }\n\n protected selectableItems() {\n return this.$('.TagSelectionModal-list > li');\n }\n\n protected getCurrentNumericIndex() {\n if (!this.indexTag) return -1;\n\n return this.selectableItems().index(this.getItem(this.indexTag));\n }\n\n protected getItem(selectedTag: Tag) {\n return this.selectableItems().filter(`[data-index=\"${selectedTag.id()}\"]`);\n }\n\n protected setIndex(index: number, scrollToItem: boolean) {\n const $items = this.selectableItems();\n const $dropdown = $items.parent();\n\n if (index < 0) {\n index = $items.length - 1;\n } else if (index >= $items.length) {\n index = 0;\n }\n\n const $item = $items.eq(index);\n\n this.indexTag = app.store.getById('tags', $item.attr('data-index')!);\n\n m.redraw();\n\n if (scrollToItem && this.indexTag) {\n const dropdownScroll = $dropdown.scrollTop()!;\n const dropdownTop = $dropdown.offset()!.top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight()!;\n const itemTop = $item.offset()!.top;\n const itemBottom = itemTop + $item.outerHeight()!;\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\n\n/**\n * Catch invalid limits provided to the tag selection modal.\n */\nfunction catchInvalidLimits(limits: ITagSelectionModalLimits) {\n if (limits.min!.primary! > limits.max!.primary!) {\n throw new Error('The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.');\n }\n\n if (limits.min!.secondary! > limits.max!.secondary!) {\n throw new Error('The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.');\n }\n\n if (limits.min!.total! > limits.max!.primary! + limits.max!.secondary!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.');\n }\n\n if (limits.max!.total! < limits.min!.primary! + limits.min!.secondary!) {\n throw new Error('The maximum number of tags allowed cannot be less than the minimum number of primary and secondary tags allowed together.');\n }\n\n if (limits.min!.total! > limits.max!.total!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of tags allowed.');\n }\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t {\n if (tag || tags.length === 1) {\n children.push(tagLabel(tag, { link }));\n }\n });\n } else {\n children.push(tagLabel());\n }\n\n return {children};\n}\n","import app from 'flarum/admin/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport TagSelectionModal from '../../common/components/TagSelectionModal';\nimport tagsLabel from '../../common/helpers/tagsLabel';\n\nimport type { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';\nimport type Stream from 'flarum/common/utils/Stream';\nimport type { ITagSelectionModalAttrs } from '../../common/components/TagSelectionModal';\nimport type Tag from '../../common/models/Tag';\n\nexport interface SelectTagsSettingComponentOptions extends CommonSettingsItemOptions {\n type: 'flarum-tags.select-tags';\n options?: ITagSelectionModalAttrs;\n}\n\nexport interface SelectTagsSettingComponentAttrs extends SelectTagsSettingComponentOptions {\n settingValue: Stream;\n}\n\nexport default class SelectTagsSettingComponent<\n CustomAttrs extends SelectTagsSettingComponentAttrs = SelectTagsSettingComponentAttrs\n> extends Component {\n protected tags: Tag[] = [];\n protected loaded = false;\n\n view() {\n const value = JSON.parse(this.attrs.settingValue() || '[]');\n\n if (!this.loaded) {\n app.tagList.load(['parent']).then((tags) => {\n this.tags = tags.filter((tag) => value.includes(tag.id()));\n this.loaded = true;\n m.redraw();\n });\n }\n\n return (\n
\n \n {this.attrs.help &&

{this.attrs.help}

}\n {!this.loaded ? (\n \n ) : (\n \n app.modal.show(TagSelectionModal, {\n selectedTags: this.tags,\n onsubmit: (tags: Tag[]) => {\n this.tags = tags;\n this.attrs.settingValue(JSON.stringify(tags.map((tag) => tag.id())));\n },\n ...this.attrs.options,\n })\n }\n >\n {!!this.tags.length ? (\n tagsLabel(this.tags)\n ) : (\n {app.translator.trans('flarum-tags.admin.settings.button_text')}\n )}\n \n )}\n
\n );\n }\n}\n","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['admin/components/ExtensionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/ColorPreviewInput'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/admin/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport ColorPreviewInput from 'flarum/common/components/ColorPreviewInput';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport { slug } from 'flarum/common/utils/string';\nimport Stream from 'flarum/common/utils/Stream';\n\nimport tagLabel from '../../common/helpers/tagLabel';\nimport type Mithril from 'mithril';\nimport type Tag from '../../common/models/Tag';\nimport extractText from 'flarum/common/utils/extractText';\nimport { ModelIdentifier } from 'flarum/common/Model';\n\nexport interface EditTagModalAttrs extends IInternalModalAttrs {\n primary?: boolean;\n model?: Tag;\n}\n\n/**\n * The `EditTagModal` component shows a modal dialog which allows the user\n * to create or edit a tag.\n */\nexport default class EditTagModal extends Modal {\n tag!: Tag;\n\n name!: Stream;\n slug!: Stream;\n description!: Stream;\n color!: Stream;\n icon!: Stream;\n isHidden!: Stream;\n primary!: Stream;\n\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.tag = this.attrs.model || app.store.createRecord('tags');\n\n this.name = Stream(this.tag.name() || '');\n this.slug = Stream(this.tag.slug() || '');\n this.description = Stream(this.tag.description() || '');\n this.color = Stream(this.tag.color() || '');\n this.icon = Stream(this.tag.icon() || '');\n this.isHidden = Stream(this.tag.isHidden() || false);\n this.primary = Stream(this.attrs.primary || false);\n }\n\n className() {\n return 'EditTagModal Modal--small';\n }\n\n title() {\n return this.name()\n ? tagLabel(app.store.createRecord('tags', { attributes: this.submitData() }))\n : app.translator.trans('flarum-tags.admin.edit_tag.title');\n }\n\n content() {\n return (\n
\n
{this.fields().toArray()}
\n
\n );\n }\n\n fields() {\n const items = new ItemList();\n\n items.add(\n 'name',\n
\n \n {\n const target = e.target as HTMLInputElement;\n this.name(target.value);\n this.slug(slug(target.value));\n }}\n />\n
,\n 50\n );\n\n items.add(\n 'slug',\n
\n \n \n
,\n 40\n );\n\n items.add(\n 'description',\n
\n \n