diff --git a/js/dist/admin.js b/js/dist/admin.js index d1d1270c3..73e171341 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -102,14 +102,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compat", function() { return _src_admin__WEBPACK_IMPORTED_MODULE_1__["compat"]; }); -/* - * This file is part of Flarum. - * - * (c) Toby Zerner - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ @@ -11599,6 +11591,7 @@ var Admin = /*#__PURE__*/function (_Application) { window.location = this.backUrl(); } }; + _this.data = void 0; Object(_routes__WEBPACK_IMPORTED_MODULE_6__["default"])(Object(_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__["default"])(_this)); return _this; } @@ -11686,14 +11679,163 @@ window.app = app; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js"); /* harmony import */ var _common_compat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/compat */ "./src/common/compat.ts"); -/* harmony import */ var _Admin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Admin */ "./src/admin/Admin.ts"); +/* harmony import */ var _utils_saveSettings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/saveSettings */ "./src/admin/utils/saveSettings.ts"); +/* harmony import */ var _components_SettingDropdown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SettingDropdown */ "./src/admin/components/SettingDropdown.tsx"); +/* harmony import */ var _components_EditCustomFooterModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/EditCustomFooterModal */ "./src/admin/components/EditCustomFooterModal.tsx"); +/* harmony import */ var _components_SessionDropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/SessionDropdown */ "./src/admin/components/SessionDropdown.tsx"); +/* harmony import */ var _components_HeaderPrimary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/HeaderPrimary */ "./src/admin/components/HeaderPrimary.tsx"); +/* harmony import */ var _components_AppearancePage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/AppearancePage */ "./src/admin/components/AppearancePage.tsx"); +/* harmony import */ var _components_Page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/Page */ "./src/admin/components/Page.tsx"); +/* harmony import */ var _components_StatusWidget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/StatusWidget */ "./src/admin/components/StatusWidget.tsx"); +/* harmony import */ var _components_HeaderSecondary__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/HeaderSecondary */ "./src/admin/components/HeaderSecondary.tsx"); +/* harmony import */ var _components_SettingsModal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/SettingsModal */ "./src/admin/components/SettingsModal.tsx"); +/* harmony import */ var _components_DashboardWidget__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/DashboardWidget */ "./src/admin/components/DashboardWidget.tsx"); +/* harmony import */ var _components_AddExtensionModal__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/AddExtensionModal */ "./src/admin/components/AddExtensionModal.tsx"); +/* harmony import */ var _components_ExtensionsPage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/ExtensionsPage */ "./src/admin/components/ExtensionsPage.tsx"); +/* harmony import */ var _components_AdminLinkButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/AdminLinkButton */ "./src/admin/components/AdminLinkButton.tsx"); +/* harmony import */ var _components_PermissionGrid__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/PermissionGrid */ "./src/admin/components/PermissionGrid.tsx"); +/* harmony import */ var _components_MailPage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/MailPage */ "./src/admin/components/MailPage.tsx"); +/* harmony import */ var _components_UploadImageButton__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/UploadImageButton */ "./src/admin/components/UploadImageButton.tsx"); +/* harmony import */ var _components_LoadingModal__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/LoadingModal */ "./src/admin/components/LoadingModal.tsx"); +/* harmony import */ var _components_DashboardPage__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/DashboardPage */ "./src/admin/components/DashboardPage.tsx"); +/* harmony import */ var _components_BasicsPage__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./components/BasicsPage */ "./src/admin/components/BasicsPage.tsx"); +/* harmony import */ var _components_EditCustomHeaderModal__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/EditCustomHeaderModal */ "./src/admin/components/EditCustomHeaderModal.tsx"); +/* harmony import */ var _components_PermissionsPage__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/PermissionsPage */ "./src/admin/components/PermissionsPage.tsx"); +/* harmony import */ var _components_PermissionDropdown__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/PermissionDropdown */ "./src/admin/components/PermissionDropdown.tsx"); +/* harmony import */ var _components_AdminNav__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./components/AdminNav */ "./src/admin/components/AdminNav.tsx"); +/* harmony import */ var _components_EditCustomCssModal__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./components/EditCustomCssModal */ "./src/admin/components/EditCustomCssModal.tsx"); +/* harmony import */ var _components_EditGroupModal__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./components/EditGroupModal */ "./src/admin/components/EditGroupModal.tsx"); +/* harmony import */ var _routes__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./routes */ "./src/admin/routes.ts"); +/* harmony import */ var _Admin__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./Admin */ "./src/admin/Admin.ts"); + + + + + + + + + + + + + + + + + + + + + + + + + + + /* harmony default export */ __webpack_exports__["default"] = (Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(_common_compat__WEBPACK_IMPORTED_MODULE_1__["default"], { - Admin: _Admin__WEBPACK_IMPORTED_MODULE_2__["default"] + 'utils/saveSettings': _utils_saveSettings__WEBPACK_IMPORTED_MODULE_2__["default"], + 'components/SettingDropdown': _components_SettingDropdown__WEBPACK_IMPORTED_MODULE_3__["default"], + 'components/EditCustomFooterModal': _components_EditCustomFooterModal__WEBPACK_IMPORTED_MODULE_4__["default"], + 'components/SessionDropdown': _components_SessionDropdown__WEBPACK_IMPORTED_MODULE_5__["default"], + 'components/HeaderPrimary': _components_HeaderPrimary__WEBPACK_IMPORTED_MODULE_6__["default"], + 'components/AppearancePage': _components_AppearancePage__WEBPACK_IMPORTED_MODULE_7__["default"], + 'components/Page': _components_Page__WEBPACK_IMPORTED_MODULE_8__["default"], + 'components/StatusWidget': _components_StatusWidget__WEBPACK_IMPORTED_MODULE_9__["default"], + 'components/HeaderSecondary': _components_HeaderSecondary__WEBPACK_IMPORTED_MODULE_10__["default"], + 'components/SettingsModal': _components_SettingsModal__WEBPACK_IMPORTED_MODULE_11__["default"], + 'components/DashboardWidget': _components_DashboardWidget__WEBPACK_IMPORTED_MODULE_12__["default"], + 'components/AddExtensionModal': _components_AddExtensionModal__WEBPACK_IMPORTED_MODULE_13__["default"], + 'components/ExtensionsPage': _components_ExtensionsPage__WEBPACK_IMPORTED_MODULE_14__["default"], + 'components/AdminLinkButton': _components_AdminLinkButton__WEBPACK_IMPORTED_MODULE_15__["default"], + 'components/PermissionGrid': _components_PermissionGrid__WEBPACK_IMPORTED_MODULE_16__["default"], + 'components/MailPage': _components_MailPage__WEBPACK_IMPORTED_MODULE_17__["default"], + 'components/UploadImageButton': _components_UploadImageButton__WEBPACK_IMPORTED_MODULE_18__["default"], + 'components/LoadingModal': _components_LoadingModal__WEBPACK_IMPORTED_MODULE_19__["default"], + 'components/DashboardPage': _components_DashboardPage__WEBPACK_IMPORTED_MODULE_20__["default"], + 'components/BasicsPage': _components_BasicsPage__WEBPACK_IMPORTED_MODULE_21__["default"], + 'components/EditCustomHeaderModal': _components_EditCustomHeaderModal__WEBPACK_IMPORTED_MODULE_22__["default"], + 'components/PermissionsPage': _components_PermissionsPage__WEBPACK_IMPORTED_MODULE_23__["default"], + 'components/PermissionDropdown': _components_PermissionDropdown__WEBPACK_IMPORTED_MODULE_24__["default"], + 'components/AdminNav': _components_AdminNav__WEBPACK_IMPORTED_MODULE_25__["default"], + 'components/EditCustomCssModal': _components_EditCustomCssModal__WEBPACK_IMPORTED_MODULE_26__["default"], + 'components/EditGroupModal': _components_EditGroupModal__WEBPACK_IMPORTED_MODULE_27__["default"], + routes: _routes__WEBPACK_IMPORTED_MODULE_28__["default"], + Admin: _Admin__WEBPACK_IMPORTED_MODULE_29__["default"] })); +/***/ }), + +/***/ "./src/admin/components/AddExtensionModal.tsx": +/*!****************************************************!*\ + !*** ./src/admin/components/AddExtensionModal.tsx ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AddExtensionModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_components_Modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/Modal */ "./src/common/components/Modal.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + +var AddExtensionModal = /*#__PURE__*/function (_Modal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(AddExtensionModal, _Modal); + + var _super = _createSuper(AddExtensionModal); + + function AddExtensionModal() { + return _Modal.apply(this, arguments) || this; + } + + var _proto = AddExtensionModal.prototype; + + _proto.className = function className() { + return 'AddExtensionModal Modal--small'; + }; + + _proto.title = function title() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.add_extension.title'); + }; + + _proto.content = function content() { + return m("div", { + className: "Modal-body" + }, m("p", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.add_extension.temporary_text')), m("p", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.add_extension.install_text', { + a: m("a", { + href: "https://discuss.flarum.org/t/extensions", + target: "_blank" + }) + })), m("p", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.add_extension.developer_text', { + a: m("a", { + href: "http://flarum.org/docs/extend", + target: "_blank" + }) + }))); + }; + + return AddExtensionModal; +}(_common_components_Modal__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + /***/ }), /***/ "./src/admin/components/AdminLinkButton.tsx": @@ -11808,37 +11950,37 @@ var AdminNav = /*#__PURE__*/function (_Component) { icon: 'far fa-chart-bar', children: app.translator.trans('core.admin.nav.dashboard_button'), description: app.translator.trans('core.admin.nav.dashboard_text') - })); // items.add('basics', AdminLinkButton.component({ - // href: app.route('basics'), - // icon: 'fas fa-pencil-alt', - // children: app.translator.trans('core.admin.nav.basics_button'), - // description: app.translator.trans('core.admin.nav.basics_text') - // })); - // items.add('mail', AdminLinkButton.component({ - // href: app.route('mail'), - // icon: 'fas fa-envelope', - // children: app.translator.trans('core.admin.nav.email_button'), - // description: app.translator.trans('core.admin.nav.email_text') - // })); - // items.add('permissions', AdminLinkButton.component({ - // href: app.route('permissions'), - // icon: 'fas fa-key', - // children: app.translator.trans('core.admin.nav.permissions_button'), - // description: app.translator.trans('core.admin.nav.permissions_text') - // })); - // items.add('appearance', AdminLinkButton.component({ - // href: app.route('appearance'), - // icon: 'fas fa-paint-brush', - // children: app.translator.trans('core.admin.nav.appearance_button'), - // description: app.translator.trans('core.admin.nav.appearance_text') - // })); - // items.add('extensions', AdminLinkButton.component({ - // href: app.route('extensions'), - // icon: 'fas fa-puzzle-piece', - // children: app.translator.trans('core.admin.nav.extensions_button'), - // description: app.translator.trans('core.admin.nav.extensions_text') - // })); - + })); + items.add('basics', _AdminLinkButton__WEBPACK_IMPORTED_MODULE_4__["default"].component({ + href: app.route('basics'), + icon: 'fas fa-pencil-alt', + children: app.translator.trans('core.admin.nav.basics_button'), + description: app.translator.trans('core.admin.nav.basics_text') + })); + items.add('mail', _AdminLinkButton__WEBPACK_IMPORTED_MODULE_4__["default"].component({ + href: app.route('mail'), + icon: 'fas fa-envelope', + children: app.translator.trans('core.admin.nav.email_button'), + description: app.translator.trans('core.admin.nav.email_text') + })); + items.add('permissions', _AdminLinkButton__WEBPACK_IMPORTED_MODULE_4__["default"].component({ + href: app.route('permissions'), + icon: 'fas fa-key', + children: app.translator.trans('core.admin.nav.permissions_button'), + description: app.translator.trans('core.admin.nav.permissions_text') + })); + items.add('appearance', _AdminLinkButton__WEBPACK_IMPORTED_MODULE_4__["default"].component({ + href: app.route('appearance'), + icon: 'fas fa-paint-brush', + children: app.translator.trans('core.admin.nav.appearance_button'), + description: app.translator.trans('core.admin.nav.appearance_text') + })); + items.add('extensions', _AdminLinkButton__WEBPACK_IMPORTED_MODULE_4__["default"].component({ + href: app.route('extensions'), + icon: 'fas fa-puzzle-piece', + children: app.translator.trans('core.admin.nav.extensions_button'), + description: app.translator.trans('core.admin.nav.extensions_text') + })); return items; }; @@ -11847,6 +11989,383 @@ var AdminNav = /*#__PURE__*/function (_Component) { +/***/ }), + +/***/ "./src/admin/components/AppearancePage.tsx": +/*!*************************************************!*\ + !*** ./src/admin/components/AppearancePage.tsx ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AppearancePage; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Page */ "./src/admin/components/Page.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_components_Switch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/Switch */ "./src/common/components/Switch.tsx"); +/* harmony import */ var _EditCustomCssModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./EditCustomCssModal */ "./src/admin/components/EditCustomCssModal.tsx"); +/* harmony import */ var _EditCustomHeaderModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./EditCustomHeaderModal */ "./src/admin/components/EditCustomHeaderModal.tsx"); +/* harmony import */ var _EditCustomFooterModal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./EditCustomFooterModal */ "./src/admin/components/EditCustomFooterModal.tsx"); +/* harmony import */ var _UploadImageButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./UploadImageButton */ "./src/admin/components/UploadImageButton.tsx"); +/* harmony import */ var _utils_saveSettings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/saveSettings */ "./src/admin/utils/saveSettings.ts"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + + + +var AppearancePage = /*#__PURE__*/function (_Page) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(AppearancePage, _Page); + + var _super = _createSuper(AppearancePage); + + function AppearancePage() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Page.call.apply(_Page, [this].concat(args)) || this; + _this.loading = false; + _this.primaryColor = m.prop(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.theme_primary_color); + _this.secondaryColor = m.prop(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.theme_secondary_color); + _this.darkMode = m.prop(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.theme_dark_mode === '1'); + _this.coloredHeader = m.prop(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.theme_colored_header === '1'); + return _this; + } + + var _proto = AppearancePage.prototype; + + _proto.view = function view() { + return m("div", { + className: "AppearancePage" + }, m("div", { + className: "container" + }, m("form", { + onsubmit: this.onsubmit.bind(this) + }, m("fieldset", { + className: "AppearancePage-colors" + }, m("legend", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.colors_heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.colors_text')), m("div", { + className: "AppearancePage-colors-input" + }, m("input", { + className: "FormControl", + type: "text", + placeholder: "#aaaaaa", + value: this.primaryColor(), + onchange: m.withAttr('value', this.primaryColor) + }), m("input", { + className: "FormControl", + type: "text", + placeholder: "#aaaaaa", + value: this.secondaryColor(), + onchange: m.withAttr('value', this.secondaryColor) + })), _common_components_Switch__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + state: this.darkMode(), + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.dark_mode_label'), + onchange: this.darkMode + }), _common_components_Switch__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + state: this.coloredHeader(), + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.colored_header_label'), + onchange: this.coloredHeader + }), _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + className: 'Button Button--primary', + type: 'submit', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.submit_button'), + loading: this.loading + }))), m("fieldset", null, m("legend", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.logo_heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.logo_text')), m(_UploadImageButton__WEBPACK_IMPORTED_MODULE_10__["default"], { + name: "logo" + })), m("fieldset", null, m("legend", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.favicon_heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.favicon_text')), m(_UploadImageButton__WEBPACK_IMPORTED_MODULE_10__["default"], { + name: "favicon" + })), m("fieldset", null, m("legend", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.custom_header_heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.custom_header_text')), _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + className: 'Button', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.edit_header_button'), + onclick: function onclick() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_EditCustomHeaderModal__WEBPACK_IMPORTED_MODULE_8__["default"]); + } + })), m("fieldset", null, m("legend", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.custom_footer_heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.custom_footer_text')), _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + className: 'Button', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.edit_footer_button'), + onclick: function onclick() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_EditCustomFooterModal__WEBPACK_IMPORTED_MODULE_9__["default"]); + } + })), m("fieldset", null, m("legend", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.custom_styles_heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.custom_styles_text')), _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + className: 'Button', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.edit_css_button'), + onclick: function onclick() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_EditCustomCssModal__WEBPACK_IMPORTED_MODULE_7__["default"]); + } + })))); + }; + + _proto.onsubmit = function onsubmit(e) { + e.preventDefault(); + var hex = /^#[0-9a-f]{3}([0-9a-f]{3})?$/i; + + if (!hex.test(this.primaryColor()) || !hex.test(this.secondaryColor())) { + alert(_app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.appearance.enter_hex_message')); + return; + } + + this.loading = true; + Object(_utils_saveSettings__WEBPACK_IMPORTED_MODULE_11__["default"])({ + theme_primary_color: this.primaryColor(), + theme_secondary_color: this.secondaryColor(), + theme_dark_mode: this.darkMode(), + theme_colored_header: this.coloredHeader() + }).then(function () { + return window.location.reload(); + }); + }; + + return AppearancePage; +}(_Page__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/BasicsPage.tsx": +/*!*********************************************!*\ + !*** ./src/admin/components/BasicsPage.tsx ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return BasicsPage; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Page */ "./src/admin/components/Page.tsx"); +/* harmony import */ var _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/FieldSet */ "./src/common/components/FieldSet.tsx"); +/* harmony import */ var _common_components_Select__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/Select */ "./src/common/components/Select.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_components_Alert__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/components/Alert */ "./src/common/components/Alert.tsx"); +/* harmony import */ var _utils_saveSettings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/saveSettings */ "./src/admin/utils/saveSettings.ts"); +/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts"); +/* harmony import */ var _common_components_Switch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../common/components/Switch */ "./src/common/components/Switch.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + + + +var BasicsPage = /*#__PURE__*/function (_Page) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(BasicsPage, _Page); + + var _super = _createSuper(BasicsPage); + + function BasicsPage() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Page.call.apply(_Page, [this].concat(args)) || this; + _this.loading = false; + _this.fields = ['forum_title', 'forum_description', 'default_locale', 'show_language_selector', 'default_route', 'welcome_title', 'welcome_message']; + _this.values = {}; + _this.localeOptions = {}; + _this.successAlert = void 0; + return _this; + } + + var _proto = BasicsPage.prototype; + + _proto.oninit = function oninit(vnode) { + var _this2 = this; + + _Page.prototype.oninit.call(this, vnode); + + var settings = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings; + this.fields.forEach(function (key) { + return _this2.values[key] = m.prop(settings[key]); + }); + var locales = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.locales; + + for (var i in locales) { + this.localeOptions[i] = locales[i] + " (" + i + ")"; + } + + if (typeof this.values.show_language_selector() !== 'number') this.values.show_language_selector(1); + }; + + _proto.view = function view() { + var _this3 = this; + + return m("div", { + className: "BasicsPage" + }, m("div", { + className: "container" + }, m("form", { + onsubmit: this.onsubmit.bind(this) + }, _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.forum_title_heading'), + children: [m("input", { + className: "FormControl", + value: this.values.forum_title(), + oninput: m.withAttr('value', this.values.forum_title) + })] + }), _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.forum_description_heading'), + children: [m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.forum_description_text')), m("textarea", { + className: "FormControl", + value: this.values.forum_description(), + oninput: m.withAttr('value', this.values.forum_description) + })] + }), Object.keys(this.localeOptions).length > 1 ? _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.default_language_heading'), + children: [_common_components_Select__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + options: this.localeOptions, + value: this.values.default_locale(), + onchange: this.values.default_locale + }), _common_components_Switch__WEBPACK_IMPORTED_MODULE_11__["default"].component({ + state: this.values.show_language_selector(), + onchange: this.values.show_language_selector, + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.show_language_selector_label') + })] + }) : '', _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.home_page_heading'), + className: 'BasicsPage-homePage', + children: [m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.home_page_text')), this.homePageItems().toArray().map(function (_ref) { + var path = _ref.path, + label = _ref.label; + return m("label", { + className: "checkbox" + }, m("input", { + type: "radio", + name: "homePage", + value: path, + checked: _this3.values.default_route() === path, + onclick: m.withAttr('value', _this3.values.default_route) + }), label); + })] + }), _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.welcome_banner_heading'), + className: 'BasicsPage-welcomeBanner', + children: [m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.welcome_banner_text')), m("div", { + className: "BasicsPage-welcomeBanner-input" + }, m("input", { + className: "FormControl", + value: this.values.welcome_title(), + oninput: m.withAttr('value', this.values.welcome_title) + }), m("textarea", { + className: "FormControl", + value: this.values.welcome_message(), + oninput: m.withAttr('value', this.values.welcome_message) + }))] + }), _common_components_Button__WEBPACK_IMPORTED_MODULE_7__["default"].component({ + type: 'submit', + className: 'Button Button--primary', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.submit_button'), + loading: this.loading, + disabled: !this.changed() + })))); + }; + + _proto.changed = function changed() { + var _this4 = this; + + return this.fields.some(function (key) { + return _this4.values[key]() !== _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings[key]; + }); + } + /** + * Build a list of options for the default homepage. Each option must be an + * object with `path` and `label` properties. + * + * @return {ItemList} + * @public + */ + ; + + _proto.homePageItems = function homePageItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_10__["default"](); + items.add('allDiscussions', { + path: '/all', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.all_discussions_label') + }); + return items; + }; + + _proto.onsubmit = function onsubmit(e) { + var _this5 = this; + + e.preventDefault(); + if (this.loading) return; + this.loading = true; + _app__WEBPACK_IMPORTED_MODULE_3__["default"].alerts.dismiss(this.successAlert); + var settings = {}; + this.fields.forEach(function (key) { + return settings[key] = _this5.values[key](); + }); + Object(_utils_saveSettings__WEBPACK_IMPORTED_MODULE_9__["default"])(settings).then(function () { + _app__WEBPACK_IMPORTED_MODULE_3__["default"].alerts.show(_this5.successAlert = _common_components_Alert__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + type: 'success', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.basics.saved_message') + })); + }).catch(function () {}).then(function () { + _this5.loading = false; + m.redraw(); + }); + }; + + return BasicsPage; +}(_Page__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + /***/ }), /***/ "./src/admin/components/DashboardPage.tsx": @@ -11967,6 +12486,550 @@ var DashboardWidget = /*#__PURE__*/function (_Component) { +/***/ }), + +/***/ "./src/admin/components/EditCustomCssModal.tsx": +/*!*****************************************************!*\ + !*** ./src/admin/components/EditCustomCssModal.tsx ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EditCustomCssModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _SettingsModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SettingsModal */ "./src/admin/components/SettingsModal.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + +var EditCustomCssModal = /*#__PURE__*/function (_SettingsModal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(EditCustomCssModal, _SettingsModal); + + var _super = _createSuper(EditCustomCssModal); + + function EditCustomCssModal() { + return _SettingsModal.apply(this, arguments) || this; + } + + var _proto = EditCustomCssModal.prototype; + + _proto.className = function className() { + return 'EditCustomCssModal Modal--large'; + }; + + _proto.title = function title() { + return app.translator.trans('core.admin.edit_css.title'); + }; + + _proto.form = function form() { + return [m("p", null, app.translator.trans('core.admin.edit_css.customize_text', { + a: m("a", { + href: "https://github.com/flarum/core/tree/master/less", + target: "_blank" + }) + })), m("div", { + className: "Form-group" + }, m("textarea", { + className: "FormControl", + rows: "30", + bidi: this.setting('custom_less') + }))]; + }; + + _proto.onsaved = function onsaved() { + window.location.reload(); + }; + + return EditCustomCssModal; +}(_SettingsModal__WEBPACK_IMPORTED_MODULE_3__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/EditCustomFooterModal.tsx": +/*!********************************************************!*\ + !*** ./src/admin/components/EditCustomFooterModal.tsx ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EditCustomFooterModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _SettingsModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SettingsModal */ "./src/admin/components/SettingsModal.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + +var EditCustomFooterModal = /*#__PURE__*/function (_SettingsModal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(EditCustomFooterModal, _SettingsModal); + + var _super = _createSuper(EditCustomFooterModal); + + function EditCustomFooterModal() { + return _SettingsModal.apply(this, arguments) || this; + } + + var _proto = EditCustomFooterModal.prototype; + + _proto.className = function className() { + return 'EditCustomFooterModal Modal--large'; + }; + + _proto.title = function title() { + return app.translator.trans('core.admin.edit_footer.title'); + }; + + _proto.form = function form() { + return [m("p", null, app.translator.trans('core.admin.edit_footer.customize_text')), m("div", { + className: "Form-group" + }, m("textarea", { + className: "FormControl", + rows: "30", + bidi: this.setting('custom_footer') + }))]; + }; + + _proto.onsaved = function onsaved() { + window.location.reload(); + }; + + return EditCustomFooterModal; +}(_SettingsModal__WEBPACK_IMPORTED_MODULE_3__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/EditCustomHeaderModal.tsx": +/*!********************************************************!*\ + !*** ./src/admin/components/EditCustomHeaderModal.tsx ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EditCustomHeaderModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _SettingsModal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SettingsModal */ "./src/admin/components/SettingsModal.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + +var EditCustomHeaderModal = /*#__PURE__*/function (_SettingsModal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(EditCustomHeaderModal, _SettingsModal); + + var _super = _createSuper(EditCustomHeaderModal); + + function EditCustomHeaderModal() { + return _SettingsModal.apply(this, arguments) || this; + } + + var _proto = EditCustomHeaderModal.prototype; + + _proto.className = function className() { + return 'EditCustomHeaderModal Modal--large'; + }; + + _proto.title = function title() { + return app.translator.trans('core.admin.edit_header.title'); + }; + + _proto.form = function form() { + return [m("p", null, app.translator.trans('core.admin.edit_header.customize_text')), m("div", { + className: "Form-group" + }, m("textarea", { + className: "FormControl", + rows: "30", + bidi: this.setting('custom_header') + }))]; + }; + + _proto.onsaved = function onsaved() { + window.location.reload(); + }; + + return EditCustomHeaderModal; +}(_SettingsModal__WEBPACK_IMPORTED_MODULE_3__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/EditGroupModal.tsx": +/*!*************************************************!*\ + !*** ./src/admin/components/EditGroupModal.tsx ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EditGroupModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_components_Modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/Modal */ "./src/common/components/Modal.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_components_Badge__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/Badge */ "./src/common/components/Badge.tsx"); +/* harmony import */ var _common_models_Group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/models/Group */ "./src/common/models/Group.ts"); +/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + +/** + * The `EditGroupModal` component shows a modal dialog which allows the user + * to create or edit a group. + */ +var EditGroupModal = /*#__PURE__*/function (_Modal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(EditGroupModal, _Modal); + + var _super = _createSuper(EditGroupModal); + + function EditGroupModal() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Modal.call.apply(_Modal, [this].concat(args)) || this; + _this.group = void 0; + _this.nameSingular = void 0; + _this.namePlural = void 0; + _this.icon = void 0; + _this.color = void 0; + return _this; + } + + var _proto = EditGroupModal.prototype; + + _proto.oninit = function oninit(vnode) { + _Modal.prototype.oninit.call(this, vnode); + + this.group = this.props.group || _app__WEBPACK_IMPORTED_MODULE_3__["default"].store.createRecord('groups'); + this.nameSingular = m.prop(this.group.nameSingular() || ''); + this.namePlural = m.prop(this.group.namePlural() || ''); + this.icon = m.prop(this.group.icon() || ''); + this.color = m.prop(this.group.color() || ''); + }; + + _proto.className = function className() { + return 'EditGroupModal Modal--small'; + }; + + _proto.title = function title() { + return [this.color() || this.icon() ? _common_components_Badge__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + icon: this.icon(), + style: { + backgroundColor: this.color() + } + }) : '', ' ', this.namePlural() || _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.title')]; + }; + + _proto.content = function content() { + return m("div", { + className: "Modal-body" + }, m("div", { + className: "Form" + }, this.fields().toArray())); + }; + + _proto.fields = function fields() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('name', m("div", { + className: "Form-group" + }, m("label", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.name_label')), m("div", { + className: "EditGroupModal-name-input" + }, m("input", { + className: "FormControl", + placeholder: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.edit_group.singular_placeholder'), + value: this.nameSingular(), + oninput: m.withAttr('value', this.nameSingular) + }), m("input", { + className: "FormControl", + placeholder: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.edit_group.plural_placeholder'), + value: this.namePlural(), + oninput: m.withAttr('value', this.namePlural) + }))), 30); + items.add('color', m("div", { + className: "Form-group" + }, m("label", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.color_label')), m("input", { + className: "FormControl", + placeholder: "#aaaaaa", + value: this.color(), + oninput: m.withAttr('value', this.color) + })), 20); + items.add('icon', m("div", { + className: "Form-group" + }, m("label", null, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.icon_label')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.icon_text', { + a: m("a", { + href: "https://fontawesome.com/icons?m=free", + tabindex: "-1" + }) + })), m("input", { + className: "FormControl", + placeholder: "fas fa-bolt", + value: this.icon(), + oninput: m.withAttr('value', this.icon) + })), 10); + items.add('submit', m("div", { + className: "Form-group" + }, _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + type: 'submit', + className: 'Button Button--primary EditGroupModal-save', + loading: this.loading, + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.submit_button') + }), this.group.exists && this.group.id() !== _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].ADMINISTRATOR_ID ? m("button", { + type: "button", + className: "Button EditGroupModal-delete", + onclick: this.deleteGroup.bind(this) + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.edit_group.delete_button')) : ''), -10); + return items; + }; + + _proto.submitData = function submitData() { + return { + nameSingular: this.nameSingular(), + namePlural: this.namePlural(), + color: this.color(), + icon: this.icon() + }; + }; + + _proto.onsubmit = function onsubmit(e) { + var _this2 = this; + + e.preventDefault(); + this.loading = true; + this.group.save(this.submitData(), { + errorHandler: this.onerror.bind(this) + }).then(this.hide.bind(this)).catch(function () { + _this2.loading = false; + m.redraw(); + }); + }; + + _proto.deleteGroup = function deleteGroup() { + if (confirm(_app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.edit_group.delete_confirmation'))) { + this.group.delete().then(function () { + return m.redraw(); + }); + this.hide(); + } + }; + + return EditGroupModal; +}(_common_components_Modal__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/ExtensionsPage.tsx": +/*!*************************************************!*\ + !*** ./src/admin/components/ExtensionsPage.tsx ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ExtensionsPage; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Page */ "./src/admin/components/Page.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_components_Dropdown__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/Dropdown */ "./src/common/components/Dropdown.tsx"); +/* harmony import */ var _AddExtensionModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AddExtensionModal */ "./src/admin/components/AddExtensionModal.tsx"); +/* harmony import */ var _LoadingModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./LoadingModal */ "./src/admin/components/LoadingModal.tsx"); +/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts"); +/* harmony import */ var _common_helpers_icon__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/helpers/icon */ "./src/common/helpers/icon.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + + +var ExtensionsPage = /*#__PURE__*/function (_Page) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(ExtensionsPage, _Page); + + var _super = _createSuper(ExtensionsPage); + + function ExtensionsPage() { + return _Page.apply(this, arguments) || this; + } + + var _proto = ExtensionsPage.prototype; + + _proto.view = function view() { + var _this = this; + + return m("div", { + className: "ExtensionsPage" + }, m("div", { + className: "ExtensionsPage-header" + }, m("div", { + className: "container" + }, _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.extensions.add_button'), + icon: 'fas fa-plus', + className: 'Button Button--primary', + onclick: function onclick() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_AddExtensionModal__WEBPACK_IMPORTED_MODULE_7__["default"]); + } + }))), m("div", { + className: "ExtensionsPage-list" + }, m("div", { + className: "container" + }, m("ul", { + className: "ExtensionList" + }, Object.keys(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.extensions).map(function (id) { + var extension = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.extensions[id]; + + var controls = _this.controlItems(extension.id).toArray(); + + return m("li", { + className: 'ExtensionListItem ' + (!_this.isEnabled(extension.id) ? 'disabled' : '') + }, m("div", { + className: "ExtensionListItem-content" + }, m("span", { + className: "ExtensionListItem-icon ExtensionIcon", + style: extension.icon + }, extension.icon ? Object(_common_helpers_icon__WEBPACK_IMPORTED_MODULE_10__["default"])(extension.icon.name) : ''), controls.length ? m(_common_components_Dropdown__WEBPACK_IMPORTED_MODULE_6__["default"], { + className: "ExtensionListItem-controls", + buttonClassName: "Button Button--icon Button--flat", + menuClassName: "Dropdown-menu--right", + icon: "fas fa-ellipsis-h" + }, controls) : '', m("div", { + className: "ExtensionListItem-main" + }, m("label", { + className: "ExtensionListItem-title" + }, m("input", { + type: "checkbox", + checked: _this.isEnabled(extension.id), + onclick: _this.toggle.bind(_this, extension.id) + }), ' ', extension.extra['flarum-extension'].title), m("div", { + className: "ExtensionListItem-version" + }, extension.version), m("div", { + className: "ExtensionListItem-description" + }, extension.description)))); + }))))); + }; + + _proto.controlItems = function controlItems(name) { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_9__["default"](); + var enabled = this.isEnabled(name); + + if (_app__WEBPACK_IMPORTED_MODULE_3__["default"].extensionSettings[name]) { + items.add('settings', _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + icon: 'fas fa-cog', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.extensions.settings_button'), + onclick: _app__WEBPACK_IMPORTED_MODULE_3__["default"].extensionSettings[name] + })); + } + + if (!enabled) { + items.add('uninstall', _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + icon: 'far fa-trash-alt', + children: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.extensions.uninstall_button'), + onclick: function onclick() { + _app__WEBPACK_IMPORTED_MODULE_3__["default"].request({ + url: _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute('apiUrl') + '/extensions/' + name, + method: 'DELETE' + }).then(function () { + return window.location.reload(); + }); + _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_LoadingModal__WEBPACK_IMPORTED_MODULE_8__["default"]); + } + })); + } + + return items; + }; + + _proto.isEnabled = function isEnabled(name) { + var enabled = JSON.parse(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.extensions_enabled); + return enabled.indexOf(name) !== -1; + }; + + _proto.toggle = function toggle(id) { + var enabled = this.isEnabled(id); + _app__WEBPACK_IMPORTED_MODULE_3__["default"].request({ + url: _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute('apiUrl') + '/extensions/' + id, + method: 'PATCH', + body: { + enabled: !enabled + } + }).then(function () { + if (!enabled) localStorage.setItem('enabledExtension', id); + window.location.reload(); + }); + _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_LoadingModal__WEBPACK_IMPORTED_MODULE_8__["default"]); + }; + + return ExtensionsPage; +}(_Page__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + /***/ }), /***/ "./src/admin/components/HeaderPrimary.tsx": @@ -12016,13 +13079,6 @@ var HeaderPrimary = /*#__PURE__*/function (_Component) { return m("ul", { className: "Header-controls" }, Object(_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_5__["default"])(this.items().toArray())); - }; - - _proto.config = function config(isInitialized, context) { - // Since this component is 'above' the content of the page (that is, it is a - // part of the global UI that persists between routes), we will flag the DOM - // to be retained across route changes. - context.retain = true; } /** * Build an item list for the controls. @@ -12090,13 +13146,6 @@ var HeaderSecondary = /*#__PURE__*/function (_Component) { return m("ul", { className: "Header-controls" }, Object(_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_6__["default"])(this.items().toArray())); - }; - - _proto.config = function config(isInitialized, context) { - // Since this component is 'above' the content of the page (that is, it is a - // part of the global UI that persists between routes), we will flag the DOM - // to be retained across route changes. - context.retain = true; } /** * Build an item list for the controls. @@ -12174,6 +13223,237 @@ var LoadingModal = /*#__PURE__*/function (_Modal) { +/***/ }), + +/***/ "./src/admin/components/MailPage.tsx": +/*!*******************************************!*\ + !*** ./src/admin/components/MailPage.tsx ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MailPage; }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Page */ "./src/admin/components/Page.tsx"); +/* harmony import */ var _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/FieldSet */ "./src/common/components/FieldSet.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_components_Alert__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/components/Alert */ "./src/common/components/Alert.tsx"); +/* harmony import */ var _common_components_Select__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../common/components/Select */ "./src/common/components/Select.tsx"); +/* harmony import */ var _common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../common/components/LoadingIndicator */ "./src/common/components/LoadingIndicator.tsx"); +/* harmony import */ var _utils_saveSettings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/saveSettings */ "./src/admin/utils/saveSettings.ts"); + + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_2__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_2__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_1__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + + +var MailPage = /*#__PURE__*/function (_Page) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_3__["default"])(MailPage, _Page); + + var _super = _createSuper(MailPage); + + function MailPage() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Page.call.apply(_Page, [this].concat(args)) || this; + _this.loading = true; + _this.saving = false; + _this.driverFields = {}; + _this.fields = []; + _this.values = {}; + _this.status = { + sending: false, + errors: {} + }; + _this.successAlert = void 0; + return _this; + } + + var _proto = MailPage.prototype; + + _proto.oninit = function oninit(vnode) { + _Page.prototype.oninit.call(this, vnode); + + this.refresh(); + }; + + _proto.refresh = function refresh() { + var _this2 = this; + + this.loading = true; + this.fields = ['mail_driver', 'mail_from']; + this.values = {}; + _app__WEBPACK_IMPORTED_MODULE_4__["default"].request({ + method: 'GET', + url: _app__WEBPACK_IMPORTED_MODULE_4__["default"].forum.attribute('apiUrl') + '/mail-settings' + }).then(function (response) { + _this2.driverFields = response['data']['attributes']['fields']; + _this2.status.sending = response['data']['attributes']['sending']; + _this2.status.errors = response['data']['attributes']['errors']; + + for (var driver in _this2.driverFields) { + for (var field in _this2.driverFields[driver]) { + _this2.fields.push(field); + } + } + + var settings = _app__WEBPACK_IMPORTED_MODULE_4__["default"].data.settings; + + _this2.fields.forEach(function (key) { + return _this2.values[key] = m.prop(settings[key]); + }); + + _this2.loading = false; + m.redraw(); + }); + }; + + _proto.view = function view() { + var _this3 = this; + + if (this.loading || this.saving) { + return m("div", { + className: "MailPage" + }, m("div", { + className: "container" + }, m(_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10__["default"], null))); + } + + var fields = this.driverFields[this.values.mail_driver()]; + var fieldKeys = Object.keys(fields); + return m("div", { + className: "MailPage" + }, m("div", { + className: "container" + }, m("form", { + onsubmit: this.onsubmit.bind(this) + }, m("h2", null, _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.heading')), m("div", { + className: "helpText" + }, _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.text')), _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.addresses_heading'), + className: 'MailPage-MailSettings', + children: [m("div", { + className: "MailPage-MailSettings-input" + }, m("label", null, _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.from_label'), m("input", { + className: "FormControl", + value: this.values.mail_from() || '', + oninput: m.withAttr('value', this.values.mail_from) + })))] + }), _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.driver_heading'), + className: 'MailPage-MailSettings', + children: [m("div", { + className: "MailPage-MailSettings-input" + }, m("label", null, _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.driver_label'), m(_common_components_Select__WEBPACK_IMPORTED_MODULE_9__["default"], { + value: this.values.mail_driver(), + options: Object.keys(this.driverFields).reduce(function (memo, val) { + var _extends2; + + return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, memo, (_extends2 = {}, _extends2[val] = val, _extends2)); + }, {}), + onchange: this.values.mail_driver + })))] + }), this.status.sending || _common_components_Alert__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + children: _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.not_sending_message'), + dismissible: false + }), fieldKeys.length > 0 && _common_components_FieldSet__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + label: _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans("core.admin.email." + this.values.mail_driver() + "_heading"), + className: 'MailPage-MailSettings', + children: [m("div", { + className: "MailPage-MailSettings-input" + }, fieldKeys.map(function (field) { + return [m("label", null, _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans("core.admin.email." + field + "_label"), _this3.renderField(field)), _this3.status.errors[field] && m("p", { + className: "ValidationError" + }, _this3.status.errors[field])]; + }))] + }), _common_components_Button__WEBPACK_IMPORTED_MODULE_7__["default"].component({ + type: 'submit', + className: 'Button Button--primary', + children: _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.email.submit_button'), + disabled: !this.changed() + })))); + }; + + _proto.renderField = function renderField(name) { + var driver = this.values.mail_driver(); + var field = this.driverFields[driver][name]; + var prop = this.values[name]; + + if (prop == undefined) {} + + if (typeof field === 'string') { + return m("input", { + className: "FormControl", + value: prop() || '', + oninput: m.withAttr('value', prop) + }); + } else { + return m(_common_components_Select__WEBPACK_IMPORTED_MODULE_9__["default"], { + value: prop(), + options: field, + onchange: prop + }); + } + }; + + _proto.changed = function changed() { + var _this4 = this; + + return this.fields.some(function (key) { + return _this4.values[key]() !== _app__WEBPACK_IMPORTED_MODULE_4__["default"].data.settings[key]; + }); + }; + + _proto.onsubmit = function onsubmit(e) { + var _this5 = this; + + e.preventDefault(); + if (this.saving) return; + this.saving = true; + _app__WEBPACK_IMPORTED_MODULE_4__["default"].alerts.dismiss(this.successAlert); + var settings = {}; + this.fields.forEach(function (key) { + return settings[key] = _this5.values[key](); + }); + Object(_utils_saveSettings__WEBPACK_IMPORTED_MODULE_11__["default"])(settings).then(function () { + _app__WEBPACK_IMPORTED_MODULE_4__["default"].alerts.show(_this5.successAlert = _common_components_Alert__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + type: 'success', + children: _app__WEBPACK_IMPORTED_MODULE_4__["default"].translator.trans('core.admin.basics.saved_message') + })); + }).catch(function () {}).then(function () { + _this5.saving = false; + + _this5.refresh(); + }); + }; + + return MailPage; +}(_Page__WEBPACK_IMPORTED_MODULE_5__["default"]); + + + /***/ }), /***/ "./src/admin/components/Page.tsx": @@ -12201,8 +13481,6 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re /** * The `Page` component - * - * @abstract */ var Page = /*#__PURE__*/function (_Component) { @@ -12211,43 +13489,620 @@ var Page = /*#__PURE__*/function (_Component) { var _super = _createSuper(Page); function Page() { - return _Component.apply(this, arguments) || this; + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Component.call.apply(_Component, [this].concat(args)) || this; + _this.bodyClass = ''; + return _this; } var _proto = Page.prototype; - _proto.init = function init() { - app.previous = app.current; - app.current = this; - app.modal.close(); - /** - * A class name to apply to the body while the route is active. - * - * @type {String} - */ - - this.bodyClass = ''; - }; - - _proto.config = function config(isInitialized, context) { - var _this = this; - - if (isInitialized) return; + _proto.oninit = function oninit(vnode) { + _Component.prototype.oninit.call(this, vnode); if (this.bodyClass) { $('#app').addClass(this.bodyClass); - - context.onunload = function () { - return $('#app').removeClass(_this.bodyClass); - }; } }; + _proto.oncreate = function oncreate(vnode) { + _Component.prototype.oncreate.call(this, vnode); + + app.previous = app.current; + app.current = this; + app.modal.close(); + }; + + _proto.onremove = function onremove(vnode) { + _Component.prototype.onremove.call(this, vnode); + + $('#app').removeClass(this.bodyClass); + }; + return Page; }(_common_Component__WEBPACK_IMPORTED_MODULE_3__["default"]); +/***/ }), + +/***/ "./src/admin/components/PermissionDropdown.tsx": +/*!*****************************************************!*\ + !*** ./src/admin/components/PermissionDropdown.tsx ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PermissionDropdown; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_components_Dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/Dropdown */ "./src/common/components/Dropdown.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_components_Separator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/Separator */ "./src/common/components/Separator.tsx"); +/* harmony import */ var _common_models_Group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/models/Group */ "./src/common/models/Group.ts"); +/* harmony import */ var _common_components_Badge__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/components/Badge */ "./src/common/components/Badge.tsx"); +/* harmony import */ var _common_components_GroupBadge__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../common/components/GroupBadge */ "./src/common/components/GroupBadge.ts"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + +function badgeForId(id) { + var group = _app__WEBPACK_IMPORTED_MODULE_3__["default"].store.getById('groups', id); + return group ? _common_components_GroupBadge__WEBPACK_IMPORTED_MODULE_9__["default"].component({ + group: group, + label: null + }) : ''; +} + +function filterByRequiredPermissions(groupIds, permission) { + _app__WEBPACK_IMPORTED_MODULE_3__["default"].getRequiredPermissions(permission).forEach(function (required) { + var restrictToGroupIds = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.permissions[required] || []; + + if (restrictToGroupIds.indexOf(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID) !== -1) {// do nothing + } else if (restrictToGroupIds.indexOf(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID) !== -1) { + groupIds = groupIds.filter(function (id) { + return id !== _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID; + }); + } else if (groupIds.indexOf(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID) !== -1) { + groupIds = restrictToGroupIds; + } else { + groupIds = restrictToGroupIds.filter(function (id) { + return groupIds.indexOf(id) !== -1; + }); + } + + groupIds = filterByRequiredPermissions(groupIds, required); + }); + return groupIds; +} + +var PermissionDropdown = /*#__PURE__*/function (_Dropdown) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(PermissionDropdown, _Dropdown); + + var _super = _createSuper(PermissionDropdown); + + function PermissionDropdown() { + return _Dropdown.apply(this, arguments) || this; + } + + PermissionDropdown.initProps = function initProps(props) { + _Dropdown.initProps.call(this, props); + + props.className = 'PermissionDropdown'; + props.buttonClassName = 'Button Button--text'; + }; + + var _proto = PermissionDropdown.prototype; + + _proto.view = function view() { + var _this = this; + + this.props.children = []; + var groupIds = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.permissions[this.props.permission] || []; + groupIds = filterByRequiredPermissions(groupIds, this.props.permission); + var everyone = groupIds.indexOf(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID) !== -1; + var members = groupIds.indexOf(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID) !== -1; + var adminGroup = _app__WEBPACK_IMPORTED_MODULE_3__["default"].store.getById('groups', _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].ADMINISTRATOR_ID); + + if (everyone) { + this.props.label = _common_components_Badge__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + icon: 'fas fa-globe' + }); + } else if (members) { + this.props.label = _common_components_Badge__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + icon: 'fas fa-user' + }); + } else { + this.props.label = [badgeForId(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].ADMINISTRATOR_ID), groupIds.map(badgeForId)]; + } + + if (this.showing) { + if (this.props.allowGuest) { + this.props.children.push(_common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + children: [_common_components_Badge__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + icon: 'fas fa-globe' + }), ' ', _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions_controls.everyone_button')], + icon: everyone ? 'fas fa-check' : true, + onclick: function onclick() { + return _this.save([_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID]); + }, + disabled: this.isGroupDisabled(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID) + })); + } + + this.props.children.push(_common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + children: [_common_components_Badge__WEBPACK_IMPORTED_MODULE_8__["default"].component({ + icon: 'fas fa-user' + }), ' ', _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions_controls.members_button')], + icon: members ? 'fas fa-check' : true, + onclick: function onclick() { + return _this.save([_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID]); + }, + disabled: this.isGroupDisabled(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID) + }), _common_components_Separator__WEBPACK_IMPORTED_MODULE_6__["default"].component(), _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + children: [badgeForId(adminGroup.id()), ' ', adminGroup.namePlural()], + icon: !everyone && !members ? 'fas fa-check' : true, + disabled: !everyone && !members, + onclick: function onclick(e) { + if (e.shiftKey) e.stopPropagation(); + + _this.save([]); + } + })); + [].push.apply(this.props.children, _app__WEBPACK_IMPORTED_MODULE_3__["default"].store.all('groups').filter(function (group) { + return [_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].ADMINISTRATOR_ID, _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID, _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID].indexOf(group.id()) === -1; + }).map(function (group) { + return _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + children: [badgeForId(group.id()), ' ', group.namePlural()], + icon: groupIds.indexOf(group.id()) !== -1 ? 'fas fa-check' : true, + onclick: function onclick(e) { + if (e.shiftKey) e.stopPropagation(); + + _this.toggle(group.id()); + }, + disabled: _this.isGroupDisabled(group.id()) && _this.isGroupDisabled(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID) && _this.isGroupDisabled(_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID) + }); + })); + } + + return _Dropdown.prototype.view.call(this); + }; + + _proto.save = function save(groupIds) { + var permission = this.props.permission; + _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.permissions[permission] = groupIds; + _app__WEBPACK_IMPORTED_MODULE_3__["default"].request({ + method: 'POST', + url: _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute('apiUrl') + '/permission', + body: { + permission: permission, + groupIds: groupIds + } + }); + }; + + _proto.toggle = function toggle(groupId) { + var permission = this.props.permission; + var groupIds = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.permissions[permission] || []; + var index = groupIds.indexOf(groupId); + + if (index !== -1) { + groupIds.splice(index, 1); + } else { + groupIds.push(groupId); + groupIds = groupIds.filter(function (id) { + return [_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID, _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID].indexOf(id) === -1; + }); + } + + this.save(groupIds); + }; + + _proto.isGroupDisabled = function isGroupDisabled(id) { + return filterByRequiredPermissions([id], this.props.permission).indexOf(id) === -1; + }; + + return PermissionDropdown; +}(_common_components_Dropdown__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/PermissionGrid.tsx": +/*!*************************************************!*\ + !*** ./src/admin/components/PermissionGrid.tsx ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PermissionGrid; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_Component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/Component */ "./src/common/Component.ts"); +/* harmony import */ var _PermissionDropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PermissionDropdown */ "./src/admin/components/PermissionDropdown.tsx"); +/* harmony import */ var _SettingDropdown__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SettingDropdown */ "./src/admin/components/SettingDropdown.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts"); +/* harmony import */ var _common_helpers_icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../common/helpers/icon */ "./src/common/helpers/icon.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + +var PermissionGrid = /*#__PURE__*/function (_Component) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(PermissionGrid, _Component); + + var _super = _createSuper(PermissionGrid); + + function PermissionGrid() { + return _Component.apply(this, arguments) || this; + } + + var _proto = PermissionGrid.prototype; + + _proto.view = function view() { + var scopes = this.scopeItems().toArray(); + + var permissionCells = function permissionCells(permission) { + return scopes.map(function (scope) { + return m("td", null, scope.render(permission)); + }); + }; + + return m("table", { + className: "PermissionGrid" + }, m("thead", null, m("tr", null, m("td", null), scopes.map(function (scope) { + return m("th", null, scope.label, ' ', scope.onremove ? _common_components_Button__WEBPACK_IMPORTED_MODULE_7__["default"].component({ + icon: 'fas fa-times', + className: 'Button Button--text PermissionGrid-removeScope', + onclick: scope.onremove + }) : ''); + }), m("th", null, this.scopeControlItems().toArray()))), this.permissionItems().toArray().map(function (section) { + return m("tbody", null, m("tr", { + className: "PermissionGrid-section" + }, m("th", null, section.label), permissionCells(section), m("td", null)), section.children.map(function (child) { + return m("tr", { + className: "PermissionGrid-child" + }, m("th", null, Object(_common_helpers_icon__WEBPACK_IMPORTED_MODULE_9__["default"])(child.icon), child.label), permissionCells(child), m("td", null)); + })); + })); + }; + + _proto.permissionItems = function permissionItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('view', { + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.read_heading'), + children: this.viewItems().toArray() + }, 100); + items.add('start', { + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.create_heading'), + children: this.startItems().toArray() + }, 90); + items.add('reply', { + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.participate_heading'), + children: this.replyItems().toArray() + }, 80); + items.add('moderate', { + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.moderate_heading'), + children: this.moderateItems().toArray() + }, 70); + return items; + }; + + _proto.viewItems = function viewItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('viewDiscussions', { + icon: 'fas fa-eye', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.view_discussions_label'), + permission: 'viewDiscussions', + allowGuest: true + }, 100); + items.add('viewUserList', { + icon: 'fas fa-users', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.view_user_list_label'), + permission: 'viewUserList', + allowGuest: true + }, 100); + items.add('signUp', { + icon: 'fas fa-user-plus', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.sign_up_label'), + setting: function setting() { + return _SettingDropdown__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + key: 'allow_sign_up', + options: [{ + value: '1', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.signup_open_button') + }, { + value: '0', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.signup_closed_button') + }] + }); + } + }, 90); + items.add('viewLastSeenAt', { + icon: 'far fa-clock', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.view_last_seen_at_label'), + permission: 'user.viewLastSeenAt' + }); + return items; + }; + + _proto.startItems = function startItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('start', { + icon: 'fas fa-edit', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.start_discussions_label'), + permission: 'startDiscussion' + }, 100); + items.add('allowRenaming', { + icon: 'fas fa-i-cursor', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.allow_renaming_label'), + setting: function setting() { + var minutes = parseInt(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.allow_renaming, 10); + return _SettingDropdown__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + defaultLabel: minutes ? _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transChoice('core.admin.permissions_controls.allow_some_minutes_button', minutes, { + count: minutes + }) : _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions_controls.allow_indefinitely_button'), + key: 'allow_renaming', + options: [{ + value: '-1', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.allow_indefinitely_button') + }, { + value: '10', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.allow_ten_minutes_button') + }, { + value: 'reply', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.allow_until_reply_button') + }] + }); + } + }, 90); + return items; + }; + + _proto.replyItems = function replyItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('reply', { + icon: 'fas fa-reply', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.reply_to_discussions_label'), + permission: 'discussion.reply' + }, 100); + items.add('allowPostEditing', { + icon: 'fas fa-pencil-alt', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.allow_post_editing_label'), + setting: function setting() { + var minutes = parseInt(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings.allow_post_editing, 10); + return _SettingDropdown__WEBPACK_IMPORTED_MODULE_6__["default"].component({ + defaultLabel: minutes ? _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transChoice('core.admin.permissions_controls.allow_some_minutes_button', minutes, { + count: minutes + }) : _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions_controls.allow_indefinitely_button'), + key: 'allow_post_editing', + options: [{ + value: '-1', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.allow_indefinitely_button') + }, { + value: '10', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.allow_ten_minutes_button') + }, { + value: 'reply', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.permissions_controls.allow_until_reply_button') + }] + }); + } + }, 90); + return items; + }; + + _proto.moderateItems = function moderateItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('viewIpsPosts', { + icon: 'fas fa-bullseye', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.view_post_ips_label'), + permission: 'discussion.viewIpsPosts' + }, 110); + items.add('renameDiscussions', { + icon: 'fas fa-i-cursor', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.rename_discussions_label'), + permission: 'discussion.rename' + }, 100); + items.add('hideDiscussions', { + icon: 'far fa-trash-alt', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.delete_discussions_label'), + permission: 'discussion.hide' + }, 90); + items.add('deleteDiscussions', { + icon: 'fas fa-times', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.delete_discussions_forever_label'), + permission: 'discussion.delete' + }, 80); + items.add('postWithoutThrottle', { + icon: 'fas fa-swimmer', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.post_without_throttle_label'), + permission: 'postWithoutThrottle' + }, 70); + items.add('editPosts', { + icon: 'fas fa-pencil-alt', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.edit_posts_label'), + permission: 'discussion.editPosts' + }, 70); + items.add('hidePosts', { + icon: 'far fa-trash-alt', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.delete_posts_label'), + permission: 'discussion.hidePosts' + }, 60); + items.add('deletePosts', { + icon: 'fas fa-times', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.delete_posts_forever_label'), + permission: 'discussion.deletePosts' + }, 60); + items.add('userEdit', { + icon: 'fas fa-user-cog', + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.edit_users_label'), + permission: 'user.edit' + }, 60); + return items; + }; + + _proto.scopeItems = function scopeItems() { + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + items.add('global', { + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.global_heading'), + render: function render(item) { + if (item.setting) { + return item.setting(); + } else if (item.permission) { + return _PermissionDropdown__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + permission: item.permission, + allowGuest: item.allowGuest + }); + } + + return ''; + } + }, 100); + return items; + }; + + _proto.scopeControlItems = function scopeControlItems() { + return new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_8__["default"](); + }; + + return PermissionGrid; +}(_common_Component__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/PermissionsPage.tsx": +/*!**************************************************!*\ + !*** ./src/admin/components/PermissionsPage.tsx ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return PermissionsPage; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Page */ "./src/admin/components/Page.tsx"); +/* harmony import */ var _common_components_GroupBadge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/GroupBadge */ "./src/common/components/GroupBadge.ts"); +/* harmony import */ var _EditGroupModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./EditGroupModal */ "./src/admin/components/EditGroupModal.tsx"); +/* harmony import */ var _common_models_Group__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/models/Group */ "./src/common/models/Group.ts"); +/* harmony import */ var _common_helpers_icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/helpers/icon */ "./src/common/helpers/icon.tsx"); +/* harmony import */ var _PermissionGrid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PermissionGrid */ "./src/admin/components/PermissionGrid.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + + + + +var PermissionsPage = /*#__PURE__*/function (_Page) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(PermissionsPage, _Page); + + var _super = _createSuper(PermissionsPage); + + function PermissionsPage() { + return _Page.apply(this, arguments) || this; + } + + var _proto = PermissionsPage.prototype; + + _proto.view = function view() { + return m("div", { + className: "PermissionsPage" + }, m("div", { + className: "PermissionsPage-groups" + }, m("div", { + className: "container" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].store.all('groups').filter(function (group) { + return [_common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].GUEST_ID, _common_models_Group__WEBPACK_IMPORTED_MODULE_7__["default"].MEMBER_ID].indexOf(group.id()) === -1; + }).map(function (group) { + return m("button", { + className: "Button Group", + onclick: function onclick() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_EditGroupModal__WEBPACK_IMPORTED_MODULE_6__["default"], { + group: group + }); + } + }, _common_components_GroupBadge__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + group: group, + className: 'Group-icon', + label: null + }), m("span", { + className: "Group-name" + }, group.namePlural())); + }), m("button", { + className: "Button Group Group--add", + onclick: function onclick() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_EditGroupModal__WEBPACK_IMPORTED_MODULE_6__["default"]); + } + }, Object(_common_helpers_icon__WEBPACK_IMPORTED_MODULE_8__["default"])('fas fa-plus', { + className: 'Group-icon' + }), m("span", { + className: "Group-name" + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.permissions.new_group_button'))))), m("div", { + className: "PermissionsPage-permissions" + }, m("div", { + className: "container" + }, _PermissionGrid__WEBPACK_IMPORTED_MODULE_9__["default"].component()))); + }; + + return PermissionsPage; +}(_Page__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + /***/ }), /***/ "./src/admin/components/SessionDropdown.tsx": @@ -12338,6 +14193,193 @@ var SessionDropdown = /*#__PURE__*/function (_Dropdown) { +/***/ }), + +/***/ "./src/admin/components/SettingDropdown.tsx": +/*!**************************************************!*\ + !*** ./src/admin/components/SettingDropdown.tsx ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SettingDropdown; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_components_SelectDropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/SelectDropdown */ "./src/common/components/SelectDropdown.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _utils_saveSettings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/saveSettings */ "./src/admin/utils/saveSettings.ts"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + +var SettingDropdown = /*#__PURE__*/function (_SelectDropdown) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(SettingDropdown, _SelectDropdown); + + var _super = _createSuper(SettingDropdown); + + function SettingDropdown() { + return _SelectDropdown.apply(this, arguments) || this; + } + + SettingDropdown.initProps = function initProps(props) { + var _this = this; + + _SelectDropdown.initProps.call(this, props); + + props.className = 'SettingDropdown'; + props.buttonClassName = 'Button Button--text'; + props.caretIcon = 'fas fa-caret-down'; + props.defaultLabel = 'Custom'; + props.children = props.options.map(function (_ref) { + var _saveSettings$bind; + + var value = _ref.value, + label = _ref.label; + var active = _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings[props.key] === value; + return _common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"].component({ + children: label, + icon: active ? 'fas fa-check' : true, + onclick: _utils_saveSettings__WEBPACK_IMPORTED_MODULE_6__["default"].bind(_this, (_saveSettings$bind = {}, _saveSettings$bind[props.key] = value, _saveSettings$bind)), + active: active + }); + }); + }; + + return SettingDropdown; +}(_common_components_SelectDropdown__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/SettingsModal.tsx": +/*!************************************************!*\ + !*** ./src/admin/components/SettingsModal.tsx ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SettingsModal; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_components_Modal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/Modal */ "./src/common/components/Modal.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _utils_saveSettings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/saveSettings */ "./src/admin/utils/saveSettings.ts"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + + + +var SettingsModal = /*#__PURE__*/function (_Modal) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(SettingsModal, _Modal); + + var _super = _createSuper(SettingsModal); + + function SettingsModal() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Modal.call.apply(_Modal, [this].concat(args)) || this; + _this.settings = {}; + _this.loading = false; + return _this; + } + + var _proto = SettingsModal.prototype; + + _proto.form = function form() { + return ''; + }; + + _proto.content = function content() { + return m("div", { + className: "Modal-body" + }, m("div", { + className: "Form" + }, this.form(), m("div", { + className: "Form-group" + }, this.submitButton()))); + }; + + _proto.submitButton = function submitButton() { + return m(_common_components_Button__WEBPACK_IMPORTED_MODULE_5__["default"], { + type: "submit", + className: "Button Button--primary", + loading: this.loading, + disabled: !this.changed() + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.settings.submit_button')); + }; + + _proto.setting = function setting(key, fallback) { + if (fallback === void 0) { + fallback = ''; + } + + this.settings[key] = this.settings[key] || m.prop(_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings[key] || fallback); + return this.settings[key]; + }; + + _proto.dirty = function dirty() { + var _this2 = this; + + var dirty = {}; + Object.keys(this.settings).forEach(function (key) { + var value = _this2.settings[key](); + + if (value !== _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings[key]) { + dirty[key] = value; + } + }); + return dirty; + }; + + _proto.changed = function changed() { + return Object.keys(this.dirty()).length; + }; + + _proto.onsubmit = function onsubmit(e) { + e.preventDefault(); + this.loading = true; + Object(_utils_saveSettings__WEBPACK_IMPORTED_MODULE_6__["default"])(this.dirty()).then(this.onsaved.bind(this), this.loaded.bind(this)); + }; + + _proto.onsaved = function onsaved() { + this.hide(); + }; + + return SettingsModal; +}(_common_components_Modal__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + /***/ }), /***/ "./src/admin/components/StatusWidget.tsx": @@ -12353,12 +14395,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); /* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); /* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); -/* harmony import */ var _DashboardWidget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DashboardWidget */ "./src/admin/components/DashboardWidget.tsx"); -/* harmony import */ var _common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/helpers/listItems */ "./src/common/helpers/listItems.tsx"); -/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts"); -/* harmony import */ var _common_components_Dropdown__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/components/Dropdown */ "./src/common/components/Dropdown.tsx"); -/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); -/* harmony import */ var _LoadingModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./LoadingModal */ "./src/admin/components/LoadingModal.tsx"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _DashboardWidget__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DashboardWidget */ "./src/admin/components/DashboardWidget.tsx"); +/* harmony import */ var _common_helpers_listItems__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../common/helpers/listItems */ "./src/common/helpers/listItems.tsx"); +/* harmony import */ var _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common/utils/ItemList */ "./src/common/utils/ItemList.ts"); +/* harmony import */ var _common_components_Dropdown__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../common/components/Dropdown */ "./src/common/components/Dropdown.tsx"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); +/* harmony import */ var _LoadingModal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LoadingModal */ "./src/admin/components/LoadingModal.tsx"); @@ -12374,6 +14417,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re + var StatusWidget = /*#__PURE__*/function (_DashboardWidget) { Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(StatusWidget, _DashboardWidget); @@ -12390,37 +14434,173 @@ var StatusWidget = /*#__PURE__*/function (_DashboardWidget) { }; _proto.content = function content() { - return m("ul", null, Object(_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_4__["default"])(this.items().toArray())); + return m("ul", null, Object(_common_helpers_listItems__WEBPACK_IMPORTED_MODULE_5__["default"])(this.items().toArray())); }; _proto.items = function items() { - var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_5__["default"](); - items.add('tools', m(_common_components_Dropdown__WEBPACK_IMPORTED_MODULE_6__["default"], { - label: app.translator.transText('core.admin.dashboard.tools_button'), + var items = new _common_utils_ItemList__WEBPACK_IMPORTED_MODULE_6__["default"](); + items.add('tools', m(_common_components_Dropdown__WEBPACK_IMPORTED_MODULE_7__["default"], { + label: _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.transText('core.admin.dashboard.tools_button'), icon: "fas fa-cog", buttonClassName: "Button", menuClassName: "Dropdown-menu--right" - }, m(_common_components_Button__WEBPACK_IMPORTED_MODULE_7__["default"], { + }, m(_common_components_Button__WEBPACK_IMPORTED_MODULE_8__["default"], { onclick: this.handleClearCache.bind(this) - }, app.translator.trans('core.admin.dashboard.clear_cache_button')))); - items.add('version-flarum', [m("strong", null, "Flarum"), m("br", null), app.forum.attribute('version')]); - items.add('version-php', [m("strong", null, "PHP"), m("br", null), app.data.phpVersion]); - items.add('version-mysql', [m("strong", null, "MySQL"), m("br", null), app.data.mysqlVersion]); + }, _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.dashboard.clear_cache_button')))); + items.add('version-flarum', [m("strong", null, "Flarum"), m("br", null), _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute('version')]); + items.add('version-php', [m("strong", null, "PHP"), m("br", null), _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.phpVersion]); + items.add('version-mysql', [m("strong", null, "MySQL"), m("br", null), _app__WEBPACK_IMPORTED_MODULE_3__["default"].data.mysqlVersion]); return items; }; _proto.handleClearCache = function handleClearCache(e) { - app.modal.show(_LoadingModal__WEBPACK_IMPORTED_MODULE_8__["default"]); - app.request({ + _app__WEBPACK_IMPORTED_MODULE_3__["default"].modal.show(_LoadingModal__WEBPACK_IMPORTED_MODULE_9__["default"]); + _app__WEBPACK_IMPORTED_MODULE_3__["default"].request({ method: 'DELETE', - url: app.forum.attribute('apiUrl') + '/cache' + url: _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute('apiUrl') + '/cache' }).then(function () { return window.location.reload(); }); }; return StatusWidget; -}(_DashboardWidget__WEBPACK_IMPORTED_MODULE_3__["default"]); +}(_DashboardWidget__WEBPACK_IMPORTED_MODULE_4__["default"]); + + + +/***/ }), + +/***/ "./src/admin/components/UploadImageButton.tsx": +/*!****************************************************!*\ + !*** ./src/admin/components/UploadImageButton.tsx ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return UploadImageButton; }); +/* harmony import */ var _babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/possibleConstructorReturn */ "./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js"); +/* harmony import */ var _babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/getPrototypeOf */ "./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); +/* harmony import */ var _common_components_Button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../common/components/Button */ "./src/common/components/Button.tsx"); + + + + +function _createSuper(Derived) { return function () { var Super = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = Object(_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_1__["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_0__["default"])(this, result); }; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + + + + +var UploadImageButton = /*#__PURE__*/function (_Button) { + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__["default"])(UploadImageButton, _Button); + + var _super = _createSuper(UploadImageButton); + + function UploadImageButton() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _Button.call.apply(_Button, [this].concat(args)) || this; + _this.loading = false; + return _this; + } + + var _proto = UploadImageButton.prototype; + + _proto.view = function view() { + this.props.loading = this.loading; + this.props.className = (this.props.className || '') + ' Button'; + + if (_app__WEBPACK_IMPORTED_MODULE_3__["default"].data.settings[this.props.name + '_path']) { + this.props.onclick = this.remove.bind(this); + this.props.children = _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.upload_image.remove_button'); + return m("div", null, m("p", null, m("img", { + src: _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute(this.props.name + 'Url'), + alt: "" + })), m("p", null, _Button.prototype.view.call(this))); + } else { + this.props.onclick = this.upload.bind(this); + this.props.children = _app__WEBPACK_IMPORTED_MODULE_3__["default"].translator.trans('core.admin.upload_image.upload_button'); + } + + return _Button.prototype.view.call(this); + } + /** + * Prompt the user to upload an image. + */ + ; + + _proto.upload = function upload() { + var _this2 = this; + + if (this.loading) return; + var $input = $(''); + $input.appendTo('body').hide().click().on('change', function (e) { + var data = new FormData(); + data.append(_this2.props.name, $(e.target)[0].files[0]); + _this2.loading = true; + m.redraw(); + _app__WEBPACK_IMPORTED_MODULE_3__["default"].request({ + method: 'POST', + url: _this2.resourceUrl(), + serialize: function serialize(raw) { + return raw; + }, + body: data + }).then(_this2.success.bind(_this2), _this2.failure.bind(_this2)); + }); + } + /** + * Remove the logo. + */ + ; + + _proto.remove = function remove() { + this.loading = true; + m.redraw(); + _app__WEBPACK_IMPORTED_MODULE_3__["default"].request({ + method: 'DELETE', + url: this.resourceUrl() + }).then(this.success.bind(this), this.failure.bind(this)); + }; + + _proto.resourceUrl = function resourceUrl() { + return _app__WEBPACK_IMPORTED_MODULE_3__["default"].forum.attribute('apiUrl') + '/' + this.props.name; + } + /** + * After a successful upload/removal, reload the page. + * + * @param {Object} response + * @protected + */ + ; + + _proto.success = function success(response) { + window.location.reload(); + } + /** + * If upload/removal fails, stop loading. + * + * @param {Object} response + * @protected + */ + ; + + _proto.failure = function failure(response) { + this.loading = false; + m.redraw(); + }; + + return UploadImageButton; +}(_common_components_Button__WEBPACK_IMPORTED_MODULE_4__["default"]); @@ -12459,19 +14639,80 @@ _compat__WEBPACK_IMPORTED_MODULE_1__["default"].app = _app__WEBPACK_IMPORTED_MOD "use strict"; __webpack_require__.r(__webpack_exports__); -/* harmony import */ var _components_DashboardPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/DashboardPage */ "./src/admin/components/DashboardPage.tsx"); +/* harmony import */ var _components_BasicsPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/BasicsPage */ "./src/admin/components/BasicsPage.tsx"); +/* harmony import */ var _components_DashboardPage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/DashboardPage */ "./src/admin/components/DashboardPage.tsx"); +/* harmony import */ var _components_MailPage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/MailPage */ "./src/admin/components/MailPage.tsx"); +/* harmony import */ var _components_PermissionsPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/PermissionsPage */ "./src/admin/components/PermissionsPage.tsx"); +/* harmony import */ var _components_AppearancePage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/AppearancePage */ "./src/admin/components/AppearancePage.tsx"); +/* harmony import */ var _components_ExtensionsPage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/ExtensionsPage */ "./src/admin/components/ExtensionsPage.tsx"); + + + + + /* harmony default export */ __webpack_exports__["default"] = (function (app) { app.routes = { dashboard: { path: '/', - component: _components_DashboardPage__WEBPACK_IMPORTED_MODULE_0__["default"] + component: _components_DashboardPage__WEBPACK_IMPORTED_MODULE_1__["default"] + }, + basics: { + path: '/basics', + component: _components_BasicsPage__WEBPACK_IMPORTED_MODULE_0__["default"] + }, + mail: { + path: '/mail', + component: _components_MailPage__WEBPACK_IMPORTED_MODULE_2__["default"] + }, + permissions: { + path: '/permissions', + component: _components_PermissionsPage__WEBPACK_IMPORTED_MODULE_3__["default"] + }, + appearance: { + path: '/appearance', + component: _components_AppearancePage__WEBPACK_IMPORTED_MODULE_4__["default"] + }, + extensions: { + path: '/extensions', + component: _components_ExtensionsPage__WEBPACK_IMPORTED_MODULE_5__["default"] } }; }); /***/ }), +/***/ "./src/admin/utils/saveSettings.ts": +/*!*****************************************!*\ + !*** ./src/admin/utils/saveSettings.ts ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return saveSettings; }); +/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js"); +/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../app */ "./src/admin/app.ts"); + + +function saveSettings(settings) { + var oldSettings = JSON.parse(JSON.stringify(_app__WEBPACK_IMPORTED_MODULE_1__["default"].data.settings)); + + Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(_app__WEBPACK_IMPORTED_MODULE_1__["default"].data.settings, settings); + + return _app__WEBPACK_IMPORTED_MODULE_1__["default"].request({ + method: 'POST', + url: _app__WEBPACK_IMPORTED_MODULE_1__["default"].forum.attribute('apiUrl') + '/settings', + body: settings + }).catch(function (error) { + _app__WEBPACK_IMPORTED_MODULE_1__["default"].data.settings = oldSettings; + throw error; + }); +} + +/***/ }), + /***/ "./src/common/Application.ts": /*!***********************************!*\ !*** ./src/common/Application.ts ***! @@ -15568,8 +17809,8 @@ var Select = /*#__PURE__*/function (_Component) { */ ; - _proto.onchange = function onchange() { - if (this.props.onchange) this.props.onchange(this); + _proto.onchange = function onchange(value) { + if (this.props.onchange) this.props.onchange(value); }; return Select; diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 82e645767..d397069cf 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@flarum/core/webpack/bootstrap","webpack://@flarum/core/./admin.ts","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://@flarum/core/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@flarum/core/./node_modules/bootstrap/js/dropdown.js","webpack://@flarum/core/./node_modules/bootstrap/js/transition.js","webpack://@flarum/core/./node_modules/dayjs/plugin/localizedFormat.js","webpack://@flarum/core/./node_modules/dayjs/plugin/relativeTime.js","webpack://@flarum/core/./node_modules/mousetrap/mousetrap.js-exposed","webpack://@flarum/core/./node_modules/classnames/index.js-exposed","webpack://@flarum/core/./node_modules/dayjs/dayjs.min.js-exposed","webpack://@flarum/core/./node_modules/zepto/dist/zepto.js-exposed","webpack://@flarum/core/./node_modules/mithril/index.js-exposed","webpack://@flarum/core/./node_modules/m.attrs.bidi/bidi.js-exposed","webpack://@flarum/core/./node_modules/dayjs/dayjs.min.js-exposed?a6f5","webpack://@flarum/core/./node_modules/hc-sticky/dist/hc-sticky.js","webpack://@flarum/core/./node_modules/zepto/dist/zepto.js","webpack://@flarum/core/./node_modules/jump.js/dist/jump.module.js","webpack://@flarum/core/./node_modules/lodash/_Symbol.js","webpack://@flarum/core/./node_modules/lodash/_arrayPush.js","webpack://@flarum/core/./node_modules/lodash/_baseFlatten.js","webpack://@flarum/core/./node_modules/lodash/_baseGetTag.js","webpack://@flarum/core/./node_modules/lodash/_baseIsArguments.js","webpack://@flarum/core/./node_modules/lodash/_freeGlobal.js","webpack://@flarum/core/./node_modules/lodash/_getRawTag.js","webpack://@flarum/core/./node_modules/lodash/_isFlattenable.js","webpack://@flarum/core/./node_modules/lodash/_objectToString.js","webpack://@flarum/core/./node_modules/lodash/_root.js","webpack://@flarum/core/./node_modules/lodash/flattenDeep.js","webpack://@flarum/core/./node_modules/lodash/isArguments.js","webpack://@flarum/core/./node_modules/lodash/isArray.js","webpack://@flarum/core/./node_modules/lodash/isObjectLike.js","webpack://@flarum/core/./node_modules/micromodal/dist/micromodal.es.js","webpack://@flarum/core/./node_modules/mithril/api/mount-redraw.js","webpack://@flarum/core/./node_modules/mithril/api/router.js","webpack://@flarum/core/./node_modules/mithril/hyperscript.js","webpack://@flarum/core/./node_modules/mithril/mount-redraw.js","webpack://@flarum/core/./node_modules/mithril/pathname/assign.js","webpack://@flarum/core/./node_modules/mithril/pathname/build.js","webpack://@flarum/core/./node_modules/mithril/pathname/compileTemplate.js","webpack://@flarum/core/./node_modules/mithril/pathname/parse.js","webpack://@flarum/core/./node_modules/mithril/promise/polyfill.js","webpack://@flarum/core/./node_modules/mithril/promise/promise.js","webpack://@flarum/core/./node_modules/mithril/querystring/build.js","webpack://@flarum/core/./node_modules/mithril/querystring/parse.js","webpack://@flarum/core/./node_modules/mithril/render.js","webpack://@flarum/core/./node_modules/mithril/render/fragment.js","webpack://@flarum/core/./node_modules/mithril/render/hyperscript.js","webpack://@flarum/core/./node_modules/mithril/render/hyperscriptVnode.js","webpack://@flarum/core/./node_modules/mithril/render/render.js","webpack://@flarum/core/./node_modules/mithril/render/trust.js","webpack://@flarum/core/./node_modules/mithril/render/vnode.js","webpack://@flarum/core/./node_modules/mithril/request.js","webpack://@flarum/core/./node_modules/mithril/request/request.js","webpack://@flarum/core/./node_modules/mithril/route.js","webpack://@flarum/core/./node_modules/mithril/stream.js","webpack://@flarum/core/./node_modules/mithril/stream/stream.js","webpack://@flarum/core/../../src/utils/isBrowser.js","webpack://@flarum/core/../../src/utils/debounce.js","webpack://@flarum/core/../../src/utils/isFunction.js","webpack://@flarum/core/../../src/utils/getStyleComputedProperty.js","webpack://@flarum/core/../../src/utils/getParentNode.js","webpack://@flarum/core/../../src/utils/getScrollParent.js","webpack://@flarum/core/../../src/utils/getReferenceNode.js","webpack://@flarum/core/../../src/utils/isIE.js","webpack://@flarum/core/../../src/utils/getOffsetParent.js","webpack://@flarum/core/../../src/utils/isOffsetContainer.js","webpack://@flarum/core/../../src/utils/getRoot.js","webpack://@flarum/core/../../src/utils/findCommonOffsetParent.js","webpack://@flarum/core/../../src/utils/getScroll.js","webpack://@flarum/core/../../src/utils/includeScroll.js","webpack://@flarum/core/../../src/utils/getBordersSize.js","webpack://@flarum/core/../../src/utils/getWindowSizes.js","webpack://@flarum/core/../../src/utils/getClientRect.js","webpack://@flarum/core/../../src/utils/getBoundingClientRect.js","webpack://@flarum/core/../../src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack://@flarum/core/../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack://@flarum/core/../../src/utils/isFixed.js","webpack://@flarum/core/../../src/utils/getFixedPositionOffsetParent.js","webpack://@flarum/core/../../src/utils/getBoundaries.js","webpack://@flarum/core/../../src/utils/computeAutoPlacement.js","webpack://@flarum/core/../../src/utils/getReferenceOffsets.js","webpack://@flarum/core/../../src/utils/getOuterSizes.js","webpack://@flarum/core/../../src/utils/getOppositePlacement.js","webpack://@flarum/core/../../src/utils/getPopperOffsets.js","webpack://@flarum/core/../../src/utils/find.js","webpack://@flarum/core/../../src/utils/findIndex.js","webpack://@flarum/core/../../src/utils/runModifiers.js","webpack://@flarum/core/../../src/methods/update.js","webpack://@flarum/core/../../src/utils/isModifierEnabled.js","webpack://@flarum/core/../../src/utils/getSupportedPropertyName.js","webpack://@flarum/core/../../src/methods/destroy.js","webpack://@flarum/core/../../src/utils/getWindow.js","webpack://@flarum/core/../../src/utils/setupEventListeners.js","webpack://@flarum/core/../../src/methods/enableEventListeners.js","webpack://@flarum/core/../../src/utils/removeEventListeners.js","webpack://@flarum/core/../../src/methods/disableEventListeners.js","webpack://@flarum/core/../../src/utils/isNumeric.js","webpack://@flarum/core/../../src/utils/setStyles.js","webpack://@flarum/core/../../src/utils/setAttributes.js","webpack://@flarum/core/../../src/modifiers/applyStyle.js","webpack://@flarum/core/../../src/utils/getRoundedOffsets.js","webpack://@flarum/core/../../src/modifiers/computeStyle.js","webpack://@flarum/core/../../src/utils/isModifierRequired.js","webpack://@flarum/core/../../src/modifiers/arrow.js","webpack://@flarum/core/../../src/utils/getOppositeVariation.js","webpack://@flarum/core/../../src/methods/placements.js","webpack://@flarum/core/../../src/utils/clockwise.js","webpack://@flarum/core/../../src/modifiers/flip.js","webpack://@flarum/core/../../src/modifiers/keepTogether.js","webpack://@flarum/core/../../src/modifiers/offset.js","webpack://@flarum/core/../../src/modifiers/preventOverflow.js","webpack://@flarum/core/../../src/modifiers/shift.js","webpack://@flarum/core/../../src/modifiers/hide.js","webpack://@flarum/core/../../src/modifiers/inner.js","webpack://@flarum/core/../../src/modifiers/index.js","webpack://@flarum/core/../../src/methods/defaults.js","webpack://@flarum/core/../../src/index.js","webpack://@flarum/core/./node_modules/process/browser.js","webpack://@flarum/core/./node_modules/setimmediate/setImmediate.js","webpack://@flarum/core/./node_modules/classnames/index.js","webpack://@flarum/core/./node_modules/dayjs/dayjs.min.js","webpack://@flarum/core/./node_modules/m.attrs.bidi/bidi.js","webpack://@flarum/core/./node_modules/mithril/index.js","webpack://@flarum/core/./node_modules/mousetrap/mousetrap.js","webpack://@flarum/core/./node_modules/spin.js/spin.js","webpack://@flarum/core/./node_modules/timers-browserify/main.js","webpack://@flarum/core/../../../popper/src/utils/isFunction.js","webpack://@flarum/core/(webpack)/buildin/global.js","webpack://@flarum/core/./node_modules/zepto/src/data.js","webpack://@flarum/core/./node_modules/zepto/src/fx.js","webpack://@flarum/core/./node_modules/zepto/src/fx_methods.js","webpack://@flarum/core/./node_modules/zepto/src/selector.js","webpack://@flarum/core/./src/admin/Admin.ts","webpack://@flarum/core/./src/admin/app.ts","webpack://@flarum/core/./src/admin/compat.ts","webpack://@flarum/core/./src/admin/components/AdminLinkButton.tsx","webpack://@flarum/core/./src/admin/components/AdminNav.tsx","webpack://@flarum/core/./src/admin/components/DashboardPage.tsx","webpack://@flarum/core/./src/admin/components/DashboardWidget.tsx","webpack://@flarum/core/./src/admin/components/HeaderPrimary.tsx","webpack://@flarum/core/./src/admin/components/HeaderSecondary.tsx","webpack://@flarum/core/./src/admin/components/LoadingModal.tsx","webpack://@flarum/core/./src/admin/components/Page.tsx","webpack://@flarum/core/./src/admin/components/SessionDropdown.tsx","webpack://@flarum/core/./src/admin/components/StatusWidget.tsx","webpack://@flarum/core/./src/admin/index.ts","webpack://@flarum/core/./src/admin/routes.ts","webpack://@flarum/core/./src/common/Application.ts","webpack://@flarum/core/./src/common/Component.ts","webpack://@flarum/core/./src/common/Model.ts","webpack://@flarum/core/./src/common/Session.ts","webpack://@flarum/core/./src/common/Store.ts","webpack://@flarum/core/./src/common/Translator.ts","webpack://@flarum/core/./src/common/compat.ts","webpack://@flarum/core/./src/common/components/Alert.tsx","webpack://@flarum/core/./src/common/components/AlertManager.tsx","webpack://@flarum/core/./src/common/components/Badge.tsx","webpack://@flarum/core/./src/common/components/Button.tsx","webpack://@flarum/core/./src/common/components/Checkbox.tsx","webpack://@flarum/core/./src/common/components/Dropdown.tsx","webpack://@flarum/core/./src/common/components/FieldSet.tsx","webpack://@flarum/core/./src/common/components/GroupBadge.ts","webpack://@flarum/core/./src/common/components/LinkButton.tsx","webpack://@flarum/core/./src/common/components/LoadingIndicator.tsx","webpack://@flarum/core/./src/common/components/Modal.tsx","webpack://@flarum/core/./src/common/components/ModalManager.tsx","webpack://@flarum/core/./src/common/components/Navigation.tsx","webpack://@flarum/core/./src/common/components/Placeholder.tsx","webpack://@flarum/core/./src/common/components/RequestErrorModal.tsx","webpack://@flarum/core/./src/common/components/Select.tsx","webpack://@flarum/core/./src/common/components/SelectDropdown.tsx","webpack://@flarum/core/./src/common/components/Separator.tsx","webpack://@flarum/core/./src/common/components/SplitDropdown.tsx","webpack://@flarum/core/./src/common/components/Switch.tsx","webpack://@flarum/core/./src/common/extend.ts","webpack://@flarum/core/./src/common/helpers/avatar.tsx","webpack://@flarum/core/./src/common/helpers/fullTime.tsx","webpack://@flarum/core/./src/common/helpers/highlight.ts","webpack://@flarum/core/./src/common/helpers/humanTime.tsx","webpack://@flarum/core/./src/common/helpers/icon.tsx","webpack://@flarum/core/./src/common/helpers/listItems.tsx","webpack://@flarum/core/./src/common/helpers/userOnline.tsx","webpack://@flarum/core/./src/common/helpers/username.tsx","webpack://@flarum/core/./src/common/index.ts","webpack://@flarum/core/./src/common/models/Discussion.tsx","webpack://@flarum/core/./src/common/models/Forum.ts","webpack://@flarum/core/./src/common/models/Group.ts","webpack://@flarum/core/./src/common/models/Notification.ts","webpack://@flarum/core/./src/common/models/Post.ts","webpack://@flarum/core/./src/common/models/User.ts","webpack://@flarum/core/./src/common/utils/Drawer.ts","webpack://@flarum/core/./src/common/utils/Evented.ts","webpack://@flarum/core/./src/common/utils/ItemList.ts","webpack://@flarum/core/./src/common/utils/RequestError.ts","webpack://@flarum/core/./src/common/utils/ScrollListener.ts","webpack://@flarum/core/./src/common/utils/SubtreeRetainer.ts","webpack://@flarum/core/./src/common/utils/abbreviateNumber.tsx","webpack://@flarum/core/./src/common/utils/anchorScroll.ts","webpack://@flarum/core/./src/common/utils/computed.ts","webpack://@flarum/core/./src/common/utils/extract.ts","webpack://@flarum/core/./src/common/utils/extractText.ts","webpack://@flarum/core/./src/common/utils/formatNumber.ts","webpack://@flarum/core/./src/common/utils/humanTime.ts","webpack://@flarum/core/./src/common/utils/mapRoutes.ts","webpack://@flarum/core/./src/common/utils/patchMithril.ts","webpack://@flarum/core/./src/common/utils/patchZepto.ts","webpack://@flarum/core/./src/common/utils/string.ts","webpack://@flarum/core/./src/common/utils/stringToColor.ts","webpack://@flarum/core/external \"m\""],"names":["window","document","navigator","timeoutDuration","longerTimeoutBrowsers","i","length","isBrowser","userAgent","indexOf","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","ownerDocument","defaultView","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","parseInt","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","e","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","undefined","slice","forEach","warn","enabled","update","isDestroyed","options","positionFixed","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","round","floor","noRound","v","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","prefixedProperty","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","transformProp","popperStyles","transform","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils","DEFAULT_OPTIONS","Tooltip","events","trigger","_isOpen","_popperOptions","_setEventListeners","template","title","allowHtml","tooltipGenerator","createElement","innerHTML","tooltipNode","childNodes","id","random","substr","titleNode","innerSelector","_addTitleContent","appendChild","textContent","_isOpening","_tooltipNode","visibility","popperInstance","getAttribute","_create","container","_findContainer","_append","popperOptions","arrowSelector","_events","func","_hide","directEvents","oppositeEvents","usedByTooltip","_scheduleShow","delay","evt","_scheduleHide","closeOnClickOutside","computedDelay","show","_showTimeout","setTimeout","_show","clearTimeout","type","isSet","_setTooltipNodeEvent","_clearTitleContent","lastTitle","dispose","_dispose","toggle","updateTitleContent","_updateTitleContent","relatedreference","toElement","relatedTarget","relatedreference2","evt2","Admin","extensionSettings","history","canGoBack","getPrevious","backUrl","forum","attribute","back","location","routes","mount","m","getElementById","Navigation","className","drawer","HeaderPrimary","HeaderSecondary","AdminNav","route","localStorage","getItem","removeItem","getRequiredPermissions","permission","required","Application","app","compat","AdminLinkButton","getButtonContent","content","props","icon","loading","description","LinkButton","view","items","toArray","ItemList","add","component","href","translator","trans","Component","DashboardPage","availableWidgets","Page","DashboardWidget","listItems","config","isInitialized","context","retain","SessionDropdown","LoadingModal","isDismissible","transText","Modal","init","previous","current","modal","close","bodyClass","$","addClass","onunload","removeClass","initProps","buttonClassName","menuClassName","user","session","avatar","username","Button","onclick","logout","Dropdown","StatusWidget","handleClearCache","phpVersion","mysqlVersion","request","method","url","reload","dashboard","path","initializers","Translator","store","Store","forums","Forum","users","User","discussions","Discussion","posts","Post","groups","Group","notifications","Notification","cache","booted","requestError","titleCount","Drawer","alerts","load","payload","locale","boot","initializer","pushPayload","resources","getById","Session","userId","csrfToken","bootExtensions","extensions","extension","extenders","flattenDeep","extend","extender","exports","basePath","$modal","$alerts","$content","ModalManager","AlertManager","oninit","vnode","mapRoutes","ScrollListener","$app","toggleClass","preloadedApiDocument","apiDocument","results","setTitle","updateTitle","setTitleCount","count","params","Error","extract","hasOwnProperty","queryString","buildQueryString","originalOptions","background","xhr","setRequestHeader","deserialize","responseText","errorHandler","error","original","status","RequestError","getResponseHeader","JSON","parse","dismiss","alert","res","response","errors","detail","isDebug","Alert","controls","showDebug","console","reject","RequestErrorModal","tag","setProps","oncreate","dom","onbeforeupdate","onupdate","onbeforeremove","onremove","selector","$element","render","constructor","componentProps","attrs","Model","freshness","exists","Date","pushData","innerKey","getIdentifier","pushAttributes","save","relationships","model","oldData","copyData","meta","apiEndpoint","redraw","delete","remove","stringify","hasOne","relationship","isArray","hasMany","transformDate","login","models","included","pushObject","createRecord","query","join","getBy","all","records","translations","addTranslations","parameters","translation","apply","extractText","transChoice","number","pluralize","input","parts","RegExp","hydrated","open","part","unshift","text","sPluralRegex","cPluralRegex","iPluralRegex","standardRules","explicitRules","matches","rule","ns","leftNumber","convertNumber","rightNumber","pluralPosition","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","Evented","humanTime","computed","anchorScroll","abbreviateNumber","string","SubtreeRetainer","stringToColor","patchMithril","formatNumber","Switch","Badge","LoadingIndicator","Placeholder","Separator","SplitDropdown","FieldSet","Select","Checkbox","SelectDropdown","GroupBadge","fullTime","humanTimeHelper","highlight","userOnline","dismissible","ondismiss","dismissControl","components","splice","clear","iconName","trust","label","tooltip","disabled","classNames","withAttr","onchange","getDisplay","checked","showing","caretIcon","getButton","getMenu","dropdown","onshow","$menu","isRight","hasClass","onhide","group","backgroundColor","color","nameSingular","active","isActive","vdom","Link","String","get","zIndex","sizeOptions","lines","radius","Spinner","spin","onsubmit","onready","first","focus","select","loaded","onerror","source","pointer","hideTimeout","modalProps","appendTo","MicroModal","awaitCloseAnimation","awaitOpenAnimation","disableFocus","onShow","onClose","backdrop","fadeOut","one","pane","onmouseleave","getBackButton","getPaneButton","getDrawerButton","shiftKey","ctrlKey","metaKey","which","preventDefault","pinned","togglePinned","newNotificationCount","stopPropagation","statusText","activeChild","child","defaultLabel","isListItem","firstChild","getFirstChild","buttonProps","object","args","override","newMethod","hasTitle","displayName","avatarUrl","time","mo","dayjs","datetime","format","full","phrase","regexp","highlighted","truncate","ago","humanTimeUtil","fontClass","isSeparator","item","withoutUnnecessarySeparators","newItems","prevItem","itemClassName","itemName","lastSeenAt","isOnline","relativeTime","localizedFormat","slug","createdAt","firstPost","lastPostedAt","lastPostedUser","lastPost","lastPostNumber","commentCount","replyCount","mostRelevantPost","lastReadAt","lastReadPostNumber","isUnread","unreadCount","isRead","hiddenAt","hiddenUser","isHidden","canReply","canRename","canHide","canDelete","removePost","markedAllAsReadAt","badges","postIds","link","namePlural","ADMINISTRATOR_ID","GUEST_ID","MEMBER_ID","contentType","fromUser","subject","discussion","contentHtml","contentPlain","getPlainContent","editedAt","editedUser","isEdited","canEdit","email","isEmailConfirmed","password","preferences","joinTime","unreadNotificationCount","discussionCount","avatarColor","calculateAvatarColor","toDate","image","Image","onload","colorThief","ColorThief","getColor","crossOrigin","src","savePreferences","newPreferences","$backdrop","click","isOpen","handlers","getHandlers","handler","on","wrapper","from","arguments","off","Item","isEmpty","has","later","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","ticking","loop","pageYOffset","stop","callbacks","$window","$el","relativeScroll","dependentKeys","compute","dependentValues","computedValue","recompute","maximumSignificantDigits","toLocaleString","now","isAfter","day","diff","year","fromNow","routeName","_m","comp","defineProperty","writable","bidi","cb","option","each","$this","attr","removeAttr","includes","dimension","Dimension","margin","elem","sides","expr","tagName","hover","leave","animateScrollTop","to","duration","fx","speeds","_default","scrollY","jump","slideUp","easing","animate","special","bindBeforeSpecialEvents","eventName","specialEvent","_init","originalHandler","handle","$target","setup","substring","removeSelectors","ucfirst","hsvToRgb","h","s","r","g","f","p","q","t","num","charCodeAt","hue","rgb"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;AASA;;;;;;;;;;;;;ACTA;AAAA;AAAe;AACf;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACNA;AAAA;AAAe;AACf;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AChBA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA;AACA;AACA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AAA+C;AACa;AAC7C;AACf,eAAe,mEAAO;AACtB;AACA;;AAEA,SAAS,sEAAqB;AAC9B,C;;;;;;;;;;;;ACRA;AAAA;AAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;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CA,KAAK;AACL;AACA;AACA,mBAAmB;AACnB;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,0CAA0C,sBAAsB;AAC3F,2BAA2B;AAC3B,2BAA2B,oDAAoD,sCAAsC;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+CAA+C,oCAAoC;;AAE5G;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C,sCAAsC;AACrF;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4BAA4B;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf,YAAY;AACZ;;AAEA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,2CAA2C,4BAA4B;AACvE,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,oEAAoE,cAAc;AAClF;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,wBAAwB,oBAAoB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,wCAAwC,mCAAmC;AAC3E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,0CAA0C,wBAAwB;AAClE,KAAK;AACL;AACA,kCAAkC,6DAA6D;AAC/F,KAAK;AACL;AACA;AACA,oEAAoE,oBAAoB;AACxF,OAAO;AACP,KAAK;AACL;AACA,kCAAkC,sBAAsB;AACxD,KAAK;AACL;AACA;AACA,sCAAsC,sBAAsB;AAC5D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,iCAAiC,8BAA8B;AAC/D,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL,6BAA6B,yEAAyE;AACtG,6BAA6B,qEAAqE;AAClG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,kCAAkC;AAClC;AACA,OAAO,QAAQ;AACf,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,kCAAkC,oBAAoB;AACtD,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,uDAAuD,uBAAuB;AAC9E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,iDAAiD;AAChF;AACA;AACA,OAAO;AACP;AACA;AACA,iCAAiC,4CAA4C;AAC7E;AACA,6EAA6E;AAC7E;;AAEA,kCAAkC,yBAAyB,SAAS;AACpE,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,mBAAmB,qCAAqC;AACxD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C,mBAAmB,qCAAqC;AACxD,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oEAAoE,kBAAkB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA,yCAAyC,4BAA4B;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D,mBAAmB;AACnB,sBAAsB;AACtB;AACA,eAAe,qCAAqC;AACpD,eAAe;;AAEf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA,aAAa;;AAEb;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,YAAY;AAC1C,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,yCAAyC;AACnF;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,aAAa,eAAe;;AAE5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,IAAI;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,EAAE;AACrB,2CAA2C,8CAA8C;AACzF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;;AAEzB;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;AACD;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;AAED,CAAC,e;;;;;;;;;;;;ACtnDD;AAAA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB,qBAAqB;AACrB,oBAAoB;;AAEpB,sBAAsB;AACtB,sBAAsB;AACtB,oBAAoB;;AAEpB,wBAAwB;AACxB,wBAAwB;;AAExB,yBAAyB;AACzB,2BAA2B;;AAE3B,oBAAoB;;AAEpB,wBAAwB;;AAExB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEe,wEAAS,EAAC;;;;;;;;;;;;ACtKzB,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrCA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA;AACA;;AAEA;;;;;;;;;;;;;ACHA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC5BA;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wCAAwC,SAAS;;AAEjD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER,+FAA+F;;AAE/F;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB,gBAAgB;AAChB;;;AAGA;AACA;AACA;AACA;;AAEA,+EAA+E,aAAa;AAC5F;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,yDAAyD;;AAEzD,yDAAyD;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA,sDAAsD;;AAEtD,gDAAgD;AAChD;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB,cAAc,OAAO;AACrB,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc;AACd;;;AAGA;AACA;AACA,kHAAkH,eAAe,kBAAkB;AACnJ,4DAA4D,eAAe,kBAAkB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB,cAAc;AACd;;;AAGA;AACA;AACA,sHAAsH,eAAe,kBAAkB;AACvJ,4DAA4D,eAAe,kBAAkB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB,cAAc,MAAM;AACpB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;;;AAGA;AACA;AACA,kCAAkC;AAClC;AACA,KAAK,UAAU;;AAEf,uGAAuG;;;AAGvG,uEAAuE;;AAEvE,2FAA2F;;AAE3F;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc;AACd;;;AAGA;AACA;AACA,sCAAsC;;AAEtC,2FAA2F;;AAE3F,wDAAwD;;AAExD,qCAAqC;;AAErC;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc;AACd;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEe,yEAAU,EAAC;;;;;;;;;;;;;ACxbd;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C,QAAQ;AACR,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT;;;;;;;;;;;;;ACjDA,oDAAY;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;AACrC,QAAQ,mBAAO,CAAC,2EAAuB;AACvC,cAAc,mBAAO,CAAC,qEAAoB;;AAE1C,oBAAoB,mBAAO,CAAC,mEAAmB;AAC/C,oBAAoB,mBAAO,CAAC,mEAAmB;AAC/C,sBAAsB,mBAAO,CAAC,uFAA6B;AAC3D,aAAa,mBAAO,CAAC,qEAAoB;;AAEzC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iCAAiC,cAAc;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU,qBAAqB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;ACrQY;;AAEZ,kBAAkB,mBAAO,CAAC,0EAAsB;;AAEhD,oBAAoB,mBAAO,CAAC,8DAAgB;AAC5C,uBAAuB,mBAAO,CAAC,oEAAmB;;AAElD;;;;;;;;;;;;;ACPY;;AAEZ,aAAa,mBAAO,CAAC,kDAAU;;AAE/B,iBAAiB,mBAAO,CAAC,sEAAoB;;;;;;;;;;;;;ACJjC;;AAEZ;AACA,uDAAuD,4BAA4B;AACnF;;;;;;;;;;;;;ACJY;;AAEZ,uBAAuB,mBAAO,CAAC,yEAAsB;AACrD,aAAa,mBAAO,CAAC,2DAAU;;AAE/B;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,8CAA8C,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1CY;;AAEZ,oBAAoB,mBAAO,CAAC,yDAAS;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,+BAA+B;AACnD;AACA;AACA,cAAc,2BAA2B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1CY;;AAEZ,uBAAuB,mBAAO,CAAC,yEAAsB;;AAErD,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA,8CAA8C,GAAG;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvBA,oDAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA,mCAAmC;AACnC,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,mCAAmC,YAAY;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAA6B,YAAY;AACtD,GAAG;AACH;AACA;AACA;AACA,8DAA8D,2CAA2C;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA,EAAE;AACF;;AAEA;;;;;;;;;;;;;;AC/GA,8CAAY;;AAEZ,sBAAsB,mBAAO,CAAC,8DAAY;;AAE1C;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;;;;;;;;;;;;;;ACpBY;;AAEZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzBY;;AAEZ;AACA;AACA;;AAEA,+CAA+C;AAC/C,gBAAgB,oBAAoB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1CY;;AAEZ,iBAAiB,mBAAO,CAAC,gEAAiB;;;;;;;;;;;;;ACF9B;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;AACrC,uBAAuB,mBAAO,CAAC,6EAAoB;;AAEnD;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACXY;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;AACrC,uBAAuB,mBAAO,CAAC,6EAAoB;;AAEnD;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACpGY;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACpDY;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,yDAAyD;AACzD,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uCAAuC,OAAO;AAC9C,iCAAiC,OAAO;AACxC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,iBAAiB;AAC7B,YAAY,eAAe;AAC3B;AACA,YAAY,eAAe;AAC3B,YAAY,WAAW;AACvB,YAAY,eAAe;AAC3B;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,sBAAsB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,+DAA+D;AAC/D,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,aAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,2BAA2B;AAC9C;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;;;;;;;;;;;;;AC58BY;;AAEZ,YAAY,mBAAO,CAAC,+DAAiB;;AAErC;AACA;AACA;AACA;;;;;;;;;;;;;ACPY;;AAEZ;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9BY;;AAEZ,sBAAsB,mBAAO,CAAC,oEAAmB;AACjD,kBAAkB,mBAAO,CAAC,8DAAgB;;AAE1C,iBAAiB,mBAAO,CAAC,oEAAmB;;;;;;;;;;;;;ACLhC;;AAEZ,oBAAoB,mBAAO,CAAC,mEAAmB;;AAE/C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,YAAY;AACZ,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;ACjMY;;AAEZ,kBAAkB,mBAAO,CAAC,8DAAgB;;AAE1C,iBAAiB,mBAAO,CAAC,0DAAc;;;;;;;;;;;;;ACJ3B;;AAEZ,iBAAiB,mBAAO,CAAC,gEAAiB;;;;;;;;;;;;ACF1C;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B;AACzE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2BAA2B;AACrE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,6BAA6B;;AAE7B;AACA,0CAA0C,kCAAkC,oBAAoB;;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,2CAA2C,gCAAgC;AAC3E;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;AACA,qCAAqC,mBAAmB;AACxD;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA,4BAA4B,iCAAiC,aAAa,GAAG;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA,2CAA2C,kBAAkB;;AAE7D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA1FiB4V,OAoHZO,QAAQ,CAAC,OAAO1X,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC2X,MAA1C,EAAkDC;AApH9CT,OAsHZ1D,aAAaA;AAtHD0D,OAwHZI,WAAWA;;;;;;;;;;;;;;;ACpIpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;;;ACvLtC;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;;;ACzLD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK,KAA6B;AAClC;AACA;AACA,EAAE,UAAU,IAA4E;AACxF;AACA,EAAE,iCAAqB,EAAE,mCAAE;AAC3B;AACA,GAAG;AA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,MAAM;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA,8CAA8C,EAAE;AAChD;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,MAAM;AACzB,mBAAmB,aAAa;AAChC,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,uCAAuC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,mBAAmB,MAAM;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,MAAM;AACzB,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,sBAAsB;;AAE7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,MAAM;AACzB,mBAAmB,SAAS;AAC5B,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,MAAM;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,mBAAmB,SAAS;AAC5B,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B,mBAAmB,QAAQ;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD,kBAAkB;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB,mBAAmB,SAAS;AAC5B,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,QAAQ,KAA6B;AACrC;AACA;;AAEA;AACA,QAAQ,IAA0C;AAClD,QAAQ,mCAAO;AACf;AACA,SAAS;AAAA,oGAAC;AACV;AACA,CAAC;;;;;;;;;;;;;ACjiCD;AAAA;AAAA,gBAAgB,SAAI,IAAI,SAAI;AAC5B;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW;AACzC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACkB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7LA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAO,CAAC,iEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;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zC,YAAL,CAAkB3U,QAAlB,CAA2BgX,gBAA3B,CAAJ,EAAkD;;aAE3CrC,YAAL,CAAkBlK,gBAAlB,CAAmCoL,IAAIS,IAAvC,EAA6CjM,QAA7C;aACO,IAAP;;;WAGK,KAAP;;;;;;;;;;;;;;;;AWtbJ;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA;AACA;AACA;;AAEA;;AAEA,CAAC;AACD,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA4C,4BAA4B;AACxE,SAAS;AACT;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;;AAEA;AACA,2BAA2B,6BAA6B;AACxD,KAAK;;AAEL;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;AC1HD;AACA;AACA;;AAEA,CAAC;AACD;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;;;;;;;;;;;ACtED;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iCAAiC;AAC1D,yBAAyB,kCAAkC;AAC3D,yBAAyB,iCAAiC;AAC1D,yBAAyB,gCAAgC;AACzD,yBAAyB,yBAAyB;AAClD,4BAA4B,6BAA6B;AACzD,mCAAmC,4CAA4C;AAC/E,sCAAsC,iCAAiC;AACvE,qCAAqC,qDAAqD;AAC1F,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,+CAA+C,uCAAuC;AACtF,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpFD;AACA;AACA;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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.ts\");\n","/*\n * This file is part of Flarum.\n *\n * (c) Toby Zerner \n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport * from './src/common';\nexport * from './src/admin';\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _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}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = 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\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}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(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 * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.dayjs_plugin_localizedFormat=t()}(this,function(){\"use strict\";return function(e,t,o){var n=t.prototype,r=n.format,M={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};o.en.formats=M;n.format=function(e){void 0===e&&(e=\"YYYY-MM-DDTHH:mm:ssZ\");var t=this.$locale().formats,o=void 0===t?{}:t,n=e.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,t,n){var r=n&&n.toUpperCase();return t||o[n]||M[n]||o[r].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(e,t,o){return t||o.slice(1)})});return r.call(this,n)}}});\n","!function(r,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):r.dayjs_plugin_relativeTime=t()}(this,function(){\"use strict\";return function(r,t,e){var n=t.prototype;e.en.relativeTime={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};var o=function(r,t,n,o){for(var d,i,u,a=n.$locale().relativeTime,f=[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],s=f.length,l=0;l0,m<=h.r||!h.r){1===m&&l>0&&(h=f[l-1]);var c=a[h.l];i=\"string\"==typeof c?c.replace(\"%d\",m):c(m,t,h.l,u);break}}return t?i:(u?a.future:a.past).replace(\"%s\",i)};n.to=function(r,t){return o(r,t,this,!0)},n.from=function(r,t){return o(r,t,this)};var d=function(r){return r.$u?e.utc():e()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}});\n","module.exports = global[\"Mousetrap\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./mousetrap.js\");","module.exports = global[\"classNames\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./index.js\");","module.exports = global[\"dayjs\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./dayjs.min.js\");","module.exports = global[\"jQuery\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/imports-loader/index.js?this=>window!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./zepto.js\");","module.exports = global[\"m\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./index.js\");","if(!global[\"m\"]) global[\"m\"] = {};\nmodule.exports = global[\"m\"][\"bidi\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./bidi.js\");","module.exports = global[\"moment\"] = require(\"-!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/expose-loader/index.js?dayjs!/data/Programming/Projects/flarum/dev_env/packages/core/js/node_modules/source-map-loader/index.js!./dayjs.min.js\");","/*!\n * HC-Sticky\n * =========\n * Version: 2.2.3\n * Author: Some Web Media\n * Author URL: http://somewebmedia.com\n * Plugin URL: https://github.com/somewebmedia/hc-sticky\n * Description: Cross-browser plugin that makes any element on your page visible while you scroll\n * License: MIT\n */\n!function(t,e){\"use strict\";if(\"object\"==typeof module&&\"object\"==typeof module.exports){if(!t.document)throw new Error(\"HC-Sticky requires a browser to run.\");module.exports=e(t)}else\"function\"==typeof define&&define.amd?define(\"hcSticky\",[],e(t)):e(t)}(\"undefined\"!=typeof window?window:this,function(U){\"use strict\";var Y={top:0,bottom:0,bottomEnd:0,innerTop:0,innerSticker:null,stickyClass:\"sticky\",stickTo:null,followScroll:!0,responsive:null,mobileFirst:!1,onStart:null,onStop:null,onBeforeResize:null,onResize:null,resizeDebounce:100,disable:!1,queries:null,queryFlow:\"down\"},$=function(t,e,o){console.log(\"%c! HC Sticky:%c \"+t+\"%c \"+o+\" is now deprecated and will be removed. Use%c \"+e+\"%c instead.\",\"color: red\",\"color: darkviolet\",\"color: black\",\"color: darkviolet\",\"color: black\")},Q=U.document,X=function(n,f){var o=this;if(\"string\"==typeof n&&(n=Q.querySelector(n)),!n)return!1;f.queries&&$(\"queries\",\"responsive\",\"option\"),f.queryFlow&&$(\"queryFlow\",\"mobileFirst\",\"option\");var p={},d=X.Helpers,s=n.parentNode;\"static\"===d.getStyle(s,\"position\")&&(s.style.position=\"relative\");var u=function(){var t=0>>0;if(\"function\"!=typeof t)throw new TypeError(t+\" is not a function\");for(1]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('
').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\n })\n return result.join('&')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind('submit', callback)\n else if (this.length) {\n var event = $.Event('submit')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n\n}.call(window));","// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\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\" && Symbol.iterator in Object(iter)) 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(n);\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 MicroModal = function () {\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])', 'select:not([disabled]):not([aria-hidden])', 'textarea:not([disabled]):not([aria-hidden])', 'button:not([disabled]):not([aria-hidden])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n\n var Modal = /*#__PURE__*/function () {\n function Modal(_ref) {\n var targetModal = _ref.targetModal,\n _ref$triggers = _ref.triggers,\n triggers = _ref$triggers === void 0 ? [] : _ref$triggers,\n _ref$onShow = _ref.onShow,\n onShow = _ref$onShow === void 0 ? function () {} : _ref$onShow,\n _ref$onClose = _ref.onClose,\n onClose = _ref$onClose === void 0 ? function () {} : _ref$onClose,\n _ref$openTrigger = _ref.openTrigger,\n openTrigger = _ref$openTrigger === void 0 ? 'data-micromodal-trigger' : _ref$openTrigger,\n _ref$closeTrigger = _ref.closeTrigger,\n closeTrigger = _ref$closeTrigger === void 0 ? 'data-micromodal-close' : _ref$closeTrigger,\n _ref$openClass = _ref.openClass,\n openClass = _ref$openClass === void 0 ? 'is-open' : _ref$openClass,\n _ref$disableScroll = _ref.disableScroll,\n disableScroll = _ref$disableScroll === void 0 ? false : _ref$disableScroll,\n _ref$disableFocus = _ref.disableFocus,\n disableFocus = _ref$disableFocus === void 0 ? false : _ref$disableFocus,\n _ref$awaitCloseAnimat = _ref.awaitCloseAnimation,\n awaitCloseAnimation = _ref$awaitCloseAnimat === void 0 ? false : _ref$awaitCloseAnimat,\n _ref$awaitOpenAnimati = _ref.awaitOpenAnimation,\n awaitOpenAnimation = _ref$awaitOpenAnimati === void 0 ? false : _ref$awaitOpenAnimati,\n _ref$debugMode = _ref.debugMode,\n debugMode = _ref$debugMode === void 0 ? false : _ref$debugMode;\n\n _classCallCheck(this, Modal);\n\n // Save a reference of the modal\n this.modal = document.getElementById(targetModal); // Save a reference to the passed config\n\n this.config = {\n debugMode: debugMode,\n disableScroll: disableScroll,\n openTrigger: openTrigger,\n closeTrigger: closeTrigger,\n openClass: openClass,\n onShow: onShow,\n onClose: onClose,\n awaitCloseAnimation: awaitCloseAnimation,\n awaitOpenAnimation: awaitOpenAnimation,\n disableFocus: disableFocus\n }; // Register click events only if pre binding eventListeners\n\n if (triggers.length > 0) this.registerTriggers.apply(this, _toConsumableArray(triggers)); // pre bind functions for event listeners\n\n this.onClick = this.onClick.bind(this);\n this.onKeydown = this.onKeydown.bind(this);\n }\n /**\n * Loops through all openTriggers and binds click event\n * @param {array} triggers [Array of node elements]\n * @return {void}\n */\n\n\n _createClass(Modal, [{\n key: \"registerTriggers\",\n value: function registerTriggers() {\n var _this = this;\n\n for (var _len = arguments.length, triggers = new Array(_len), _key = 0; _key < _len; _key++) {\n triggers[_key] = arguments[_key];\n }\n\n triggers.filter(Boolean).forEach(function (trigger) {\n trigger.addEventListener('click', function (event) {\n return _this.showModal(event);\n });\n });\n }\n }, {\n key: \"showModal\",\n value: function showModal() {\n var _this2 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n this.activeElement = document.activeElement;\n this.modal.setAttribute('aria-hidden', 'false');\n this.modal.classList.add(this.config.openClass);\n this.scrollBehaviour('disable');\n this.addEventListeners();\n\n if (this.config.awaitOpenAnimation) {\n var handler = function handler() {\n _this2.modal.removeEventListener('animationend', handler, false);\n\n _this2.setFocusToFirstNode();\n };\n\n this.modal.addEventListener('animationend', handler, false);\n } else {\n this.setFocusToFirstNode();\n }\n\n this.config.onShow(this.modal, this.activeElement, event);\n }\n }, {\n key: \"closeModal\",\n value: function closeModal() {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var modal = this.modal;\n this.modal.setAttribute('aria-hidden', 'true');\n this.removeEventListeners();\n this.scrollBehaviour('enable');\n\n if (this.activeElement && this.activeElement.focus) {\n this.activeElement.focus();\n }\n\n this.config.onClose(this.modal, this.activeElement, event);\n\n if (this.config.awaitCloseAnimation) {\n var openClass = this.config.openClass; // <- old school ftw\n\n this.modal.addEventListener('animationend', function handler() {\n modal.classList.remove(openClass);\n modal.removeEventListener('animationend', handler, false);\n }, false);\n } else {\n modal.classList.remove(this.config.openClass);\n }\n }\n }, {\n key: \"closeModalById\",\n value: function closeModalById(targetModal) {\n this.modal = document.getElementById(targetModal);\n if (this.modal) this.closeModal();\n }\n }, {\n key: \"scrollBehaviour\",\n value: function scrollBehaviour(toggle) {\n if (!this.config.disableScroll) return;\n var body = document.querySelector('body');\n\n switch (toggle) {\n case 'enable':\n Object.assign(body.style, {\n overflow: ''\n });\n break;\n\n case 'disable':\n Object.assign(body.style, {\n overflow: 'hidden'\n });\n break;\n }\n }\n }, {\n key: \"addEventListeners\",\n value: function addEventListeners() {\n this.modal.addEventListener('touchstart', this.onClick);\n this.modal.addEventListener('click', this.onClick);\n document.addEventListener('keydown', this.onKeydown);\n }\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n this.modal.removeEventListener('touchstart', this.onClick);\n this.modal.removeEventListener('click', this.onClick);\n document.removeEventListener('keydown', this.onKeydown);\n }\n }, {\n key: \"onClick\",\n value: function onClick(event) {\n if (event.target.hasAttribute(this.config.closeTrigger)) {\n this.closeModal(event);\n }\n }\n }, {\n key: \"onKeydown\",\n value: function onKeydown(event) {\n if (event.keyCode === 27) this.closeModal(event); // esc\n\n if (event.keyCode === 9) this.retainFocus(event); // tab\n }\n }, {\n key: \"getFocusableNodes\",\n value: function getFocusableNodes() {\n var nodes = this.modal.querySelectorAll(FOCUSABLE_ELEMENTS);\n return Array.apply(void 0, _toConsumableArray(nodes));\n }\n /**\n * Tries to set focus on a node which is not a close trigger\n * if no other nodes exist then focuses on first close trigger\n */\n\n }, {\n key: \"setFocusToFirstNode\",\n value: function setFocusToFirstNode() {\n var _this3 = this;\n\n if (this.config.disableFocus) return;\n var focusableNodes = this.getFocusableNodes(); // no focusable nodes\n\n if (focusableNodes.length === 0) return; // remove nodes on whose click, the modal closes\n // could not think of a better name :(\n\n var nodesWhichAreNotCloseTargets = focusableNodes.filter(function (node) {\n return !node.hasAttribute(_this3.config.closeTrigger);\n });\n if (nodesWhichAreNotCloseTargets.length > 0) nodesWhichAreNotCloseTargets[0].focus();\n if (nodesWhichAreNotCloseTargets.length === 0) focusableNodes[0].focus();\n }\n }, {\n key: \"retainFocus\",\n value: function retainFocus(event) {\n var focusableNodes = this.getFocusableNodes(); // no focusable nodes\n\n if (focusableNodes.length === 0) return;\n /**\n * Filters nodes which are hidden to prevent\n * focus leak outside modal\n */\n\n focusableNodes = focusableNodes.filter(function (node) {\n return node.offsetParent !== null;\n }); // if disableFocus is true\n\n if (!this.modal.contains(document.activeElement)) {\n focusableNodes[0].focus();\n } else {\n var focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n }\n }\n }]);\n\n return Modal;\n }();\n /**\n * Modal prototype ends.\n * Here on code is responsible for detecting and\n * auto binding event handlers on modal triggers\n */\n // Keep a reference to the opened modal\n\n\n var activeModal = null;\n /**\n * Generates an associative array of modals and it's\n * respective triggers\n * @param {array} triggers An array of all triggers\n * @param {string} triggerAttr The data-attribute which triggers the module\n * @return {array}\n */\n\n var generateTriggerMap = function generateTriggerMap(triggers, triggerAttr) {\n var triggerMap = [];\n triggers.forEach(function (trigger) {\n var targetModal = trigger.attributes[triggerAttr].value;\n if (triggerMap[targetModal] === undefined) triggerMap[targetModal] = [];\n triggerMap[targetModal].push(trigger);\n });\n return triggerMap;\n };\n /**\n * Validates whether a modal of the given id exists\n * in the DOM\n * @param {number} id The id of the modal\n * @return {boolean}\n */\n\n\n var validateModalPresence = function validateModalPresence(id) {\n if (!document.getElementById(id)) {\n console.warn(\"MicroModal: \\u2757Seems like you have missed %c'\".concat(id, \"'\"), 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'ID somewhere in your code. Refer example below to resolve it.');\n console.warn(\"%cExample:\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', \"
\"));\n return false;\n }\n };\n /**\n * Validates if there are modal triggers present\n * in the DOM\n * @param {array} triggers An array of data-triggers\n * @return {boolean}\n */\n\n\n var validateTriggerPresence = function validateTriggerPresence(triggers) {\n if (triggers.length <= 0) {\n console.warn(\"MicroModal: \\u2757Please specify at least one %c'micromodal-trigger'\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', 'data attribute.');\n console.warn(\"%cExample:\", 'background-color: #f8f9fa;color: #50596c;font-weight: bold;', \"\");\n return false;\n }\n };\n /**\n * Checks if triggers and their corresponding modals\n * are present in the DOM\n * @param {array} triggers Array of DOM nodes which have data-triggers\n * @param {array} triggerMap Associative array of modals and their triggers\n * @return {boolean}\n */\n\n\n var validateArgs = function validateArgs(triggers, triggerMap) {\n validateTriggerPresence(triggers);\n if (!triggerMap) return true;\n\n for (var id in triggerMap) {\n validateModalPresence(id);\n }\n\n return true;\n };\n /**\n * Binds click handlers to all modal triggers\n * @param {object} config [description]\n * @return void\n */\n\n\n var init = function init(config) {\n // Create an config object with default openTrigger\n var options = Object.assign({}, {\n openTrigger: 'data-micromodal-trigger'\n }, config); // Collects all the nodes with the trigger\n\n var triggers = _toConsumableArray(document.querySelectorAll(\"[\".concat(options.openTrigger, \"]\"))); // Makes a mappings of modals with their trigger nodes\n\n\n var triggerMap = generateTriggerMap(triggers, options.openTrigger); // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateArgs(triggers, triggerMap) === false) return; // For every target modal creates a new instance\n\n for (var key in triggerMap) {\n var value = triggerMap[key];\n options.targetModal = key;\n options.triggers = _toConsumableArray(value);\n activeModal = new Modal(options); // eslint-disable-line no-new\n }\n };\n /**\n * Shows a particular modal\n * @param {string} targetModal [The id of the modal to display]\n * @param {object} config [The configuration object to pass]\n * @return {void}\n */\n\n\n var show = function show(targetModal, config) {\n var options = config || {};\n options.targetModal = targetModal; // Checks if modals and triggers exist in dom\n\n if (options.debugMode === true && validateModalPresence(targetModal) === false) return; // clear events in case previous modal wasn't close\n\n if (activeModal) activeModal.removeEventListeners(); // stores reference to active modal\n\n activeModal = new Modal(options); // eslint-disable-line no-new\n\n activeModal.showModal();\n };\n /**\n * Closes the active modal\n * @param {string} targetModal [The id of the modal to close]\n * @return {void}\n */\n\n\n var close = function close(targetModal) {\n targetModal ? activeModal.closeModalById(targetModal) : activeModal.closeModal();\n };\n\n return {\n init: init,\n show: show,\n close: close\n };\n}();\nwindow.MicroModal = MicroModal;\n\nexport default MicroModal;\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar rendering = false\n\tvar pending = false\n\n\tfunction sync() {\n\t\tif (rendering) throw new Error(\"Nested m.redraw.sync() call\")\n\t\trendering = true\n\t\tfor (var i = 0; i < subscriptions.length; i += 2) {\n\t\t\ttry { render(subscriptions[i], Vnode(subscriptions[i + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\trendering = false\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\trender(root, [], redraw)\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\nvar Promise = require(\"../promise/promise\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar assign = require(\"../pathname/assign\")\n\nvar sentinel = {}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar fireAsync\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (fireAsync != null) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\t// 0 = start\n\t\t// 1 = init\n\t\t// 2 = ready\n\t\tvar state = 0\n\n\t\tvar compiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a `/`\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either `/`, `.`, or `-`\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\t\tvar p = Promise.resolve()\n\t\tvar scheduled = false\n\t\tvar onremove\n\n\t\tfireAsync = null\n\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes\")\n\t\t\t}\n\t\t}\n\n\t\tfunction resolveRoute() {\n\t\t\tscheduled = false\n\t\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t\t// but that's not our problem.\n\t\t\tvar prefix = $window.location.hash\n\t\t\tif (route.prefix[0] !== \"#\") {\n\t\t\t\tprefix = $window.location.search + prefix\n\t\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t\t}\n\t\t\t}\n\t\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t\t// since the representation is consistently a relatively poorly\n\t\t\t// optimized cons string.\n\t\t\tvar path = prefix.concat()\n\t\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\t\t\t.slice(route.prefix.length)\n\t\t\tvar data = parsePathname(path)\n\n\t\t\tassign(data.params, $window.history.state)\n\n\t\t\tfunction fail() {\n\t\t\t\tif (path === defaultRoute) throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t\t\tsetPath(defaultRoute, null, {replace: true})\n\t\t\t}\n\n\t\t\tloop(0)\n\t\t\tfunction loop(i) {\n\t\t\t\t// 0 = init\n\t\t\t\t// 1 = scheduled\n\t\t\t\t// 2 = done\n\t\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\t\tvar localComp = payload\n\t\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t\t}).then(update, fail)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse update(\"div\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfail()\n\t\t\t}\n\t\t}\n\n\t\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t\t// cleared if `hashchange` is used, since that makes it automatically\n\t\t// async.\n\t\tfireAsync = function() {\n\t\t\tif (!scheduled) {\n\t\t\t\tscheduled = true\n\t\t\t\tcallAsync(resolveRoute)\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\tfireAsync = null\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\treturn mountRedraw.mount(root, {\n\t\t\tonbeforeupdate: function() {\n\t\t\t\tstate = state ? 2 : 1\n\t\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t\t},\n\t\t\toncreate: resolveRoute,\n\t\t\tonremove: onremove,\n\t\t\tview: function() {\n\t\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\t\treturn vnode\n\t\t\t},\n\t\t})\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\tvar options = vnode.attrs.options\n\t\t\t// Remove these so they don't get overwritten\n\t\t\tvar attrs = {}, onclick, href\n\t\t\tassign(attrs, vnode.attrs)\n\t\t\t// The first two are internal, but the rest are magic attributes\n\t\t\t// that need censored to not screw up rendering.\n\t\t\tattrs.selector = attrs.options = attrs.key = attrs.oninit =\n\t\t\tattrs.oncreate = attrs.onbeforeupdate = attrs.onupdate =\n\t\t\tattrs.onbeforeremove = attrs.onremove = null\n\n\t\t\t// Do this now so we can get the most current `href` and `disabled`.\n\t\t\t// Those attributes may also be specified in the selector, and we\n\t\t\t// should honor that.\n\t\t\tvar child = m(vnode.attrs.selector || \"a\", attrs, vnode.children)\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want to do this on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t\tchild.attrs.onclick = null\n\t\t\t} else {\n\t\t\t\tonclick = child.attrs.onclick\n\t\t\t\thref = child.attrs.href\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, requestAnimationFrame, console)\n","\"use strict\"\n\nmodule.exports = Object.assign || function(target, source) {\n\tif(source) Object.keys(source).forEach(function(key) { target[key] = source[key] })\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\nvar assign = require(\"./assign\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names *must* be separated\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tassign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(window)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar children = Vnode.normalizeChildren(vnode.children)\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = null\n\tvnode.children = undefined\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\tvnode.text = children[0].children\n\t} else {\n\t\tvnode.children = children\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function($window) {\n\tvar $doc = $window && $window.document\n\tvar currentRedraw\n\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"`vnode.state` must not be modified\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"ij\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"\" + vnode.children + \"\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvnode.instance = []\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tvnode.instance.push(child)\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertNode(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveNodes(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveNodes(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveNodes(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveHTML(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequece\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This covers a really specific edge case:\n\t// - Parent node is keyed and contains child\n\t// - Child is removed, returns unresolved promise in `onbeforeremove`\n\t// - Parent node is moved in keyed diff\n\t// - Remaining children still need moved appropriately\n\t//\n\t// Ideally, I'd track removed nodes as well, but that introduces a lot more\n\t// complexity and I'm not exactly interested in doing that.\n\tfunction moveNodes(parent, vnode, nextSibling) {\n\t\tvar frag = $doc.createDocumentFragment()\n\t\tmoveChildToFrag(parent, frag, vnode)\n\t\tinsertNode(parent, frag, nextSibling)\n\t}\n\tfunction moveChildToFrag(parent, frag, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\t\t\tfrag.appendChild(vnode.instance[i])\n\t\t\t\t}\n\t\t\t} else if (vnode.tag !== \"[\") {\n\t\t\t\t// Don't recurse for text nodes *or* elements, just fragments\n\t\t\t\tfrag.appendChild(vnode.dom)\n\t\t\t} else if (vnode.children.length === 1) {\n\t\t\t\tvnode = vnode.children[0]\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\tif (child != null) moveChildToFrag(parent, frag, child)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t} else {\n\t\t\tif (stateResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) { mask &= 2; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tstateResult.then(next, next)\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) { mask &= 1; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tattrsResult.then(next, next)\n\t\t\t}\n\t\t}\n\n\t\tfunction reallyRemove() {\n\t\t\tcheckState(vnode, original)\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t}\n\t}\n\tfunction removeHTML(parent, vnode) {\n\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\tparent.removeChild(vnode.instance[i])\n\t\t}\n\t}\n\tfunction removeChild(parent, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tremoveHTML(parent, vnode)\n\t\t\t} else {\n\t\t\t\tif (vnode.tag !== \"[\") {\n\t\t\t\t\tparent.removeChild(vnode.dom)\n\t\t\t\t\tif (!Array.isArray(vnode.children)) break\n\t\t\t\t}\n\t\t\t\tif (vnode.children.length === 1) {\n\t\t\t\t\tvnode = vnode.children[0]\n\t\t\t\t\tif (vnode != null) continue\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\t\tif (child != null) removeChild(parent, child)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && vnode.dom === activeElement()) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\" && !isLifecycleMethod(key)) updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement() || vnode.tag === \"option\" && vnode.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\n\t\t// First time rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\n\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\tvar prevRedraw = currentRedraw\n\t\ttry {\n\t\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t}\n\t\tdom.vnodes = vnodes\n\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\"Vnodes must either always have keys or never have keys!\")\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(window, PromisePolyfill, mountRedraw.redraw)\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\n\nmodule.exports = function($window, Promise, oncompletion) {\n\tvar callbackCount = 0\n\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(buildPathname(url, args.params), args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, /^content-type$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, /^accept$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") response = JSON.parse(ev.target.responseText)\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t}\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(window, mountRedraw)\n","\"use strict\"\n\nmodule.exports = require(\"./stream/stream\")\n","/* eslint-disable */\n;(function() {\n\"use strict\"\n/* eslint-enable */\nStream.SKIP = {}\nStream.lift = lift\nStream.scan = scan\nStream.merge = merge\nStream.combine = combine\nStream.scanMerge = scanMerge\nStream[\"fantasy-land/of\"] = Stream\n\nvar warnedHalt = false\nObject.defineProperty(Stream, \"HALT\", {\n\tget: function() {\n\t\twarnedHalt || console.log(\"HALT is deprecated and has been renamed to SKIP\");\n\t\twarnedHalt = true\n\t\treturn Stream.SKIP\n\t}\n})\n\nfunction Stream(value) {\n\tvar dependentStreams = []\n\tvar dependentFns = []\n\n\tfunction stream(v) {\n\t\tif (arguments.length && v !== Stream.SKIP) {\n\t\t\tvalue = v\n\t\t\tif (open(stream)) {\n\t\t\t\tstream._changing()\n\t\t\t\tstream._state = \"active\"\n\t\t\t\tdependentStreams.forEach(function(s, i) { s(dependentFns[i](value)) })\n\t\t\t}\n\t\t}\n\n\t\treturn value\n\t}\n\n\tstream.constructor = Stream\n\tstream._state = arguments.length && value !== Stream.SKIP ? \"active\" : \"pending\"\n\tstream._parents = []\n\n\tstream._changing = function() {\n\t\tif (open(stream)) stream._state = \"changing\"\n\t\tdependentStreams.forEach(function(s) {\n\t\t\ts._changing()\n\t\t})\n\t}\n\n\tstream._map = function(fn, ignoreInitial) {\n\t\tvar target = ignoreInitial ? Stream() : Stream(fn(value))\n\t\ttarget._parents.push(stream)\n\t\tdependentStreams.push(target)\n\t\tdependentFns.push(fn)\n\t\treturn target\n\t}\n\n\tstream.map = function(fn) {\n\t\treturn stream._map(fn, stream._state !== \"active\")\n\t}\n\n\tvar end\n\tfunction createEnd() {\n\t\tend = Stream()\n\t\tend.map(function(value) {\n\t\t\tif (value === true) {\n\t\t\t\tstream._parents.forEach(function (p) {p._unregisterChild(stream)})\n\t\t\t\tstream._state = \"ended\"\n\t\t\t\tstream._parents.length = dependentStreams.length = dependentFns.length = 0\n\t\t\t}\n\t\t\treturn value\n\t\t})\n\t\treturn end\n\t}\n\n\tstream.toJSON = function() { return value != null && typeof value.toJSON === \"function\" ? value.toJSON() : value }\n\n\tstream[\"fantasy-land/map\"] = stream.map\n\tstream[\"fantasy-land/ap\"] = function(x) { return combine(function(s1, s2) { return s1()(s2()) }, [x, stream]) }\n\n\tstream._unregisterChild = function(child) {\n\t\tvar childIndex = dependentStreams.indexOf(child)\n\t\tif (childIndex !== -1) {\n\t\t\tdependentStreams.splice(childIndex, 1)\n\t\t\tdependentFns.splice(childIndex, 1)\n\t\t}\n\t}\n\n\tObject.defineProperty(stream, \"end\", {\n\t\tget: function() { return end || createEnd() }\n\t})\n\n\treturn stream\n}\n\nfunction combine(fn, streams) {\n\tvar ready = streams.every(function(s) {\n\t\tif (s.constructor !== Stream)\n\t\t\tthrow new Error(\"Ensure that each item passed to stream.combine/stream.merge/lift is a stream\")\n\t\treturn s._state === \"active\"\n\t})\n\tvar stream = ready\n\t\t? Stream(fn.apply(null, streams.concat([streams])))\n\t\t: Stream()\n\n\tvar changed = []\n\n\tvar mappers = streams.map(function(s) {\n\t\treturn s._map(function(value) {\n\t\t\tchanged.push(s)\n\t\t\tif (ready || streams.every(function(s) { return s._state !== \"pending\" })) {\n\t\t\t\tready = true\n\t\t\t\tstream(fn.apply(null, streams.concat([changed])))\n\t\t\t\tchanged = []\n\t\t\t}\n\t\t\treturn value\n\t\t}, true)\n\t})\n\n\tvar endStream = stream.end.map(function(value) {\n\t\tif (value === true) {\n\t\t\tmappers.forEach(function(mapper) { mapper.end(true) })\n\t\t\tendStream.end(true)\n\t\t}\n\t\treturn undefined\n\t})\n\n\treturn stream\n}\n\nfunction merge(streams) {\n\treturn combine(function() { return streams.map(function(s) { return s() }) }, streams)\n}\n\nfunction scan(fn, acc, origin) {\n\tvar stream = origin.map(function(v) {\n\t\tvar next = fn(acc, v)\n\t\tif (next !== Stream.SKIP) acc = next\n\t\treturn next\n\t})\n\tstream(acc)\n\treturn stream\n}\n\nfunction scanMerge(tuples, seed) {\n\tvar streams = tuples.map(function(tuple) { return tuple[0] })\n\n\tvar stream = combine(function() {\n\t\tvar changed = arguments[arguments.length - 1]\n\t\tstreams.forEach(function(stream, i) {\n\t\t\tif (changed.indexOf(stream) > -1)\n\t\t\t\tseed = tuples[i][1](seed, stream())\n\t\t})\n\n\t\treturn seed\n\t}, streams)\n\n\tstream(seed)\n\n\treturn stream\n}\n\nfunction lift() {\n\tvar fn = arguments[0]\n\tvar streams = Array.prototype.slice.call(arguments, 1)\n\treturn merge(streams).map(function(streams) {\n\t\treturn fn.apply(undefined, streams)\n\t})\n}\n\nfunction open(s) {\n\treturn s._state === \"pending\" || s._state === \"active\" || s._state === \"changing\"\n}\n\nif (typeof module !== \"undefined\") module[\"exports\"] = Stream\nelse if (typeof window.m === \"function\" && !(\"stream\" in window.m)) window.m.stream = Stream\nelse window.m = {stream : Stream}\n\n}());\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","import Popper from 'popper.js';\nimport isFunction from '../../popper/src/utils/isFunction';\n\nconst DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template:\n '
',\n trigger: 'hover focus',\n offset: 0,\n arrowSelector: '.tooltip-arrow, .tooltip__arrow',\n innerSelector: '.tooltip-inner, .tooltip__inner',\n};\n\nexport default class Tooltip {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement='top'\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {String} [options.arrowSelector='.tooltip-arrow, .tooltip__arrow'] - className used to locate the DOM arrow element in the tooltip.\n * @param {String} [options.innerSelector='.tooltip-inner, .tooltip__inner'] - className used to locate the DOM inner element in the tooltip.\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `textContent`.\n * @param {String} [options.template='
']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {Boolean} options.closeOnClickOutside=false - Close a popper on click outside of the popper and reference element. This has effect only when options.trigger is 'click'.\n * @param {String|HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @return {Object} instance - The generated tooltip instance\n */\n constructor(reference, options) {\n // apply user options over default ones\n options = { ...DEFAULT_OPTIONS, ...options };\n\n reference.jquery && (reference = reference[0]);\n\n // cache reference and options\n this.reference = reference;\n this.options = options;\n\n // get events list\n const events =\n typeof options.trigger === 'string'\n ? options.trigger\n .split(' ')\n .filter(\n trigger => ['click', 'hover', 'focus'].indexOf(trigger) !== -1\n )\n : [];\n\n // set initial state\n this._isOpen = false;\n this._popperOptions = {};\n\n // set event listeners\n this._setEventListeners(reference, events, options);\n }\n\n //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n show = () => this._show(this.reference, this.options);\n\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n hide = () => this._hide();\n\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n dispose = () => this._dispose();\n\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n toggle = () => {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n };\n\n /**\n * Updates the tooltip's title content\n * @method Tooltip#updateTitleContent\n * @memberof Tooltip\n * @param {String|HTMLElement} title - The new content to use for the title\n */\n updateTitleContent = (title) => this._updateTitleContent(title);\n\n //\n // Private methods\n //\n\n _events = [];\n\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLElement} tooltipNode\n */\n _create(reference, template, title, allowHtml) {\n // create tooltip element\n const tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n const tooltipNode = tooltipGenerator.childNodes[0];\n\n // add unique ID to our tooltip (needed for accessibility reasons)\n tooltipNode.id = `tooltip_${Math.random()\n .toString(36)\n .substr(2, 10)}`;\n\n // set initial `aria-hidden` state to `false` (it's visible!)\n tooltipNode.setAttribute('aria-hidden', 'false');\n\n // add title to tooltip\n const titleNode = tooltipGenerator.querySelector(this.options.innerSelector);\n this._addTitleContent(reference, title, allowHtml, titleNode);\n\n // return the generated tooltip node\n return tooltipNode;\n }\n\n _addTitleContent(reference, title, allowHtml, titleNode) {\n if (title.nodeType === 1 || title.nodeType === 11) {\n // if title is a element node or document fragment, append it only if allowHtml is true\n allowHtml && titleNode.appendChild(title);\n } else if (isFunction(title)) {\n // Recursively call ourself so that the return value of the function gets handled appropriately - either\n // as a dom node, a string, or even as another function.\n this._addTitleContent(reference, title.call(reference), allowHtml, titleNode);\n } else {\n // if it's just a simple text, set textContent or innerHtml depending by `allowHtml` value\n allowHtml ? (titleNode.innerHTML = title) : (titleNode.textContent = title);\n }\n }\n\n _show(reference, options) {\n // don't show if it's already visible\n // or if it's not being showed\n if (this._isOpen && !this._isOpening) {\n return this;\n }\n this._isOpen = true;\n\n // if the tooltipNode already exists, just show it\n if (this._tooltipNode) {\n this._tooltipNode.style.visibility = 'visible';\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n this.popperInstance.update();\n return this;\n }\n\n // get title\n const title = reference.getAttribute('title') || options.title;\n\n // don't show tooltip if no title is defined\n if (!title) {\n return this;\n }\n\n // create tooltip node\n const tooltipNode = this._create(\n reference,\n options.template,\n title,\n options.html\n );\n\n // Add `aria-describedby` to our reference element for accessibility reasons\n reference.setAttribute('aria-describedby', tooltipNode.id);\n\n // append tooltip to container\n const container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n this._popperOptions = {\n ...options.popperOptions,\n placement: options.placement,\n };\n\n this._popperOptions.modifiers = {\n ...this._popperOptions.modifiers,\n arrow: {\n ...(this._popperOptions.modifiers && this._popperOptions.modifiers.arrow),\n element: options.arrowSelector,\n },\n offset: {\n ...(this._popperOptions.modifiers && this._popperOptions.modifiers.offset),\n offset: options.offset ||\n this._popperOptions.modifiers && this._popperOptions.modifiers.offset && this._popperOptions.modifiers.offset.offset ||\n options.offset,\n },\n };\n\n if (options.boundariesElement) {\n this._popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement,\n };\n }\n\n this.popperInstance = new Popper(\n reference,\n tooltipNode,\n this._popperOptions\n );\n\n this._tooltipNode = tooltipNode;\n\n return this;\n }\n\n _hide(/*reference, options*/) {\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n // hide tooltipNode\n this._tooltipNode.style.visibility = 'hidden';\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n return this;\n }\n\n _dispose() {\n // remove event listeners first to prevent any unexpected behaviour\n this._events.forEach(({ func, event }) => {\n this.reference.removeEventListener(event, func);\n });\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n // destroy instance\n this.popperInstance.destroy();\n\n // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n if (!this.popperInstance.options.removeOnDestroy) {\n this._tooltipNode.parentNode.removeChild(this._tooltipNode);\n this._tooltipNode = null;\n }\n }\n return this;\n }\n\n _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n return container;\n }\n\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltipNode\n * @param {HTMLElement|String|false} container\n */\n _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n\n _setEventListeners(reference, events, options) {\n const directEvents = [];\n const oppositeEvents = [];\n\n events.forEach(event => {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n });\n\n // schedule show tooltip\n directEvents.forEach(event => {\n const func = evt => {\n if (this._isOpening === true) {\n return;\n }\n evt.usedByTooltip = true;\n this._scheduleShow(reference, options.delay, options, evt);\n };\n this._events.push({ event, func });\n reference.addEventListener(event, func);\n });\n\n // schedule hide tooltip\n oppositeEvents.forEach(event => {\n const func = evt => {\n if (evt.usedByTooltip === true) {\n return;\n }\n this._scheduleHide(reference, options.delay, options, evt);\n };\n this._events.push({ event, func });\n reference.addEventListener(event, func);\n if (event === 'click' && options.closeOnClickOutside) {\n document.addEventListener('mousedown', e => {\n if (!this._isOpening) {\n return;\n }\n const popper = this.popperInstance.popper;\n if (reference.contains(e.target) ||\n popper.contains(e.target)) {\n return;\n }\n func(e);\n }, true);\n }\n });\n }\n\n _scheduleShow(reference, delay, options /*, evt */) {\n this._isOpening = true;\n // defaults to 0\n const computedDelay = (delay && delay.show) || delay || 0;\n this._showTimeout = window.setTimeout(\n () => this._show(reference, options),\n computedDelay\n );\n }\n\n _scheduleHide(reference, delay, options, evt) {\n this._isOpening = false;\n // defaults to 0\n const computedDelay = (delay && delay.hide) || delay || 0;\n window.clearTimeout(this._showTimeout);\n window.setTimeout(() => {\n if (this._isOpen === false) {\n return;\n }\n if (!document.body.contains(this._tooltipNode)) {\n return;\n }\n\n // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n if (evt.type === 'mouseleave') {\n const isSet = this._setTooltipNodeEvent(evt, reference, delay, options);\n\n // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n if (isSet) {\n return;\n }\n }\n\n this._hide(reference, options);\n }, computedDelay);\n }\n\n _setTooltipNodeEvent = (evt, reference, delay, options) => {\n const relatedreference =\n evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n const callback = evt2 => {\n const relatedreference2 =\n evt2.relatedreference || evt2.toElement || evt2.relatedTarget;\n\n // Remove event listener after call\n this._tooltipNode.removeEventListener(evt.type, callback);\n\n // If the new reference is not the reference element\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n this._tooltipNode.addEventListener(evt.type, callback);\n return true;\n }\n\n return false;\n };\n\n _updateTitleContent(title) {\n if(typeof this._tooltipNode === 'undefined') {\n if(typeof this.options.title !== 'undefined') {\n this.options.title = title;\n }\n return;\n }\n const titleNode = this._tooltipNode.querySelector(this.options.innerSelector);\n this._clearTitleContent(titleNode, this.options.html, this.reference.getAttribute('title') || this.options.title)\n this._addTitleContent(this.reference, title, this.options.html, titleNode);\n this.options.title = title;\n this.popperInstance.update();\n }\n\n _clearTitleContent(titleNode, allowHtml, lastTitle) {\n if(lastTitle.nodeType === 1 || lastTitle.nodeType === 11) {\n allowHtml && titleNode.removeChild(lastTitle);\n } else {\n allowHtml ? titleNode.innerHTML = '' : titleNode.textContent = '';\n }\n }\n\n}\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a