From b758e0496e7982dc89361902e6a0ccc9a72b4795 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Wed, 7 Feb 2024 16:34:36 +0100 Subject: [PATCH 1/2] fix: Correctly import types in Typescript files Signed-off-by: Ferdinand Thiessen --- apps/files/src/components/FileEntry/FileEntryActions.vue | 8 +++++--- apps/files/src/components/FileEntry/FileEntryPreview.vue | 5 +++-- apps/files/src/router/router.ts | 2 +- apps/files/src/store/selection.ts | 2 +- apps/settings/src/components/Users/UserRowActions.vue | 3 ++- apps/theming/src/components/AppOrderSelector.vue | 4 +++- apps/theming/src/components/UserAppMenuSection.vue | 4 +++- 7 files changed, 18 insertions(+), 10 deletions(-) diff --git a/apps/files/src/components/FileEntry/FileEntryActions.vue b/apps/files/src/components/FileEntry/FileEntryActions.vue index 5dae3509f3b3e..393b8fd10ce12 100644 --- a/apps/files/src/components/FileEntry/FileEntryActions.vue +++ b/apps/files/src/components/FileEntry/FileEntryActions.vue @@ -93,18 +93,20 @@ ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=bcf30078\"\nimport script from \"./Cog.vue?vue&type=script&lang=js\"\nexport * from \"./Cog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function (...args) {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n },\n actions: {\n /**\n * Update the view config local store\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n */\n async update(view, key, value) {\n axios.put(generateUrl(`/apps/files/api/v1/views/${view}/${key}`), {\n value,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n },\n },\n });\n const viewConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ChartPie.vue?vue&type=template&id=44de6464\"\nimport script from \"./ChartPie.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPie.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=18ceb3ce&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=18ceb3ce&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=18ceb3ce&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=18ceb3ce&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18ceb3ce\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"name\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"name\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.sort_favorites_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_favorites_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort favorites first'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.sort_folders_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_folders_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort folders before files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.enableGridView)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.grid_view},on:{\"update:checked\":function($event){return _vm.setConfig('grid_view', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Enable the grid view'))+\"\\n\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"name\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"name\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"label\":_vm.t('files', 'WebDAV URL'),\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Clipboard.vue?vue&type=template&id=0e008e34\"\nimport script from \"./Clipboard.vue?vue&type=script&lang=js\"\nexport * from \"./Clipboard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon clipboard-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=61d69eae\"\nimport script from \"./Setting.vue?vue&type=script&lang=js\"\nexport * from \"./Setting.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n grid_view: false,\n});\nexport const useUserConfigStore = function (...args) {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n },\n },\n });\n const userConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=6d63c120&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=6d63c120&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=6d63c120&scoped=true\"\nimport script from \"./Settings.vue?vue&type=script&lang=js\"\nexport * from \"./Settings.vue?vue&type=script&lang=js\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=6d63c120&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d63c120\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_vm.t('files', 'Files')},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"exact\":_vm.useExactRouteMatching(view),\"icon\":view.iconClass,\"name\":view.name,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact-path\":true,\"icon\":child.iconClass,\"name\":child.name,\"to\":_vm.generateToNavigation(child)}},[(child.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":child.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"name\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=3f2914e1&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=3f2914e1&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=3f2914e1&scoped=true\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=3f2914e1&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f2914e1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.canShare && _vm.filesListWidth >= 512)?_c('NcButton',{staticClass:\"files-list__header-share-button\",class:{ 'files-list__header-share-button--shared': _vm.shareButtonType },attrs:{\"aria-label\":_vm.shareButtonLabel,\"title\":_vm.shareButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.shareButtonType === _vm.Type.SHARE_TYPE_LINK)?_c('LinkIcon'):_c('AccountPlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2969853559)}):_vm._e(),_vm._v(\" \"),(!_vm.canUpload || _vm.isQuotaExceeded)?_c('NcButton',{staticClass:\"files-list__header-upload-button--disabled\",attrs:{\"aria-label\":_vm.cantUploadLabel,\"title\":_vm.cantUploadLabel,\"disabled\":true,\"type\":\"secondary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2953566425)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Add'))+\"\\n\\t\\t\\t\\t\")]):(_vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"content\":_vm.dirContents,\"destination\":_vm.currentFolder,\"multiple\":true},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.filesListWidth >= 512 && _vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e(),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":_vm.t('files', 'Go to the previous folder'),\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView.icon}})]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * natural-orderby v3.0.2\n *\n * Copyright (c) Olaf Ennen\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar compareNumbers = function compareNumbers(numberA, numberB) {\n if (numberA < numberB) {\n return -1;\n }\n if (numberA > numberB) {\n return 1;\n }\n return 0;\n};\n\nvar compareUnicode = function compareUnicode(stringA, stringB) {\n var result = stringA.localeCompare(stringB);\n return result ? result / Math.abs(result) : 0;\n};\n\nvar RE_NUMBERS = /(^0x[\\da-fA-F]+$|^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?!\\.\\d+)(?=\\D|\\s|$))|\\d+)/g;\nvar RE_LEADING_OR_TRAILING_WHITESPACES = /^\\s+|\\s+$/g; // trim pre-post whitespace\nvar RE_WHITESPACES = /\\s+/g; // normalize all whitespace to single ' ' character\nvar RE_INT_OR_FLOAT = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/; // identify integers and floats\nvar RE_DATE = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[/-]\\d{1,4}[/-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/; // identify date strings\nvar RE_LEADING_ZERO = /^0+[1-9]{1}[0-9]*$/;\n// eslint-disable-next-line no-control-regex\nvar RE_UNICODE_CHARACTERS = /[^\\x00-\\x80]/;\n\nvar stringCompare = function stringCompare(stringA, stringB) {\n if (stringA < stringB) {\n return -1;\n }\n if (stringA > stringB) {\n return 1;\n }\n return 0;\n};\n\nvar compareChunks = function compareChunks(chunksA, chunksB) {\n var lengthA = chunksA.length;\n var lengthB = chunksB.length;\n var size = Math.min(lengthA, lengthB);\n for (var i = 0; i < size; i++) {\n var chunkA = chunksA[i];\n var chunkB = chunksB[i];\n if (chunkA.normalizedString !== chunkB.normalizedString) {\n if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) {\n // empty strings have lowest value\n return chunkA.normalizedString === '' ? -1 : 1;\n }\n if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) {\n // compare numbers\n var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber);\n if (result === 0) {\n // compare string value, if parsed numbers are equal\n // Example:\n // chunkA = { parsedNumber: 1, normalizedString: \"001\" }\n // chunkB = { parsedNumber: 1, normalizedString: \"01\" }\n // chunkA.parsedNumber === chunkB.parsedNumber\n // chunkA.normalizedString < chunkB.normalizedString\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n return result;\n } else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) {\n // number < string\n return chunkA.parsedNumber !== undefined ? -1 : 1;\n } else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString)) {\n // use locale comparison only if one of the chunks contains unicode characters\n return compareUnicode(chunkA.normalizedString, chunkB.normalizedString);\n } else {\n // use common string comparison for performance reason\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n }\n }\n // if the chunks are equal so far, the one which has more chunks is greater than the other one\n if (lengthA > size || lengthB > size) {\n return lengthA <= size ? -1 : 1;\n }\n return 0;\n};\n\nvar compareOtherTypes = function compareOtherTypes(valueA, valueB) {\n if (!valueA.chunks ? valueB.chunks : !valueB.chunks) {\n return !valueA.chunks ? 1 : -1;\n }\n if (valueA.isNaN ? !valueB.isNaN : valueB.isNaN) {\n return valueA.isNaN ? -1 : 1;\n }\n if (valueA.isSymbol ? !valueB.isSymbol : valueB.isSymbol) {\n return valueA.isSymbol ? -1 : 1;\n }\n if (valueA.isObject ? !valueB.isObject : valueB.isObject) {\n return valueA.isObject ? -1 : 1;\n }\n if (valueA.isArray ? !valueB.isArray : valueB.isArray) {\n return valueA.isArray ? -1 : 1;\n }\n if (valueA.isFunction ? !valueB.isFunction : valueB.isFunction) {\n return valueA.isFunction ? -1 : 1;\n }\n if (valueA.isNull ? !valueB.isNull : valueB.isNull) {\n return valueA.isNull ? -1 : 1;\n }\n return 0;\n};\n\nvar compareValues = function compareValues(valueA, valueB) {\n if (valueA.value === valueB.value) {\n return 0;\n }\n if (valueA.parsedNumber !== undefined && valueB.parsedNumber !== undefined) {\n return compareNumbers(valueA.parsedNumber, valueB.parsedNumber);\n }\n if (valueA.chunks && valueB.chunks) {\n return compareChunks(valueA.chunks, valueB.chunks);\n }\n return compareOtherTypes(valueA, valueB);\n};\n\nvar normalizeAlphaChunk = function normalizeAlphaChunk(chunk) {\n return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n};\n\nvar parseNumber = function parseNumber(value) {\n if (value.length !== 0) {\n var parsedNumber = Number(value);\n if (!Number.isNaN(parsedNumber)) {\n return parsedNumber;\n }\n }\n return undefined;\n};\n\nvar normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) {\n if (RE_INT_OR_FLOAT.test(chunk)) {\n // don´t parse a number, if there´s a preceding decimal point\n // to keep significance\n // e.g. 1.0020, 1.020\n if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') {\n return parseNumber(chunk) || 0;\n }\n }\n return undefined;\n};\n\nvar createChunkMap = function createChunkMap(chunk, index, chunks) {\n return {\n parsedNumber: normalizeNumericChunk(chunk, index, chunks),\n normalizedString: normalizeAlphaChunk(chunk)\n };\n};\n\nvar createChunks = function createChunks(value) {\n return value.replace(RE_NUMBERS, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n};\n\nvar createChunkMaps = function createChunkMaps(value) {\n var chunksMaps = createChunks(value).map(createChunkMap);\n return chunksMaps;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar isNaN = function isNaN(value) {\n return Number.isNaN(value) || value instanceof Number && Number.isNaN(value.valueOf());\n};\n\nvar isNull = function isNull(value) {\n return value === null;\n};\n\nvar isObject = function isObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Number) && !(value instanceof String) && !(value instanceof Boolean) && !(value instanceof Date);\n};\n\nvar isSymbol = function isSymbol(value) {\n return typeof value === 'symbol';\n};\n\nvar isUndefined = function isUndefined(value) {\n return value === undefined;\n};\n\nvar parseDate = function parseDate(value) {\n try {\n var parsedDate = Date.parse(value);\n if (!Number.isNaN(parsedDate)) {\n if (RE_DATE.test(value)) {\n return parsedDate;\n }\n }\n return undefined;\n } catch (_unused) {\n return undefined;\n }\n};\n\nvar numberify = function numberify(value) {\n var parsedNumber = parseNumber(value);\n if (parsedNumber !== undefined) {\n return parsedNumber;\n }\n return parseDate(value);\n};\n\nvar stringify = function stringify(value) {\n if (typeof value === 'boolean' || value instanceof Boolean) {\n return Number(value).toString();\n }\n if (typeof value === 'number' || value instanceof Number) {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.getTime().toString();\n }\n if (typeof value === 'string' || value instanceof String) {\n return value.toLowerCase().replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n }\n return '';\n};\n\nvar getMappedValueRecord = function getMappedValueRecord(value) {\n if (typeof value === 'string' || value instanceof String || (typeof value === 'number' || value instanceof Number) && !isNaN(value) || typeof value === 'boolean' || value instanceof Boolean || value instanceof Date) {\n var stringValue = stringify(value);\n var parsedNumber = numberify(stringValue);\n var chunks = createChunkMaps(parsedNumber ? \"\" + parsedNumber : stringValue);\n return {\n parsedNumber: parsedNumber,\n chunks: chunks,\n value: value\n };\n }\n return {\n isArray: Array.isArray(value),\n isFunction: isFunction(value),\n isNaN: isNaN(value),\n isNull: isNull(value),\n isObject: isObject(value),\n isSymbol: isSymbol(value),\n isUndefined: isUndefined(value),\n value: value\n };\n};\n\nvar baseCompare = function baseCompare(options) {\n return function (valueA, valueB) {\n var a = getMappedValueRecord(valueA);\n var b = getMappedValueRecord(valueB);\n var result = compareValues(a, b);\n return result * (options.order === 'desc' ? -1 : 1);\n };\n};\n\nvar isValidOrder = function isValidOrder(value) {\n return typeof value === 'string' && (value === 'asc' || value === 'desc');\n};\nvar getOptions = function getOptions(customOptions) {\n var order = 'asc';\n if (typeof customOptions === 'string' && isValidOrder(customOptions)) {\n order = customOptions;\n } else if (customOptions && typeof customOptions === 'object' && customOptions.order && isValidOrder(customOptions.order)) {\n order = customOptions.order;\n }\n return {\n order: order\n };\n};\n\n/**\n * Creates a compare function that defines the natural sort order considering\n * the given `options` which may be passed to [`Array.prototype.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n */\nfunction compare(options) {\n var validatedOptions = getOptions(options);\n return baseCompare(validatedOptions);\n}\n\nvar compareMultiple = function compareMultiple(recordA, recordB, orders) {\n var indexA = recordA.index,\n valuesA = recordA.values;\n var indexB = recordB.index,\n valuesB = recordB.values;\n var length = valuesA.length;\n var ordersLength = orders.length;\n for (var i = 0; i < length; i++) {\n var order = i < ordersLength ? orders[i] : null;\n if (order && typeof order === 'function') {\n var result = order(valuesA[i].value, valuesB[i].value);\n if (result) {\n return result;\n }\n } else {\n var _result = compareValues(valuesA[i], valuesB[i]);\n if (_result) {\n return _result * (order === 'desc' ? -1 : 1);\n }\n }\n }\n return indexA - indexB;\n};\n\nvar createIdentifierFn = function createIdentifierFn(identifier) {\n if (typeof identifier === 'function') {\n // identifier is already a lookup function\n return identifier;\n }\n return function (value) {\n if (Array.isArray(value)) {\n var index = Number(identifier);\n if (Number.isInteger(index)) {\n return value[index];\n }\n } else if (value && typeof value === 'object') {\n var result = Object.getOwnPropertyDescriptor(value, identifier);\n return result == null ? void 0 : result.value;\n }\n return value;\n };\n};\n\nvar getElementByIndex = function getElementByIndex(collection, index) {\n return collection[index];\n};\n\nvar getValueByIdentifier = function getValueByIdentifier(value, getValue) {\n return getValue(value);\n};\n\nvar baseOrderBy = function baseOrderBy(collection, identifiers, orders) {\n var identifierFns = identifiers.length ? identifiers.map(createIdentifierFn) : [function (value) {\n return value;\n }];\n\n // temporary array holds elements with position and sort-values\n var mappedCollection = collection.map(function (element, index) {\n var values = identifierFns.map(function (identifier) {\n return getValueByIdentifier(element, identifier);\n }).map(getMappedValueRecord);\n return {\n index: index,\n values: values\n };\n });\n\n // iterate over values and compare values until a != b or last value reached\n mappedCollection.sort(function (recordA, recordB) {\n return compareMultiple(recordA, recordB, orders);\n });\n return mappedCollection.map(function (element) {\n return getElementByIndex(collection, element.index);\n });\n};\n\nvar getIdentifiers = function getIdentifiers(identifiers) {\n if (!identifiers) {\n return [];\n }\n var identifierList = !Array.isArray(identifiers) ? [identifiers] : [].concat(identifiers);\n if (identifierList.some(function (identifier) {\n return typeof identifier !== 'string' && typeof identifier !== 'number' && typeof identifier !== 'function';\n })) {\n return [];\n }\n return identifierList;\n};\n\nvar getOrders = function getOrders(orders) {\n if (!orders) {\n return [];\n }\n var orderList = !Array.isArray(orders) ? [orders] : [].concat(orders);\n if (orderList.some(function (order) {\n return order !== 'asc' && order !== 'desc' && typeof order !== 'function';\n })) {\n return [];\n }\n return orderList;\n};\n\n/**\n * Creates an array of elements, natural sorted by specified identifiers and\n * the corresponding sort orders. This method implements a stable sort\n * algorithm, which means the original sort order of equal elements is\n * preserved.\n */\nfunction orderBy(collection, identifiers, orders) {\n if (!collection || !Array.isArray(collection)) {\n return [];\n }\n var validatedIdentifiers = getIdentifiers(identifiers);\n var validatedOrders = getOrders(orders);\n return baseOrderBy(collection, validatedIdentifiers, validatedOrders);\n}\n\nexport { compare, orderBy };\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=03d22f04\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=98f97aee\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ViewGrid.vue?vue&type=template&id=6ca550f9\"\nimport script from \"./ViewGrid.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGrid.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, View, FileAction, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: node.fileid }, { dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useFilesStore = function (...args) {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by id\n */\n getNode: (state) => (id) => state.files[id],\n /**\n * Get a list of files or folders by their IDs\n * Does not return undefined values\n */\n getNodes: (state) => (ids) => ids\n .map(id => state.files[id])\n .filter(Boolean),\n /**\n * Get a file or folder by id\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', node);\n return acc;\n }\n acc[node.fileid] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.fileid) {\n Vue.delete(this.files, node.fileid);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n onCreatedNode(node) {\n this.updateNodes([node]);\n },\n onUpdatedNode(node) {\n this.updateNodes([node]);\n },\n },\n });\n const fileStore = store(...args);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n subscribe('files:node:created', fileStore.onCreatedNode);\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n subscribe('files:node:updated', fileStore.onUpdatedNode);\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport { FileType, Folder, Node, getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport Vue from 'vue';\nimport logger from '../logger';\nimport { useFilesStore } from './files';\nexport const usePathsStore = function (...args) {\n const files = useFilesStore();\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.fileid);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n fileid: node.fileid,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n if (node.dirname === '/') {\n const root = files.getRoot(service);\n if (!root._children) {\n Vue.set(root, '_children', []);\n }\n root._children.push(node.fileid);\n return;\n }\n // If the folder doesn't exists yet, it will be\n // fetched later and its children updated anyway.\n if (this.paths[service][node.dirname]) {\n const parentId = this.paths[service][node.dirname];\n const parentFolder = files.getNode(parentId);\n logger.debug('Path already exists, updating children', { parentFolder, node });\n if (!parentFolder) {\n logger.error('Parent folder not found', { parentId });\n return;\n }\n if (!parentFolder._children) {\n Vue.set(parentFolder, '_children', []);\n }\n parentFolder._children.push(node.fileid);\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n // TODO: watch folders to update paths?\n subscribe('files:node:created', pathsStore.onCreatedNode);\n // subscribe('files:node:deleted', pathsStore.onDeletedNode)\n // subscribe('files:node:moved', pathsStore.onMovedNode)\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport { FileId, SelectionStore } from '../types';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","import { defineStore } from 'pinia';\nimport { getUploader } from '@nextcloud/upload';\nlet uploader;\nexport const useUploaderStore = function (...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n};\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=69a49b0f\"\nimport script from \"./Home.vue?vue&type=script&lang=js\"\nexport * from \"./Home.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon home-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=1c4866bc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=1c4866bc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=1c4866bc&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=1c4866bc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c4866bc\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport { basename, extname } from 'path';\n// TODO: move to @nextcloud/files\n/**\n * Create an unique file name\n * @param name The initial name to use\n * @param otherNames Other names that are already used\n * @param suffix A function that takes an index an returns a suffix to add, defaults to '(index)'\n * @return Either the initial name, if unique, or the name with the suffix so that the name is unique\n */\nexport const getUniqueName = (name, otherNames, suffix = (n) => `(${n})`) => {\n let newName = name;\n let i = 1;\n while (otherNames.includes(newName)) {\n const ext = extname(name);\n newName = `${basename(name, ext)} ${suffix(i++)}${ext}`;\n }\n return newName;\n};\nexport const encodeFilePath = function (path) {\n const pathSections = (path.startsWith('/') ? path : `/${path}`).split('/');\n let relativePath = '';\n pathSections.forEach((section) => {\n if (section !== '') {\n relativePath += '/' + encodeURIComponent(section);\n }\n });\n return relativePath;\n};\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n const fileCount = nodes.filter(node => node.type === FileType.File).length;\n const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n if (fileCount === 0) {\n return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n }\n else if (folderCount === 0) {\n return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n }\n if (fileCount === 1) {\n return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n }\n if (folderCount === 1) {\n return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n }\n return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.source.attributes.failed)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"display-name\":_vm.displayName,\"extension\":_vm.extension,\"files-list-width\":_vm.filesListWidth,\"nodes\":_vm.nodes,\"source\":_vm.source},on:{\"click\":_vm.execDefaultAction}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"files-list-width\":_vm.filesListWidth,\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('NcDateTime',{attrs:{\"timestamp\":_vm.source.mtime,\"ignore-seconds\":true}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nexport const useRenamingStore = function (...args) {\n const store = defineStore('renaming', {\n state: () => ({\n renamingNode: undefined,\n newName: '',\n }),\n });\n const renamingStore = store(...args);\n // Make sure we only register the listeners once\n if (!renamingStore._initialized) {\n subscribe('files:node:rename', function (node) {\n renamingStore.renamingNode = node;\n renamingStore.newName = node.basename;\n });\n renamingStore._initialized = true;\n }\n return renamingStore;\n};\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=065722db\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=5c04f969\"\nimport script from \"./Folder.vue?vue&type=script&lang=js\"\nexport * from \"./Folder.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=578d5cf6&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=578d5cf6&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=578d5cf6\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=578d5cf6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import DragAndDropPreview from '../components/DragAndDropPreview.vue';\nimport Vue from 'vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\nexport const getDragAndDropPreview = async (nodes) => {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n};\n","\n import API from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../css-loader/dist/cjs.js!./style.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./style.css\";\n export default content && content.locals ? content.locals : undefined;\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport '@nextcloud/dialogs/style.css';\nimport { Permission } from '@nextcloud/files';\nimport PQueue from 'p-queue';\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n/**\n * Get the processing queue\n */\nexport const getQueue = () => {\n if (!queue) {\n queue = new PQueue({ concurrency: 3 });\n }\n return queue;\n};\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\nexport const canMove = (nodes) => {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return (minPermission & Permission.UPDATE) !== 0;\n};\nexport const canDownload = (nodes) => {\n return nodes.every(node => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some(attribute => attribute.scope === 'permissions' && attribute.enabled === false && attribute.key === 'download');\n });\n};\nexport const canCopy = (nodes) => {\n // For now the only restriction is that a shared file\n // cannot be copied if the download is disabled\n return canDownload(nodes);\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport '@nextcloud/dialogs/style.css';\n// eslint-disable-next-line n/no-extraneous-import\nimport { AxiosError } from 'axios';\nimport { basename, join } from 'path';\nimport { emit } from '@nextcloud/event-bus';\nimport { FilePickerClosed, getFilePickerBuilder, showError } from '@nextcloud/dialogs';\nimport { Permission, FileAction, FileType, NodeStatus, davGetClient, davRootPath, davResultToNode, davGetDefaultPropfind } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple.svg?raw';\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw';\nimport { MoveCopyAction, canCopy, canMove, getQueue } from './moveOrCopyActionUtils';\nimport logger from '../logger';\nimport { getUniqueName } from '../utils/fileUtils';\n/**\n * Return the action that is possible for the given nodes\n * @param {Node[]} nodes The nodes to check against\n * @return {MoveCopyAction} The action that is possible for the given nodes\n */\nconst getActionForNodes = (nodes) => {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n * @param {Node} node The node to copy/move\n * @param {Folder} destination The destination to copy/move the node to\n * @param {MoveCopyAction} method The method to use for the copy/move\n * @param {boolean} overwrite Whether to overwrite the destination if it exists\n * @return {Promise} A promise that resolves when the copy/move is done\n */\nexport const handleCopyMoveNodeTo = async (node, destination, method, overwrite = false) => {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && node.dirname === destination.path) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (`${destination.path}/`.startsWith(`${node.path}/`)) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n const queue = getQueue();\n return await queue.add(async () => {\n const copySuffix = (index) => {\n if (index === 1) {\n return t('files', '(copy)'); // TRANSLATORS: Mark a file as a copy of another file\n }\n return t('files', '(copy %n)', undefined, index); // TRANSLATORS: Meaning it is the n'th copy of a file\n };\n try {\n const client = davGetClient();\n const currentPath = join(davRootPath, node.path);\n const destinationPath = join(davRootPath, destination.path);\n if (method === MoveCopyAction.COPY) {\n let target = node.basename;\n // If we do not allow overwriting then find an unique name\n if (!overwrite) {\n const otherNodes = await client.getDirectoryContents(destinationPath);\n target = getUniqueName(node.basename, otherNodes.map((n) => n.basename), copySuffix);\n }\n await client.copyFile(currentPath, join(destinationPath, target));\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(join(destinationPath, target), {\n details: true,\n data: davGetDefaultPropfind(),\n });\n emit('files:node:created', davResultToNode(data));\n }\n }\n else {\n await client.moveFile(currentPath, join(destinationPath, node.basename));\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n if (error instanceof AxiosError) {\n if (error?.response?.status === 412) {\n throw new Error(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error?.response?.status === 423) {\n throw new Error(t('files', 'The files is locked'));\n }\n else if (error?.response?.status === 404) {\n throw new Error(t('files', 'The file does not exist anymore'));\n }\n else if (error.message) {\n throw new Error(error.message);\n }\n }\n logger.debug(error);\n throw new Error();\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n};\n/**\n * Open a file picker for the given action\n * @param {MoveCopyAction} action The action to open the file picker for\n * @param {string} dir The directory to start the file picker in\n * @param {Node[]} nodes The nodes to move/copy\n * @return {Promise} The picked destination\n */\nconst openFilePickerForAction = async (action, dir = '/', nodes) => {\n const fileIDs = nodes.map(node => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We only want to show folders that we can create nodes in\n return (n.permissions & Permission.CREATE) !== 0\n // We don't want to show the current nodes in the file picker\n && !fileIDs.includes(n.fileid);\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir);\n return new Promise((resolve, reject) => {\n filePicker.setButtonFactory((_selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map(node => node.dirname);\n const paths = nodes.map(node => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }) : t('files', 'Copy'),\n type: 'primary',\n icon: CopyIconSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }) : t('files', 'Move'),\n type: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n });\n const picker = filePicker.build();\n picker.pick().catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n reject(new Error(t('files', 'Cancelled move or copy operation')));\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n });\n};\nexport const action = new FileAction({\n id: 'move-copy',\n displayName(nodes) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled(nodes) {\n // We only support moving/copying files within the user folder\n if (!nodes.every(node => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(node, view, dir) {\n const action = getActionForNodes([node]);\n let result;\n try {\n result = await openFilePickerForAction(action, dir, [node]);\n }\n catch (e) {\n logger.error(e);\n return false;\n }\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n if (error instanceof Error && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return null;\n }\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n const action = getActionForNodes(nodes);\n const result = await openFilePickerForAction(action, dir, nodes);\n const promises = nodes.map(async (node) => {\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n logger.error(`Failed to ${result.action} node`, { node, error });\n return false;\n }\n });\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n // we let the front handle the error.\n return await Promise.all(promises);\n },\n order: 15,\n});\n","/**\n * @copyright Copyright (c) 2024 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { extname, join } from 'path';\nimport { FileType, Permission, Folder, File as NcFile, NodeStatus, Node, View } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport { Upload, getUploader } from '@nextcloud/upload';\nimport { vOnClickOutside } from '@vueuse/components';\nimport Vue, { defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { handleCopyMoveNodeTo } from '../actions/moveOrCopyAction.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.js';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n filesListWidth: {\n type: Number,\n default: 0,\n },\n },\n data() {\n return {\n loading: '',\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n currentView() {\n return this.$navigation.active;\n },\n currentDir() {\n // Remove any trailing slash but leave root slash\n return (this.$route?.query?.dir?.toString() || '/').replace(/^(.+)\\/$/, '$1');\n },\n currentFileId() {\n return this.$route.params?.fileid || this.$route.query?.fileid || null;\n },\n fileid() {\n return this.source?.fileid;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING;\n },\n extension() {\n if (this.source.attributes?.displayName) {\n return extname(this.source.attributes.displayName);\n }\n return this.source.extension || '';\n },\n displayName() {\n const ext = this.extension;\n const name = (this.source.attributes.displayName\n || this.source.basename);\n // Strip extension from name if defined\n return !ext ? name : name.slice(0, 0 - ext.length);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.fileid && this.selectedFiles.includes(this.fileid);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.filesListWidth < 512;\n },\n isActive() {\n return this.fileid?.toString?.() === this.currentFileId?.toString?.();\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map(fileid => this.filesStore.getNode(fileid));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.fileid && this.draggingFiles.includes(this.fileid)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n // Only reset when opening a new menu\n if (opened) {\n // Reset any right click position override on close\n // Wait for css animation to be done\n const root = this.$root.$el;\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n this.actionsMenuStore.opened = opened ? this.uniqueId.toString() : null;\n },\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n */\n source() {\n this.resetState();\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset loading state\n this.loading = '';\n this.$refs.preview.reset();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n const root = this.$root.$el;\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n root.style.setProperty('--mouse-pos-x', Math.max(contentRect.left, Math.min(event.clientX, event.clientX - 200)) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(contentRect.top, event.clientY - contentRect.top) + 'px');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault();\n window.open(generateUrl('/f/{fileId}', { fileId: this.fileid }));\n return false;\n }\n this.$refs.actions.execDefaultAction(event);\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.([this.source], this.currentView)) {\n sidebarAction.exec(this.source, this.currentView, this.currentDir);\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.fileid)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.fileid]);\n }\n const nodes = this.draggingStore.dragging\n .map(fileid => this.filesStore.getNode(fileid));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.files?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // If another button is pressed, cancel it\n // This allows cancelling the drag with the right click\n if (!this.canDrop || event.button !== 0) {\n return;\n }\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, selection: this.draggingFiles });\n // Check whether we're uploading files\n if (event.dataTransfer?.files\n && event.dataTransfer.files.length > 0) {\n const uploader = getUploader();\n // Check whether the uploader is in the same folder\n // This should never happen™\n if (!uploader.destination.path.startsWith(uploader.destination.path)) {\n logger.error('The current uploader destination is not the same as the current folder');\n showError(t('files', 'An error occurred while uploading. Please try again later.'));\n return;\n }\n logger.debug(`Uploading files to ${this.source.path}`);\n const queue = [];\n for (const file of event.dataTransfer.files) {\n // Because the uploader destination is properly set to the current folder\n // we can just use the basename as the relative path.\n queue.push(uploader.upload(join(this.source.basename, file.name), file));\n }\n const results = await Promise.allSettled(queue);\n const errors = results.filter(result => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return;\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return;\n }\n const nodes = this.draggingFiles.map(fileid => this.filesStore.getNode(fileid));\n nodes.forEach(async (node) => {\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n // TODO: resolve potential conflicts prior and force overwrite\n await handleCopyMoveNodeTo(node, this.source, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE);\n }\n catch (error) {\n logger.error('Error while moving file', { error });\n if (isCopy) {\n showError(t('files', 'Could not copy {file}. {message}', { file: node.basename, message: error.message || '' }));\n }\n else {\n showError(t('files', 'Could not move {file}. {message}', { file: node.basename, message: error.message || '' }));\n }\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (this.draggingFiles.some(fileid => this.selectedFiles.includes(fileid))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const hashCode = function (str) {\n return str.split('').reduce(function (a, b) {\n a = ((a << 5) - a) + b.charCodeAt(0);\n return a & a;\n }, 0);\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=08a118c6\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ChevronRight.vue?vue&type=template&id=750bcc07\"\nimport script from \"./ChevronRight.vue?vue&type=script&lang=js\"\nexport * from \"./ChevronRight.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-right-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"current-view\":_vm.currentView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"type\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t[`files-list__row-action--menu`]: _vm.isMenu(action.id)\n\t\t\t},attrs:{\"close-after-click\":!_vm.isMenu(action.id),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isMenu(action.id),\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.mountType === 'shared' && action.id === 'sharing-status' ? '' : _vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(_vm.openedSubmenu))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":false /* never close submenu, just go back */,\"data-cy-files-list-row-action\":action.id,\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=2fa8d0d9&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=2fa8d0d9&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=2fa8d0d9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=2fa8d0d9&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=2fa8d0d9&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=2fa8d0d9&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=2fa8d0d9&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fa8d0d9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon'):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"checked\":_vm.isSelected},on:{\"update:checked\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = function (...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=6992c304\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.stopRenaming),expression:\"stopRenaming\"}],staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":true,\"minlength\":1,\"required\":true,\"value\":_vm.newName,\"enterkeyhint\":\"done\"},on:{\"update:value\":function($event){_vm.newName=$event},\"keyup\":[_vm.checkInputValidity,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}]}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"aria-hidden\":_vm.isRenaming,\"data-cy-files-list-row-name-link\":\"\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\"},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.displayName)}}),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=637facfc\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl && _vm.backgroundFailed !== true)?_c('img',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false},attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":function($event){_vm.backgroundFailed = true},\"load\":function($event){_vm.backgroundFailed = false}}}):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=5c8d96c6\"\nimport script from \"./File.vue?vue&type=script&lang=js\"\nexport * from \"./File.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=3b29b1d5\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=aa295eae\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Network.vue?vue&type=template&id=7c7d2907\"\nimport script from \"./Network.vue?vue&type=script&lang=js\"\nexport * from \"./Network.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=4d7171be\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=34d1e782\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=18541dcc\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=77afa6dc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=77afa6dc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=77afa6dc&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=77afa6dc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77afa6dc\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","/**\n * @copyright Copyright (c) 2023 Louis Chmn \n *\n * @author Louis Chmn \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, registerDavProperty } from '@nextcloud/files';\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param {Node} node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=3c23da48\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=6ae0d517\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.source.attributes.failed)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"display-name\":_vm.displayName,\"extension\":_vm.extension,\"files-list-width\":_vm.filesListWidth,\"grid-mode\":true,\"nodes\":_vm.nodes,\"source\":_vm.source},on:{\"click\":_vm.execDefaultAction}})],1),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"files-list-width\":_vm.filesListWidth,\"grid-mode\":true,\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=337076f0\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=0434f153\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=a85bde20&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=a85bde20&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=a85bde20&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=a85bde20&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a85bde20\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nimport { Navigation, View } from '@nextcloud/files';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{class:['files-list__column-sort-button', {\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"type\":\"tertiary\"},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=2dd1845e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=2dd1845e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=2dd1845e&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=2dd1845e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2dd1845e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=952162c2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=952162c2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=952162c2&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=952162c2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"952162c2\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nexport default Vue.extend({\n data() {\n return {\n filesListWidth: null,\n };\n },\n mounted() {\n const fileListEl = document.querySelector('#app-content-vue');\n this.filesListWidth = fileListEl?.clientWidth ?? null;\n this.$resizeObserver = new ResizeObserver((entries) => {\n if (entries.length > 0 && entries[0].target === fileListEl) {\n this.filesListWidth = entries[0].contentRect.width;\n }\n });\n this.$resizeObserver.observe(fileListEl);\n },\n beforeDestroy() {\n this.$resizeObserver.disconnect();\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",attrs:{\"data-cy-files-list\":\"\"}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{ 'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'] }},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",class:_vm.gridMode ? 'files-list__tbody--grid' : 'files-list__tbody--list',style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({key, item},i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isReady),expression:\"isReady\"}],staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=6932388d\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\"},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.inlineActions,\"menu-name\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=d939292c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=d939292c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=d939292c&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=d939292c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d939292c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":'source',\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t\tfilesListWidth: _vm.filesListWidth,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.sortedHeaders),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=48fb0b13&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=48fb0b13&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=48fb0b13&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=48fb0b13&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=48fb0b13&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=48fb0b13&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=48fb0b13&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48fb0b13\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=547c388d\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 Ferdinand Thiessen \n *\n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { davGetClient, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nimport { emit } from '@nextcloud/event-bus';\nimport { getUploader } from '@nextcloud/upload';\nimport { joinPaths } from '@nextcloud/paths';\nimport { showError } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport logger from '../logger.js';\nexport const handleDrop = async (data) => {\n // TODO: Maybe handle `getAsFileSystemHandle()` in the future\n const uploads = [];\n for (const item of data.items) {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n continue;\n }\n // MDN recommends to try both, as it might be renamed in the future\n const entry = item?.getAsEntry?.() ?? item.webkitGetAsEntry();\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry === null) {\n logger.debug('Could not get FilesystemEntry of item, falling back to file');\n const file = item.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: item.type, kind: item.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n }\n else {\n uploads.push(await handleFileUpload(file));\n }\n }\n else {\n logger.debug('Handle recursive upload', { entry: entry.name });\n // Use Filesystem API\n uploads.push(...await handleRecursiveUpload(entry));\n }\n }\n return uploads;\n};\nconst handleFileUpload = async (file, path = '') => {\n const uploader = getUploader();\n try {\n return await uploader.upload(`${path}${file.name}`, file);\n }\n catch (e) {\n showError(t('files', 'Uploading \"{filename}\" failed', { filename: file.name }));\n throw e;\n }\n};\nconst handleRecursiveUpload = async (entry, path = '') => {\n if (entry.isFile) {\n return [\n await new Promise((resolve, reject) => {\n entry.file(async (file) => resolve(await handleFileUpload(file, path)), (error) => reject(error));\n }),\n ];\n }\n else {\n const directory = entry;\n // TODO: Implement this on `@nextcloud/upload`\n const absolutPath = joinPaths(davRootPath, getUploader().destination.path, path, directory.name);\n logger.debug('Handle directory recursively', { name: directory.name, absolutPath });\n const davClient = davGetClient();\n const dirExists = await davClient.exists(absolutPath);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { absolutPath });\n await davClient.createDirectory(absolutPath, { recursive: true });\n const stat = await davClient.stat(absolutPath, { details: true, data: davGetDefaultPropfind() });\n emit('files:node:created', davResultToNode(stat.data));\n }\n const entries = await readDirectory(directory);\n // sorted so we upload files first before starting next level\n const promises = entries.sort((a) => a.isFile ? -1 : 1)\n .map((file) => handleRecursiveUpload(file, `${path}${directory.name}/`));\n return (await Promise.all(promises)).flat();\n }\n};\n/**\n * Read a directory using Filesystem API\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=46caa8f8&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=46caa8f8&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=46caa8f8&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=46caa8f8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46caa8f8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=b2731ace&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=b2731ace&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=b2731ace&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=b2731ace&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b2731ace\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=11e0f2dd\"\nimport script from \"./FilesApp.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport { getNavigation } from '@nextcloud/files';\nimport { getRequestToken } from '@nextcloud/auth';\nimport router from './router/router';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\nimport FilesApp from './FilesApp.vue';\n// @ts-expect-error __webpack_nonce__ is injected by webpack\n__webpack_nonce__ = btoa(getRequestToken());\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nconst Router = new RouterService(router);\nObject.assign(window.OCP.Files, { Router });\n// Init Pinia store\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\n// Init Navigation Service\n// This only works with Vue 2 - with Vue 3 this will not modify the source but return just a oberserver\nconst Navigation = Vue.observable(getNavigation());\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router,\n pinia,\n}).$mount('#content');\n","export default class RouterService {\n _router;\n constructor(router) {\n this._router = router;\n }\n get name() {\n return this._router.currentRoute.name;\n }\n get query() {\n return this._router.currentRoute.query || {};\n }\n get params() {\n return this._router.currentRoute.params || {};\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this._router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this._router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27/%3e%3c/svg%3e\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27%20style=%27fill-opacity:1;fill:%23ffffff%27/%3e%3c/svg%3e\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n.toastify.dialogs {\n min-width: 200px;\n background: none;\n background-color: var(--color-main-background);\n color: var(--color-main-text);\n box-shadow: 0 0 6px 0 var(--color-box-shadow);\n padding: 0 12px;\n margin-top: 45px;\n position: fixed;\n z-index: 10100;\n border-radius: var(--border-radius);\n display: flex;\n align-items: center;\n}\n.toastify.dialogs .toast-undo-container {\n display: flex;\n align-items: center;\n}\n.toastify.dialogs .toast-undo-button,\n.toastify.dialogs .toast-close {\n position: static;\n overflow: hidden;\n box-sizing: border-box;\n min-width: 44px;\n height: 100%;\n padding: 12px;\n white-space: nowrap;\n background-repeat: no-repeat;\n background-position: center;\n background-color: transparent;\n min-height: 0;\n}\n.toastify.dialogs .toast-undo-button.toast-close,\n.toastify.dialogs .toast-close.toast-close {\n text-indent: 0;\n opacity: .4;\n border: none;\n min-height: 44px;\n margin-left: 10px;\n font-size: 0;\n}\n.toastify.dialogs .toast-undo-button.toast-close:before,\n.toastify.dialogs .toast-close.toast-close:before {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n content: \" \";\n filter: var(--background-invert-if-dark);\n display: inline-block;\n width: 16px;\n height: 16px;\n}\n.toastify.dialogs .toast-undo-button.toast-undo-button,\n.toastify.dialogs .toast-close.toast-undo-button {\n height: calc(100% - 6px);\n margin: 3px 3px 3px 12px;\n}\n.toastify.dialogs .toast-undo-button:hover,\n.toastify.dialogs .toast-undo-button:focus,\n.toastify.dialogs .toast-undo-button:active,\n.toastify.dialogs .toast-close:hover,\n.toastify.dialogs .toast-close:focus,\n.toastify.dialogs .toast-close:active {\n cursor: pointer;\n opacity: 1;\n}\n.toastify.dialogs.toastify-top {\n right: 10px;\n}\n.toastify.dialogs.toast-with-click {\n cursor: pointer;\n}\n.toastify.dialogs.toast-error {\n border-left: 3px solid var(--color-error);\n}\n.toastify.dialogs.toast-info {\n border-left: 3px solid var(--color-primary);\n}\n.toastify.dialogs.toast-warning {\n border-left: 3px solid var(--color-warning);\n}\n.toastify.dialogs.toast-success,\n.toastify.dialogs.toast-undo {\n border-left: 3px solid var(--color-success);\n}\n.theme--dark .toastify.dialogs .toast-close.toast-close:before {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n._file-picker__file-icon_1vgv4_5 {\n width: 32px;\n height: 32px;\n min-width: 32px;\n min-height: 32px;\n background-repeat: no-repeat;\n background-size: contain;\n display: flex;\n justify-content: center;\n}\ntr.file-picker__row[data-v-6aded0d9] {\n height: var(--row-height, 50px);\n}\ntr.file-picker__row td[data-v-6aded0d9] {\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n border-bottom: none;\n}\ntr.file-picker__row td.row-checkbox[data-v-6aded0d9] {\n padding: 0 2px;\n}\ntr.file-picker__row td[data-v-6aded0d9]:not(.row-checkbox) {\n padding-inline: 14px 0;\n}\ntr.file-picker__row td.row-size[data-v-6aded0d9] {\n text-align: end;\n padding-inline: 0 14px;\n}\ntr.file-picker__row td.row-name[data-v-6aded0d9] {\n padding-inline: 2px 0;\n}\n@keyframes gradient-6aded0d9 {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n to {\n background-position: 0% 50%;\n }\n}\n.loading-row .row-checkbox[data-v-6aded0d9] {\n text-align: center !important;\n}\n.loading-row span[data-v-6aded0d9] {\n display: inline-block;\n height: 24px;\n background: linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker));\n background-size: 600px 100%;\n border-radius: var(--border-radius);\n animation: gradient-6aded0d9 12s ease infinite;\n}\n.loading-row .row-wrapper[data-v-6aded0d9] {\n display: inline-flex;\n align-items: center;\n}\n.loading-row .row-checkbox span[data-v-6aded0d9] {\n width: 24px;\n}\n.loading-row .row-name span[data-v-6aded0d9]:last-of-type {\n margin-inline-start: 6px;\n width: 130px;\n}\n.loading-row .row-size span[data-v-6aded0d9] {\n width: 80px;\n}\n.loading-row .row-modified span[data-v-6aded0d9] {\n width: 90px;\n}\ntr.file-picker__row[data-v-48df4f27] {\n height: var(--row-height, 50px);\n}\ntr.file-picker__row td[data-v-48df4f27] {\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n border-bottom: none;\n}\ntr.file-picker__row td.row-checkbox[data-v-48df4f27] {\n padding: 0 2px;\n}\ntr.file-picker__row td[data-v-48df4f27]:not(.row-checkbox) {\n padding-inline: 14px 0;\n}\ntr.file-picker__row td.row-size[data-v-48df4f27] {\n text-align: end;\n padding-inline: 0 14px;\n}\ntr.file-picker__row td.row-name[data-v-48df4f27] {\n padding-inline: 2px 0;\n}\n.file-picker__row--selected[data-v-48df4f27] {\n background-color: var(--color-background-dark);\n}\n.file-picker__row[data-v-48df4f27]:hover {\n background-color: var(--color-background-hover);\n}\n.file-picker__name-container[data-v-48df4f27] {\n display: flex;\n justify-content: start;\n align-items: center;\n height: 100%;\n}\n.file-picker__file-name[data-v-48df4f27] {\n padding-inline-start: 6px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.file-picker__file-extension[data-v-48df4f27] {\n color: var(--color-text-maxcontrast);\n min-width: fit-content;\n}\n.file-picker__header-preview[data-v-d3c94818] {\n width: 22px;\n height: 32px;\n flex: 0 0 auto;\n}\n.file-picker__files[data-v-d3c94818] {\n margin: 2px;\n margin-inline-start: 12px;\n overflow: scroll auto;\n}\n.file-picker__files table[data-v-d3c94818] {\n width: 100%;\n max-height: 100%;\n table-layout: fixed;\n}\n.file-picker__files th[data-v-d3c94818] {\n position: sticky;\n z-index: 1;\n top: 0;\n background-color: var(--color-main-background);\n padding: 2px;\n}\n.file-picker__files th .header-wrapper[data-v-d3c94818] {\n display: flex;\n}\n.file-picker__files th.row-checkbox[data-v-d3c94818] {\n width: 44px;\n}\n.file-picker__files th.row-name[data-v-d3c94818] {\n width: 230px;\n}\n.file-picker__files th.row-size[data-v-d3c94818] {\n width: 100px;\n}\n.file-picker__files th.row-modified[data-v-d3c94818] {\n width: 120px;\n}\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue__wrapper {\n justify-content: start;\n flex-direction: row-reverse;\n}\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue {\n padding-inline: 16px 4px;\n}\n.file-picker__files th.row-size[data-v-d3c94818] .button-vue__wrapper {\n justify-content: end;\n}\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper {\n color: var(--color-text-maxcontrast);\n}\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper .button-vue__text {\n font-weight: 400;\n}\n.file-picker__breadcrumbs[data-v-3bc9efa5] {\n flex-grow: 0 !important;\n}\n.file-picker__side[data-v-e96bec41] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: .5rem;\n min-width: 200px;\n padding: 2px;\n overflow: auto;\n}\n.file-picker__side[data-v-e96bec41] .button-vue__wrapper {\n justify-content: start;\n}\n.file-picker__filter-input[data-v-e96bec41] {\n margin-block: 7px;\n max-width: 260px;\n}\n@media (max-width: 736px) {\n .file-picker__side[data-v-e96bec41] {\n flex-direction: row;\n min-width: unset;\n }\n}\n@media (max-width: 512px) {\n .file-picker__side[data-v-e96bec41] {\n flex-direction: row;\n min-width: unset;\n }\n .file-picker__filter-input[data-v-e96bec41] {\n max-width: unset;\n }\n}\n.file-picker__navigation {\n padding-inline: 8px 2px;\n}\n.file-picker__navigation,\n.file-picker__navigation * {\n box-sizing: border-box;\n}\n.file-picker__navigation .v-select.select {\n min-width: 220px;\n}\n@media (min-width: 513px) and (max-width: 736px) {\n .file-picker__navigation {\n gap: 11px;\n }\n}\n@media (max-width: 512px) {\n .file-picker__navigation {\n flex-direction: column-reverse !important;\n }\n}\n.file-picker__view[data-v-821451ce] {\n height: 50px;\n display: flex;\n justify-content: start;\n align-items: center;\n}\n.file-picker__view h3[data-v-821451ce] {\n font-weight: 700;\n height: fit-content;\n margin: 0;\n}\n.file-picker__main[data-v-821451ce] {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n padding-inline: 2px;\n}\n.file-picker__main *[data-v-821451ce] {\n box-sizing: border-box;\n}\n[data-v-821451ce] .file-picker {\n height: min(80vh, 800px) !important;\n}\n@media (max-width: 512px) {\n [data-v-821451ce] .file-picker {\n height: calc(100% - 16px - var(--default-clickable-area)) !important;\n }\n}\n[data-v-821451ce] .file-picker__content {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/dialogs/dist/style.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,gBAAgB;EAChB,gBAAgB;EAChB,8CAA8C;EAC9C,6BAA6B;EAC7B,6CAA6C;EAC7C,eAAe;EACf,gBAAgB;EAChB,eAAe;EACf,cAAc;EACd,mCAAmC;EACnC,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,mBAAmB;AACrB;AACA;;EAEE,gBAAgB;EAChB,gBAAgB;EAChB,sBAAsB;EACtB,eAAe;EACf,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,4BAA4B;EAC5B,2BAA2B;EAC3B,6BAA6B;EAC7B,aAAa;AACf;AACA;;EAEE,cAAc;EACd,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;AACd;AACA;;EAEE,yDAA8Q;EAC9Q,YAAY;EACZ,wCAAwC;EACxC,qBAAqB;EACrB,WAAW;EACX,YAAY;AACd;AACA;;EAEE,wBAAwB;EACxB,wBAAwB;AAC1B;AACA;;;;;;EAME,eAAe;EACf,UAAU;AACZ;AACA;EACE,WAAW;AACb;AACA;EACE,eAAe;AACjB;AACA;EACE,yCAAyC;AAC3C;AACA;EACE,2CAA2C;AAC7C;AACA;EACE,2CAA2C;AAC7C;AACA;;EAEE,2CAA2C;AAC7C;AACA;EACE,yDAAsT;AACxT;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,4BAA4B;EAC5B,wBAAwB;EACxB,aAAa;EACb,uBAAuB;AACzB;AACA;EACE,+BAA+B;AACjC;AACA;EACE,eAAe;EACf,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,cAAc;AAChB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,eAAe;EACf,sBAAsB;AACxB;AACA;EACE,qBAAqB;AACvB;AACA;EACE;IACE,2BAA2B;EAC7B;EACA;IACE,6BAA6B;EAC/B;EACA;IACE,2BAA2B;EAC7B;AACF;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,qBAAqB;EACrB,YAAY;EACZ,oIAAoI;EACpI,2BAA2B;EAC3B,mCAAmC;EACnC,8CAA8C;AAChD;AACA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,WAAW;AACb;AACA;EACE,wBAAwB;EACxB,YAAY;AACd;AACA;EACE,WAAW;AACb;AACA;EACE,WAAW;AACb;AACA;EACE,+BAA+B;AACjC;AACA;EACE,eAAe;EACf,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,cAAc;AAChB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,eAAe;EACf,sBAAsB;AACxB;AACA;EACE,qBAAqB;AACvB;AACA;EACE,8CAA8C;AAChD;AACA;EACE,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;EACnB,YAAY;AACd;AACA;EACE,yBAAyB;EACzB,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,oCAAoC;EACpC,sBAAsB;AACxB;AACA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;AAChB;AACA;EACE,WAAW;EACX,yBAAyB;EACzB,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,gBAAgB;EAChB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,UAAU;EACV,MAAM;EACN,8CAA8C;EAC9C,YAAY;AACd;AACA;EACE,aAAa;AACf;AACA;EACE,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,sBAAsB;EACtB,2BAA2B;AAC7B;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,oBAAoB;AACtB;AACA;EACE,oCAAoC;AACtC;AACA;EACE,gBAAgB;AAClB;AACA;EACE,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;EACpB,UAAU;EACV,gBAAgB;EAChB,YAAY;EACZ,cAAc;AAChB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,iBAAiB;EACjB,gBAAgB;AAClB;AACA;EACE;IACE,mBAAmB;IACnB,gBAAgB;EAClB;AACF;AACA;EACE;IACE,mBAAmB;IACnB,gBAAgB;EAClB;EACA;IACE,gBAAgB;EAClB;AACF;AACA;EACE,uBAAuB;AACzB;AACA;;EAEE,sBAAsB;AACxB;AACA;EACE,gBAAgB;AAClB;AACA;EACE;IACE,SAAS;EACX;AACF;AACA;EACE;IACE,yCAAyC;EAC3C;AACF;AACA;EACE,YAAY;EACZ,aAAa;EACb,sBAAsB;EACtB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,SAAS;AACX;AACA;EACE,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,aAAa;EACb,OAAO;EACP,mBAAmB;AACrB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,mCAAmC;AACrC;AACA;EACE;IACE,oEAAoE;EACtE;AACF;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 Julius Härtl \\n *\\n * @author Julius Härtl \\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n */\\n.toastify.dialogs {\\n min-width: 200px;\\n background: none;\\n background-color: var(--color-main-background);\\n color: var(--color-main-text);\\n box-shadow: 0 0 6px 0 var(--color-box-shadow);\\n padding: 0 12px;\\n margin-top: 45px;\\n position: fixed;\\n z-index: 10100;\\n border-radius: var(--border-radius);\\n display: flex;\\n align-items: center;\\n}\\n.toastify.dialogs .toast-undo-container {\\n display: flex;\\n align-items: center;\\n}\\n.toastify.dialogs .toast-undo-button,\\n.toastify.dialogs .toast-close {\\n position: static;\\n overflow: hidden;\\n box-sizing: border-box;\\n min-width: 44px;\\n height: 100%;\\n padding: 12px;\\n white-space: nowrap;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-color: transparent;\\n min-height: 0;\\n}\\n.toastify.dialogs .toast-undo-button.toast-close,\\n.toastify.dialogs .toast-close.toast-close {\\n text-indent: 0;\\n opacity: .4;\\n border: none;\\n min-height: 44px;\\n margin-left: 10px;\\n font-size: 0;\\n}\\n.toastify.dialogs .toast-undo-button.toast-close:before,\\n.toastify.dialogs .toast-close.toast-close:before {\\n background-image: url(\\\"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='16'%20width='16'%3e%3cpath%20d='M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z'/%3e%3c/svg%3e\\\");\\n content: \\\" \\\";\\n filter: var(--background-invert-if-dark);\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n}\\n.toastify.dialogs .toast-undo-button.toast-undo-button,\\n.toastify.dialogs .toast-close.toast-undo-button {\\n height: calc(100% - 6px);\\n margin: 3px 3px 3px 12px;\\n}\\n.toastify.dialogs .toast-undo-button:hover,\\n.toastify.dialogs .toast-undo-button:focus,\\n.toastify.dialogs .toast-undo-button:active,\\n.toastify.dialogs .toast-close:hover,\\n.toastify.dialogs .toast-close:focus,\\n.toastify.dialogs .toast-close:active {\\n cursor: pointer;\\n opacity: 1;\\n}\\n.toastify.dialogs.toastify-top {\\n right: 10px;\\n}\\n.toastify.dialogs.toast-with-click {\\n cursor: pointer;\\n}\\n.toastify.dialogs.toast-error {\\n border-left: 3px solid var(--color-error);\\n}\\n.toastify.dialogs.toast-info {\\n border-left: 3px solid var(--color-primary);\\n}\\n.toastify.dialogs.toast-warning {\\n border-left: 3px solid var(--color-warning);\\n}\\n.toastify.dialogs.toast-success,\\n.toastify.dialogs.toast-undo {\\n border-left: 3px solid var(--color-success);\\n}\\n.theme--dark .toastify.dialogs .toast-close.toast-close:before {\\n background-image: url(\\\"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='16'%20width='16'%3e%3cpath%20d='M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z'%20style='fill-opacity:1;fill:%23ffffff'/%3e%3c/svg%3e\\\");\\n}\\n._file-picker__file-icon_1vgv4_5 {\\n width: 32px;\\n height: 32px;\\n min-width: 32px;\\n min-height: 32px;\\n background-repeat: no-repeat;\\n background-size: contain;\\n display: flex;\\n justify-content: center;\\n}\\ntr.file-picker__row[data-v-6aded0d9] {\\n height: var(--row-height, 50px);\\n}\\ntr.file-picker__row td[data-v-6aded0d9] {\\n cursor: pointer;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-bottom: none;\\n}\\ntr.file-picker__row td.row-checkbox[data-v-6aded0d9] {\\n padding: 0 2px;\\n}\\ntr.file-picker__row td[data-v-6aded0d9]:not(.row-checkbox) {\\n padding-inline: 14px 0;\\n}\\ntr.file-picker__row td.row-size[data-v-6aded0d9] {\\n text-align: end;\\n padding-inline: 0 14px;\\n}\\ntr.file-picker__row td.row-name[data-v-6aded0d9] {\\n padding-inline: 2px 0;\\n}\\n@keyframes gradient-6aded0d9 {\\n 0% {\\n background-position: 0% 50%;\\n }\\n 50% {\\n background-position: 100% 50%;\\n }\\n to {\\n background-position: 0% 50%;\\n }\\n}\\n.loading-row .row-checkbox[data-v-6aded0d9] {\\n text-align: center !important;\\n}\\n.loading-row span[data-v-6aded0d9] {\\n display: inline-block;\\n height: 24px;\\n background: linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker));\\n background-size: 600px 100%;\\n border-radius: var(--border-radius);\\n animation: gradient-6aded0d9 12s ease infinite;\\n}\\n.loading-row .row-wrapper[data-v-6aded0d9] {\\n display: inline-flex;\\n align-items: center;\\n}\\n.loading-row .row-checkbox span[data-v-6aded0d9] {\\n width: 24px;\\n}\\n.loading-row .row-name span[data-v-6aded0d9]:last-of-type {\\n margin-inline-start: 6px;\\n width: 130px;\\n}\\n.loading-row .row-size span[data-v-6aded0d9] {\\n width: 80px;\\n}\\n.loading-row .row-modified span[data-v-6aded0d9] {\\n width: 90px;\\n}\\ntr.file-picker__row[data-v-48df4f27] {\\n height: var(--row-height, 50px);\\n}\\ntr.file-picker__row td[data-v-48df4f27] {\\n cursor: pointer;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-bottom: none;\\n}\\ntr.file-picker__row td.row-checkbox[data-v-48df4f27] {\\n padding: 0 2px;\\n}\\ntr.file-picker__row td[data-v-48df4f27]:not(.row-checkbox) {\\n padding-inline: 14px 0;\\n}\\ntr.file-picker__row td.row-size[data-v-48df4f27] {\\n text-align: end;\\n padding-inline: 0 14px;\\n}\\ntr.file-picker__row td.row-name[data-v-48df4f27] {\\n padding-inline: 2px 0;\\n}\\n.file-picker__row--selected[data-v-48df4f27] {\\n background-color: var(--color-background-dark);\\n}\\n.file-picker__row[data-v-48df4f27]:hover {\\n background-color: var(--color-background-hover);\\n}\\n.file-picker__name-container[data-v-48df4f27] {\\n display: flex;\\n justify-content: start;\\n align-items: center;\\n height: 100%;\\n}\\n.file-picker__file-name[data-v-48df4f27] {\\n padding-inline-start: 6px;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.file-picker__file-extension[data-v-48df4f27] {\\n color: var(--color-text-maxcontrast);\\n min-width: fit-content;\\n}\\n.file-picker__header-preview[data-v-d3c94818] {\\n width: 22px;\\n height: 32px;\\n flex: 0 0 auto;\\n}\\n.file-picker__files[data-v-d3c94818] {\\n margin: 2px;\\n margin-inline-start: 12px;\\n overflow: scroll auto;\\n}\\n.file-picker__files table[data-v-d3c94818] {\\n width: 100%;\\n max-height: 100%;\\n table-layout: fixed;\\n}\\n.file-picker__files th[data-v-d3c94818] {\\n position: sticky;\\n z-index: 1;\\n top: 0;\\n background-color: var(--color-main-background);\\n padding: 2px;\\n}\\n.file-picker__files th .header-wrapper[data-v-d3c94818] {\\n display: flex;\\n}\\n.file-picker__files th.row-checkbox[data-v-d3c94818] {\\n width: 44px;\\n}\\n.file-picker__files th.row-name[data-v-d3c94818] {\\n width: 230px;\\n}\\n.file-picker__files th.row-size[data-v-d3c94818] {\\n width: 100px;\\n}\\n.file-picker__files th.row-modified[data-v-d3c94818] {\\n width: 120px;\\n}\\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue__wrapper {\\n justify-content: start;\\n flex-direction: row-reverse;\\n}\\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue {\\n padding-inline: 16px 4px;\\n}\\n.file-picker__files th.row-size[data-v-d3c94818] .button-vue__wrapper {\\n justify-content: end;\\n}\\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper {\\n color: var(--color-text-maxcontrast);\\n}\\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper .button-vue__text {\\n font-weight: 400;\\n}\\n.file-picker__breadcrumbs[data-v-3bc9efa5] {\\n flex-grow: 0 !important;\\n}\\n.file-picker__side[data-v-e96bec41] {\\n display: flex;\\n flex-direction: column;\\n align-items: stretch;\\n gap: .5rem;\\n min-width: 200px;\\n padding: 2px;\\n overflow: auto;\\n}\\n.file-picker__side[data-v-e96bec41] .button-vue__wrapper {\\n justify-content: start;\\n}\\n.file-picker__filter-input[data-v-e96bec41] {\\n margin-block: 7px;\\n max-width: 260px;\\n}\\n@media (max-width: 736px) {\\n .file-picker__side[data-v-e96bec41] {\\n flex-direction: row;\\n min-width: unset;\\n }\\n}\\n@media (max-width: 512px) {\\n .file-picker__side[data-v-e96bec41] {\\n flex-direction: row;\\n min-width: unset;\\n }\\n .file-picker__filter-input[data-v-e96bec41] {\\n max-width: unset;\\n }\\n}\\n.file-picker__navigation {\\n padding-inline: 8px 2px;\\n}\\n.file-picker__navigation,\\n.file-picker__navigation * {\\n box-sizing: border-box;\\n}\\n.file-picker__navigation .v-select.select {\\n min-width: 220px;\\n}\\n@media (min-width: 513px) and (max-width: 736px) {\\n .file-picker__navigation {\\n gap: 11px;\\n }\\n}\\n@media (max-width: 512px) {\\n .file-picker__navigation {\\n flex-direction: column-reverse !important;\\n }\\n}\\n.file-picker__view[data-v-821451ce] {\\n height: 50px;\\n display: flex;\\n justify-content: start;\\n align-items: center;\\n}\\n.file-picker__view h3[data-v-821451ce] {\\n font-weight: 700;\\n height: fit-content;\\n margin: 0;\\n}\\n.file-picker__main[data-v-821451ce] {\\n box-sizing: border-box;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n min-height: 0;\\n flex: 1;\\n padding-inline: 2px;\\n}\\n.file-picker__main *[data-v-821451ce] {\\n box-sizing: border-box;\\n}\\n[data-v-821451ce] .file-picker {\\n height: min(80vh, 800px) !important;\\n}\\n@media (max-width: 512px) {\\n [data-v-821451ce] .file-picker {\\n height: calc(100% - 16px - var(--default-clickable-area)) !important;\\n }\\n}\\n[data-v-821451ce] .file-picker__content {\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.upload-picker[data-v-af4c69fa] {\n display: inline-flex;\n align-items: center;\n height: 44px;\n}\n.upload-picker__progress[data-v-af4c69fa] {\n width: 200px;\n max-width: 0;\n transition: max-width var(--animation-quick) ease-in-out;\n margin-top: 8px;\n}\n.upload-picker__progress p[data-v-af4c69fa] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.upload-picker--uploading .upload-picker__progress[data-v-af4c69fa] {\n max-width: 200px;\n margin-right: 20px;\n margin-left: 8px;\n}\n.upload-picker--paused .upload-picker__progress[data-v-af4c69fa] {\n animation: breathing-af4c69fa 3s ease-out infinite normal;\n}\n@keyframes breathing-af4c69fa {\n 0% {\n opacity: .5;\n }\n 25% {\n opacity: 1;\n }\n 60% {\n opacity: .5;\n }\n to {\n opacity: .5;\n }\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/upload/dist/assets/index-7900cbe9.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,YAAY;AACd;AACA;EACE,YAAY;EACZ,YAAY;EACZ,wDAAwD;EACxD,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,yDAAyD;AAC3D;AACA;EACE;IACE,WAAW;EACb;EACA;IACE,UAAU;EACZ;EACA;IACE,WAAW;EACb;EACA;IACE,WAAW;EACb;AACF\",\"sourcesContent\":[\".upload-picker[data-v-af4c69fa] {\\n display: inline-flex;\\n align-items: center;\\n height: 44px;\\n}\\n.upload-picker__progress[data-v-af4c69fa] {\\n width: 200px;\\n max-width: 0;\\n transition: max-width var(--animation-quick) ease-in-out;\\n margin-top: 8px;\\n}\\n.upload-picker__progress p[data-v-af4c69fa] {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.upload-picker--uploading .upload-picker__progress[data-v-af4c69fa] {\\n max-width: 200px;\\n margin-right: 20px;\\n margin-left: 8px;\\n}\\n.upload-picker--paused .upload-picker__progress[data-v-af4c69fa] {\\n animation: breathing-af4c69fa 3s ease-out infinite normal;\\n}\\n@keyframes breathing-af4c69fa {\\n 0% {\\n opacity: .5;\\n }\\n 25% {\\n opacity: 1;\\n }\\n 60% {\\n opacity: .5;\\n }\\n to {\\n opacity: .5;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.breadcrumb[data-v-1c4866bc]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-1c4866bc] a{cursor:pointer !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-46caa8f8]{display:flex;align-items:center;justify-content:center;width:100%;min-height:113px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-46caa8f8]{margin-left:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-46caa8f8]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,gBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 55px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-left: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;left:-9999px;display:flex;overflow:hidden;align-items:center;height:44px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon{display:flex;overflow:hidden;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-right:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon{margin-top:6px;margin-left:-26px}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon+.files-list__row-icon{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,0EAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,iBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAGA,8EACC,cA9CU,CA+CV,iBAAA,CACA,oGACC,eAAA,CAKF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 32px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tleft: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\tpadding: 6px 12px;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-right: 12px;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t.files-list__row-icon + .files-list__row-icon {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-left: $stack-shift - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-77afa6dc]{color:#a08b00;min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-77afa6dc] svg{width:26px !important;height:26px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-77afa6dc] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,aAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: #a08b00;\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 26px !important;\\n\\t\\t\\theight: 26px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh), 0px) !important}[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,6EAAA,CAGA,kEACC,0FAAA,CAGD,kEACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\n[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-2fa8d0d9] .button-vue--icon-and-text .button-vue__text{color:var(--color-primary-element)}[data-v-2fa8d0d9] .button-vue--icon-and-text .button-vue__icon{color:var(--color-primary-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAEC,+DACC,kCAAA,CAED,+DACC,kCAAA\",\"sourcesContent\":[\"\\n:deep(.button-vue--icon-and-text, .files-list__row-action-sharing-status) {\\n\\t.button-vue__text {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\t.button-vue__icon {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-a85bde20]{margin-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-a85bde20]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,mBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n\\n\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-952162c2]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-952162c2]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-d939292c]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-2dd1845e]{margin:0 calc(var(--cell-margin)*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-2dd1845e]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-2dd1845e]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-2dd1845e]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-2dd1845e],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-2dd1845e],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-2dd1845e],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-2dd1845e]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,oCAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-48fb0b13]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;position:relative;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-48fb0b13] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-48fb0b13] tbody tr{contain:strict}.files-list[data-v-48fb0b13] tbody tr:hover,.files-list[data-v-48fb0b13] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-48fb0b13] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-48fb0b13] .files-list__table{display:block}.files-list[data-v-48fb0b13] .files-list__table.files-list__table--with-thead-overlay{margin-top:calc(-1*var(--row-height))}.files-list[data-v-48fb0b13] .files-list__thead-overlay{position:sticky;top:0;margin-left:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-bottom:1px solid var(--color-border);height:var(--row-height)}.files-list[data-v-48fb0b13] .files-list__thead,.files-list[data-v-48fb0b13] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-48fb0b13] .files-list__thead{position:sticky;z-index:10;top:0}.files-list[data-v-48fb0b13] .files-list__tfoot{min-height:300px}.files-list[data-v-48fb0b13] tr{position:relative;display:flex;align-items:center;width:100%;user-select:none;border-bottom:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-48fb0b13] td,.files-list[data-v-48fb0b13] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-48fb0b13] td span,.files-list[data-v-48fb0b13] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-48fb0b13] .files-list__row--failed{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-48fb0b13] .files-list__row-checkbox{justify-content:center}.files-list[data-v-48fb0b13] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-48fb0b13] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-48fb0b13] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-48fb0b13] .files-list__row:hover,.files-list[data-v-48fb0b13] .files-list__row:focus,.files-list[data-v-48fb0b13] .files-list__row:active,.files-list[data-v-48fb0b13] .files-list__row--active,.files-list[data-v-48fb0b13] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-48fb0b13] .files-list__row:hover>*,.files-list[data-v-48fb0b13] .files-list__row:focus>*,.files-list[data-v-48fb0b13] .files-list__row:active>*,.files-list[data-v-48fb0b13] .files-list__row--active>*,.files-list[data-v-48fb0b13] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-48fb0b13] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-48fb0b13] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-48fb0b13] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-48fb0b13] .files-list__row-icon *{cursor:pointer}.files-list[data-v-48fb0b13] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-48fb0b13] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-icon,.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-48fb0b13] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);object-fit:contain;object-position:center}.files-list[data-v-48fb0b13] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-48fb0b13] .files-list__row-icon-favorite{position:absolute;top:0px;right:-10px}.files-list[data-v-48fb0b13] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.5);max-width:calc(var(--icon-preview-size)*.5);color:var(--color-primary-element-text);margin-top:2px}.files-list[data-v-48fb0b13] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-48fb0b13] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-48fb0b13] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%;min-width:0}.files-list[data-v-48fb0b13] .files-list__row-name a:focus-visible{outline:none}.files-list[data-v-48fb0b13] .files-list__row-name a:focus .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-48fb0b13] .files-list__row-name a:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-48fb0b13] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:5px 10px;margin-left:-10px;display:inline-flex}.files-list[data-v-48fb0b13] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-48fb0b13] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-48fb0b13] .files-list__row-rename input{width:100%;margin-left:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-48fb0b13] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-48fb0b13] .files-list__row-actions{width:auto}.files-list[data-v-48fb0b13] .files-list__row-actions~td,.files-list[data-v-48fb0b13] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-48fb0b13] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-48fb0b13] .files-list__row-action--inline{margin-right:7px}.files-list[data-v-48fb0b13] .files-list__row-mtime,.files-list[data-v-48fb0b13] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-48fb0b13] .files-list__row-size{width:calc(var(--row-height)*1.5);justify-content:flex-end}.files-list[data-v-48fb0b13] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-48fb0b13] .files-list__row-column-custom{width:calc(var(--row-height)*2)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,iBAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAIC,oCACC,mBAAA,CACA,0BAAA,CACA,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAGA,uCACC,cAAA,CACA,0FAEC,6CAAA,CAMH,kDACC,YAAA,CACA,qBAAA,CAGD,iDACC,aAAA,CAEA,uFAEC,qCAAA,CAIF,yDAEC,eAAA,CACA,KAAA,CAEA,6BAAA,CAEA,UAAA,CAEA,YAAA,CACA,kBAAA,CAGA,6CAAA,CACA,2CAAA,CACA,wBAAA,CAGD,kGAEC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,6CAAA,CAKD,iDAEC,eAAA,CACA,UAAA,CACA,KAAA,CAID,iDACC,gBAAA,CAGD,iCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,gBAAA,CACA,2CAAA,CACA,qBAAA,CACA,gBAAA,CACA,wBAAA,CAGD,kEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,4EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CACA,6BAAA,CAGD,wDACC,sBAAA,CAEA,+EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,kHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,4GACC,mBAAA,CAMF,gRAEC,8CAAA,CAGA,gDAAA,CACA,0RACC,wCAAA,CAID,2aACC,oCAAA,CAIF,2DAEC,mBAAA,CAKF,oDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAGA,sDACC,cAAA,CAGD,yDACC,0BAAA,CAEA,iGACC,8BAAA,CACA,+BAAA,CAID,+IAEC,WAAA,CACA,uJACC,0CAAA,CACA,2CAAA,CAKH,4DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CAEA,kBAAA,CACA,sBAAA,CAGA,uGACC,oCAAA,CAKF,6DACC,iBAAA,CACA,OAAA,CACA,WAAA,CAID,4DACC,iBAAA,CACA,4CAAA,CACA,2CAAA,CACA,uCAAA,CAEA,cAAA,CAGA,kEACC,4BAAA,CACA,uCAAA,CACA,kBAAA,CAMH,oDAEC,eAAA,CAEA,aAAA,CAEA,sDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAEA,WAAA,CAGA,oEACC,YAAA,CAID,uFACC,mDAAA,CACA,kBAAA,CAED,2GACC,uBAAA,CAIF,+EACC,4BAAA,CAEA,gBAAA,CACA,iBAAA,CAEA,mBAAA,CAGD,8EACC,mCAAA,CAEA,gBAAA,CAKF,sDACC,UAAA,CACA,eAAA,CACA,4DACC,UAAA,CAEA,gBAAA,CACA,eAAA,CACA,gBAAA,CAEA,oEAEC,+BAAA,CACA,SAAA,CAKH,uDAEC,UAAA,CAGA,oHAEC,2BAAA,CAIA,gFAEC,kBAAA,CAKH,8DACC,gBAAA,CAGD,yGAEC,mCAAA,CAED,oDACC,iCAAA,CAEA,wBAAA,CAGD,qDACC,+BAAA,CAGD,6DACC,+BAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tposition: relative;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-top: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-left: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__thead {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t}\\n\\n\\t\\t// Table footer\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tmin-height: 300px;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: left;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-right: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tright: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.5);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.5);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\ta {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-left: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-error);\\n\\t\\t\\t\\t\\tcolor: red;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-right: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 1.5);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tbody.files-list__tbody.files-list__tbody--grid{--half-clickable-area: calc(var(--clickable-area) / 2);--row-width: 160px;--row-height: calc(var(--row-width) - var(--half-clickable-area));--icon-preview-size: calc(var(--row-width) - var(--clickable-area));--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));grid-gap:15px;row-gap:15px;align-content:center;align-items:center;justify-content:space-around;justify-items:center}tbody.files-list__tbody.files-list__tbody--grid tr{width:var(--row-width);height:calc(var(--row-height) + var(--clickable-area));border:none;border-radius:var(--border-radius)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox{position:absolute;z-index:9;top:0;left:0;overflow:hidden;width:var(--clickable-area);height:var(--clickable-area);border-radius:var(--half-clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-icon-favorite{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name{display:grid;justify-content:stretch;width:100%;height:100%;grid-auto-rows:var(--row-height) var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name span.files-list__row-icon{width:100%;height:100%;padding-top:var(--half-clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name a.files-list__row-name-link{width:calc(100% - var(--clickable-area));height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name .files-list__row-name-text{margin:0;padding-right:0}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-actions{position:absolute;right:0;bottom:0;width:var(--clickable-area);height:var(--clickable-area)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,gDACC,sDAAA,CACA,kBAAA,CAEA,iEAAA,CACA,mEAAA,CACA,uBAAA,CAEA,YAAA,CACA,yDAAA,CACA,aAAA,CACA,YAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,mDACC,sBAAA,CACA,sDAAA,CACA,WAAA,CACA,kCAAA,CAID,0EACC,iBAAA,CACA,SAAA,CACA,KAAA,CACA,MAAA,CACA,eAAA,CACA,2BAAA,CACA,4BAAA,CACA,wCAAA,CAID,+EACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,sEACC,YAAA,CACA,uBAAA,CACA,UAAA,CACA,WAAA,CACA,sDAAA,CAEA,gGACC,UAAA,CACA,WAAA,CAGA,sCAAA,CAGD,kGAEC,wCAAA,CACA,4BAAA,CAGD,iGACC,QAAA,CACA,eAAA,CAIF,yEACC,iBAAA,CACA,OAAA,CACA,QAAA,CACA,2BAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n// Grid mode\\ntbody.files-list__tbody.files-list__tbody--grid {\\n\\t--half-clickable-area: calc(var(--clickable-area) / 2);\\n\\t--row-width: 160px;\\n\\t// We use half of the clickable area as visual balance margin\\n\\t--row-height: calc(var(--row-width) - var(--half-clickable-area));\\n\\t--icon-preview-size: calc(var(--row-width) - var(--clickable-area));\\n\\t--checkbox-padding: 0px;\\n\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\tgrid-gap: 15px;\\n\\trow-gap: 15px;\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: calc(var(--row-height) + var(--clickable-area));\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t\\tborder-radius: var(--half-clickable-area);\\n\\t}\\n\\n\\t// Star icon in the top right\\n\\t.files-list__row-icon-favorite {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tright: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: grid;\\n\\t\\tjustify-content: stretch;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tgrid-auto-rows: var(--row-height) var(--clickable-area);\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Visual balance, we use half of the clickable area\\n\\t\\t\\t// as a margin around the preview\\n\\t\\t\\tpadding-top: var(--half-clickable-area);\\n\\t\\t}\\n\\n\\t\\ta.files-list__row-name-link {\\n\\t\\t\\t// Minus action menu\\n\\t\\t\\twidth: calc(100% - var(--clickable-area));\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding-right: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota--not-unlimited[data-v-18ceb3ce] .app-navigation-entry__name{margin-top:-6px}.app-navigation-entry__settings-quota progress[data-v-18ceb3ce]{position:absolute;bottom:12px;margin-left:44px;width:calc(100% - 44px - 22px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,kGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__name {\\n\\t\\tmargin-top: -6px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 12px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-b2731ace]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative}.files-list__header[data-v-b2731ace]{display:flex;align-items:center;flex:0 0;margin:4px 4px 4px 50px;max-width:100%}.files-list__header>*[data-v-b2731ace]{flex:0 0}.files-list__header-share-button[data-v-b2731ace]{color:var(--color-text-maxcontrast) !important}.files-list__header-share-button--shared[data-v-b2731ace]{color:var(--color-main-text) !important}.files-list__refresh-icon[data-v-b2731ace]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-b2731ace]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,iBAAA,CAOA,qCACC,YAAA,CACA,kBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,cAAA,CACA,uCAGC,QAAA,CAGD,kDACC,8CAAA,CACA,0DACC,uCAAA,CAKH,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\tposition: relative;\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\tmax-width: 100%;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\n\\t\\t&-share-button {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t&--shared {\\n\\t\\t\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-3f2914e1] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation[data-v-3f2914e1] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-3f2914e1]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-3f2914e1]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation::v-deep .app-navigation-entry.active .button-vue.icon-collapse:not(:hover) {\\n\\tcolor: var(--color-primary-element-text);\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.setting-link[data-v-6d63c120]:hover{text-decoration:underline}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-ps\": 20315,\n\t\"./ar-ps.js\": 20315,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku-kmr\": 90563,\n\t\"./ku-kmr.js\": 90563,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;",";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // \n SCRIPT: S++, // ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=bcf30078\"\nimport script from \"./Cog.vue?vue&type=script&lang=js\"\nexport * from \"./Cog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function (...args) {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n },\n actions: {\n /**\n * Update the view config local store\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n */\n async update(view, key, value) {\n axios.put(generateUrl(`/apps/files/api/v1/views/${view}/${key}`), {\n value,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n },\n },\n });\n const viewConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPie.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ChartPie.vue?vue&type=template&id=44de6464\"\nimport script from \"./ChartPie.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPie.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,2V22C5.9,21.5 2,17.2 2,12C2,6.8 5.9,2.5 11,2M13,2V11H22C21.5,6.2 17.8,2.5 13,2M13,13V22C17.7,21.5 21.5,17.8 22,13H13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=18ceb3ce&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=18ceb3ce&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=18ceb3ce&scoped=true\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=18ceb3ce&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18ceb3ce\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"name\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"name\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.sort_favorites_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_favorites_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort favorites first'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.sort_folders_first},on:{\"update:checked\":function($event){return _vm.setConfig('sort_folders_first', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Sort folders before files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.enableGridView)?_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.grid_view},on:{\"update:checked\":function($event){return _vm.setConfig('grid_view', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Enable the grid view'))+\"\\n\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"name\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"name\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"label\":_vm.t('files', 'WebDAV URL'),\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Clipboard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Clipboard.vue?vue&type=template&id=0e008e34\"\nimport script from \"./Clipboard.vue?vue&type=script&lang=js\"\nexport * from \"./Clipboard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon clipboard-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,3H14.82C14.4,1.84 13.3,1 12,1C10.7,1 9.6,1.84 9.18,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M12,3A1,1 0 0,1 13,4A1,1 0 0,1 12,5A1,1 0 0,1 11,4A1,1 0 0,1 12,3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=61d69eae\"\nimport script from \"./Setting.vue?vue&type=script&lang=js\"\nexport * from \"./Setting.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n grid_view: false,\n});\nexport const useUserConfigStore = function (...args) {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n },\n },\n });\n const userConfigStore = store(...args);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=6d63c120&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=6d63c120&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=6d63c120&scoped=true\"\nimport script from \"./Settings.vue?vue&type=script&lang=js\"\nexport * from \"./Settings.vue?vue&type=script&lang=js\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=6d63c120&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d63c120\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_vm.t('files', 'Files')},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"exact\":_vm.useExactRouteMatching(view),\"icon\":view.iconClass,\"name\":view.name,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact-path\":true,\"icon\":child.iconClass,\"name\":child.name,\"to\":_vm.generateToNavigation(child)}},[(child.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":child.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"name\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=3f2914e1&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=3f2914e1&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=3f2914e1&scoped=true\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=3f2914e1&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f2914e1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.canShare && _vm.filesListWidth >= 512)?_c('NcButton',{staticClass:\"files-list__header-share-button\",class:{ 'files-list__header-share-button--shared': _vm.shareButtonType },attrs:{\"aria-label\":_vm.shareButtonLabel,\"title\":_vm.shareButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.shareButtonType === _vm.Type.SHARE_TYPE_LINK)?_c('LinkIcon'):_c('AccountPlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2969853559)}):_vm._e(),_vm._v(\" \"),(!_vm.canUpload || _vm.isQuotaExceeded)?_c('NcButton',{staticClass:\"files-list__header-upload-button--disabled\",attrs:{\"aria-label\":_vm.cantUploadLabel,\"title\":_vm.cantUploadLabel,\"disabled\":true,\"type\":\"secondary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2953566425)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Add'))+\"\\n\\t\\t\\t\\t\")]):(_vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"content\":_vm.dirContents,\"destination\":_vm.currentFolder,\"multiple\":true},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.filesListWidth >= 512 && _vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"type\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e(),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":_vm.t('files', 'Go to the previous folder'),\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView.icon}})]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * natural-orderby v3.0.2\n *\n * Copyright (c) Olaf Ennen\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar compareNumbers = function compareNumbers(numberA, numberB) {\n if (numberA < numberB) {\n return -1;\n }\n if (numberA > numberB) {\n return 1;\n }\n return 0;\n};\n\nvar compareUnicode = function compareUnicode(stringA, stringB) {\n var result = stringA.localeCompare(stringB);\n return result ? result / Math.abs(result) : 0;\n};\n\nvar RE_NUMBERS = /(^0x[\\da-fA-F]+$|^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?!\\.\\d+)(?=\\D|\\s|$))|\\d+)/g;\nvar RE_LEADING_OR_TRAILING_WHITESPACES = /^\\s+|\\s+$/g; // trim pre-post whitespace\nvar RE_WHITESPACES = /\\s+/g; // normalize all whitespace to single ' ' character\nvar RE_INT_OR_FLOAT = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/; // identify integers and floats\nvar RE_DATE = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[/-]\\d{1,4}[/-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/; // identify date strings\nvar RE_LEADING_ZERO = /^0+[1-9]{1}[0-9]*$/;\n// eslint-disable-next-line no-control-regex\nvar RE_UNICODE_CHARACTERS = /[^\\x00-\\x80]/;\n\nvar stringCompare = function stringCompare(stringA, stringB) {\n if (stringA < stringB) {\n return -1;\n }\n if (stringA > stringB) {\n return 1;\n }\n return 0;\n};\n\nvar compareChunks = function compareChunks(chunksA, chunksB) {\n var lengthA = chunksA.length;\n var lengthB = chunksB.length;\n var size = Math.min(lengthA, lengthB);\n for (var i = 0; i < size; i++) {\n var chunkA = chunksA[i];\n var chunkB = chunksB[i];\n if (chunkA.normalizedString !== chunkB.normalizedString) {\n if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) {\n // empty strings have lowest value\n return chunkA.normalizedString === '' ? -1 : 1;\n }\n if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) {\n // compare numbers\n var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber);\n if (result === 0) {\n // compare string value, if parsed numbers are equal\n // Example:\n // chunkA = { parsedNumber: 1, normalizedString: \"001\" }\n // chunkB = { parsedNumber: 1, normalizedString: \"01\" }\n // chunkA.parsedNumber === chunkB.parsedNumber\n // chunkA.normalizedString < chunkB.normalizedString\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n return result;\n } else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) {\n // number < string\n return chunkA.parsedNumber !== undefined ? -1 : 1;\n } else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString)) {\n // use locale comparison only if one of the chunks contains unicode characters\n return compareUnicode(chunkA.normalizedString, chunkB.normalizedString);\n } else {\n // use common string comparison for performance reason\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n }\n }\n // if the chunks are equal so far, the one which has more chunks is greater than the other one\n if (lengthA > size || lengthB > size) {\n return lengthA <= size ? -1 : 1;\n }\n return 0;\n};\n\nvar compareOtherTypes = function compareOtherTypes(valueA, valueB) {\n if (!valueA.chunks ? valueB.chunks : !valueB.chunks) {\n return !valueA.chunks ? 1 : -1;\n }\n if (valueA.isNaN ? !valueB.isNaN : valueB.isNaN) {\n return valueA.isNaN ? -1 : 1;\n }\n if (valueA.isSymbol ? !valueB.isSymbol : valueB.isSymbol) {\n return valueA.isSymbol ? -1 : 1;\n }\n if (valueA.isObject ? !valueB.isObject : valueB.isObject) {\n return valueA.isObject ? -1 : 1;\n }\n if (valueA.isArray ? !valueB.isArray : valueB.isArray) {\n return valueA.isArray ? -1 : 1;\n }\n if (valueA.isFunction ? !valueB.isFunction : valueB.isFunction) {\n return valueA.isFunction ? -1 : 1;\n }\n if (valueA.isNull ? !valueB.isNull : valueB.isNull) {\n return valueA.isNull ? -1 : 1;\n }\n return 0;\n};\n\nvar compareValues = function compareValues(valueA, valueB) {\n if (valueA.value === valueB.value) {\n return 0;\n }\n if (valueA.parsedNumber !== undefined && valueB.parsedNumber !== undefined) {\n return compareNumbers(valueA.parsedNumber, valueB.parsedNumber);\n }\n if (valueA.chunks && valueB.chunks) {\n return compareChunks(valueA.chunks, valueB.chunks);\n }\n return compareOtherTypes(valueA, valueB);\n};\n\nvar normalizeAlphaChunk = function normalizeAlphaChunk(chunk) {\n return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n};\n\nvar parseNumber = function parseNumber(value) {\n if (value.length !== 0) {\n var parsedNumber = Number(value);\n if (!Number.isNaN(parsedNumber)) {\n return parsedNumber;\n }\n }\n return undefined;\n};\n\nvar normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) {\n if (RE_INT_OR_FLOAT.test(chunk)) {\n // don´t parse a number, if there´s a preceding decimal point\n // to keep significance\n // e.g. 1.0020, 1.020\n if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') {\n return parseNumber(chunk) || 0;\n }\n }\n return undefined;\n};\n\nvar createChunkMap = function createChunkMap(chunk, index, chunks) {\n return {\n parsedNumber: normalizeNumericChunk(chunk, index, chunks),\n normalizedString: normalizeAlphaChunk(chunk)\n };\n};\n\nvar createChunks = function createChunks(value) {\n return value.replace(RE_NUMBERS, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n};\n\nvar createChunkMaps = function createChunkMaps(value) {\n var chunksMaps = createChunks(value).map(createChunkMap);\n return chunksMaps;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar isNaN = function isNaN(value) {\n return Number.isNaN(value) || value instanceof Number && Number.isNaN(value.valueOf());\n};\n\nvar isNull = function isNull(value) {\n return value === null;\n};\n\nvar isObject = function isObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Number) && !(value instanceof String) && !(value instanceof Boolean) && !(value instanceof Date);\n};\n\nvar isSymbol = function isSymbol(value) {\n return typeof value === 'symbol';\n};\n\nvar isUndefined = function isUndefined(value) {\n return value === undefined;\n};\n\nvar parseDate = function parseDate(value) {\n try {\n var parsedDate = Date.parse(value);\n if (!Number.isNaN(parsedDate)) {\n if (RE_DATE.test(value)) {\n return parsedDate;\n }\n }\n return undefined;\n } catch (_unused) {\n return undefined;\n }\n};\n\nvar numberify = function numberify(value) {\n var parsedNumber = parseNumber(value);\n if (parsedNumber !== undefined) {\n return parsedNumber;\n }\n return parseDate(value);\n};\n\nvar stringify = function stringify(value) {\n if (typeof value === 'boolean' || value instanceof Boolean) {\n return Number(value).toString();\n }\n if (typeof value === 'number' || value instanceof Number) {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.getTime().toString();\n }\n if (typeof value === 'string' || value instanceof String) {\n return value.toLowerCase().replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n }\n return '';\n};\n\nvar getMappedValueRecord = function getMappedValueRecord(value) {\n if (typeof value === 'string' || value instanceof String || (typeof value === 'number' || value instanceof Number) && !isNaN(value) || typeof value === 'boolean' || value instanceof Boolean || value instanceof Date) {\n var stringValue = stringify(value);\n var parsedNumber = numberify(stringValue);\n var chunks = createChunkMaps(parsedNumber ? \"\" + parsedNumber : stringValue);\n return {\n parsedNumber: parsedNumber,\n chunks: chunks,\n value: value\n };\n }\n return {\n isArray: Array.isArray(value),\n isFunction: isFunction(value),\n isNaN: isNaN(value),\n isNull: isNull(value),\n isObject: isObject(value),\n isSymbol: isSymbol(value),\n isUndefined: isUndefined(value),\n value: value\n };\n};\n\nvar baseCompare = function baseCompare(options) {\n return function (valueA, valueB) {\n var a = getMappedValueRecord(valueA);\n var b = getMappedValueRecord(valueB);\n var result = compareValues(a, b);\n return result * (options.order === 'desc' ? -1 : 1);\n };\n};\n\nvar isValidOrder = function isValidOrder(value) {\n return typeof value === 'string' && (value === 'asc' || value === 'desc');\n};\nvar getOptions = function getOptions(customOptions) {\n var order = 'asc';\n if (typeof customOptions === 'string' && isValidOrder(customOptions)) {\n order = customOptions;\n } else if (customOptions && typeof customOptions === 'object' && customOptions.order && isValidOrder(customOptions.order)) {\n order = customOptions.order;\n }\n return {\n order: order\n };\n};\n\n/**\n * Creates a compare function that defines the natural sort order considering\n * the given `options` which may be passed to [`Array.prototype.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n */\nfunction compare(options) {\n var validatedOptions = getOptions(options);\n return baseCompare(validatedOptions);\n}\n\nvar compareMultiple = function compareMultiple(recordA, recordB, orders) {\n var indexA = recordA.index,\n valuesA = recordA.values;\n var indexB = recordB.index,\n valuesB = recordB.values;\n var length = valuesA.length;\n var ordersLength = orders.length;\n for (var i = 0; i < length; i++) {\n var order = i < ordersLength ? orders[i] : null;\n if (order && typeof order === 'function') {\n var result = order(valuesA[i].value, valuesB[i].value);\n if (result) {\n return result;\n }\n } else {\n var _result = compareValues(valuesA[i], valuesB[i]);\n if (_result) {\n return _result * (order === 'desc' ? -1 : 1);\n }\n }\n }\n return indexA - indexB;\n};\n\nvar createIdentifierFn = function createIdentifierFn(identifier) {\n if (typeof identifier === 'function') {\n // identifier is already a lookup function\n return identifier;\n }\n return function (value) {\n if (Array.isArray(value)) {\n var index = Number(identifier);\n if (Number.isInteger(index)) {\n return value[index];\n }\n } else if (value && typeof value === 'object') {\n var result = Object.getOwnPropertyDescriptor(value, identifier);\n return result == null ? void 0 : result.value;\n }\n return value;\n };\n};\n\nvar getElementByIndex = function getElementByIndex(collection, index) {\n return collection[index];\n};\n\nvar getValueByIdentifier = function getValueByIdentifier(value, getValue) {\n return getValue(value);\n};\n\nvar baseOrderBy = function baseOrderBy(collection, identifiers, orders) {\n var identifierFns = identifiers.length ? identifiers.map(createIdentifierFn) : [function (value) {\n return value;\n }];\n\n // temporary array holds elements with position and sort-values\n var mappedCollection = collection.map(function (element, index) {\n var values = identifierFns.map(function (identifier) {\n return getValueByIdentifier(element, identifier);\n }).map(getMappedValueRecord);\n return {\n index: index,\n values: values\n };\n });\n\n // iterate over values and compare values until a != b or last value reached\n mappedCollection.sort(function (recordA, recordB) {\n return compareMultiple(recordA, recordB, orders);\n });\n return mappedCollection.map(function (element) {\n return getElementByIndex(collection, element.index);\n });\n};\n\nvar getIdentifiers = function getIdentifiers(identifiers) {\n if (!identifiers) {\n return [];\n }\n var identifierList = !Array.isArray(identifiers) ? [identifiers] : [].concat(identifiers);\n if (identifierList.some(function (identifier) {\n return typeof identifier !== 'string' && typeof identifier !== 'number' && typeof identifier !== 'function';\n })) {\n return [];\n }\n return identifierList;\n};\n\nvar getOrders = function getOrders(orders) {\n if (!orders) {\n return [];\n }\n var orderList = !Array.isArray(orders) ? [orders] : [].concat(orders);\n if (orderList.some(function (order) {\n return order !== 'asc' && order !== 'desc' && typeof order !== 'function';\n })) {\n return [];\n }\n return orderList;\n};\n\n/**\n * Creates an array of elements, natural sorted by specified identifiers and\n * the corresponding sort orders. This method implements a stable sort\n * algorithm, which means the original sort order of equal elements is\n * preserved.\n */\nfunction orderBy(collection, identifiers, orders) {\n if (!collection || !Array.isArray(collection)) {\n return [];\n }\n var validatedIdentifiers = getIdentifiers(identifiers);\n var validatedOrders = getOrders(orders);\n return baseOrderBy(collection, validatedIdentifiers, validatedOrders);\n}\n\nexport { compare, orderBy };\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=03d22f04\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=98f97aee\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGrid.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ViewGrid.vue?vue&type=template&id=6ca550f9\"\nimport script from \"./ViewGrid.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGrid.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,11H11V3H3M3,21H11V13H3M13,21H21V13H13M13,3V11H21V3\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, View, FileAction, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: node.fileid }, { dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useFilesStore = function (...args) {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by id\n */\n getNode: (state) => (id) => state.files[id],\n /**\n * Get a list of files or folders by their IDs\n * Does not return undefined values\n */\n getNodes: (state) => (ids) => ids\n .map(id => state.files[id])\n .filter(Boolean),\n /**\n * Get a file or folder by id\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.error('Trying to update/set a node without fileid', node);\n return acc;\n }\n acc[node.fileid] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.fileid) {\n Vue.delete(this.files, node.fileid);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n onCreatedNode(node) {\n this.updateNodes([node]);\n },\n onUpdatedNode(node) {\n this.updateNodes([node]);\n },\n },\n });\n const fileStore = store(...args);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n subscribe('files:node:created', fileStore.onCreatedNode);\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n subscribe('files:node:updated', fileStore.onUpdatedNode);\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport { FileType, Folder, Node, getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport Vue from 'vue';\nimport logger from '../logger';\nimport { useFilesStore } from './files';\nexport const usePathsStore = function (...args) {\n const files = useFilesStore();\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.fileid);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n fileid: node.fileid,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n if (node.dirname === '/') {\n const root = files.getRoot(service);\n if (!root._children) {\n Vue.set(root, '_children', []);\n }\n root._children.push(node.fileid);\n return;\n }\n // If the folder doesn't exists yet, it will be\n // fetched later and its children updated anyway.\n if (this.paths[service][node.dirname]) {\n const parentId = this.paths[service][node.dirname];\n const parentFolder = files.getNode(parentId);\n logger.debug('Path already exists, updating children', { parentFolder, node });\n if (!parentFolder) {\n logger.error('Parent folder not found', { parentId });\n return;\n }\n if (!parentFolder._children) {\n Vue.set(parentFolder, '_children', []);\n }\n parentFolder._children.push(node.fileid);\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n // TODO: watch folders to update paths?\n subscribe('files:node:created', pathsStore.onCreatedNode);\n // subscribe('files:node:deleted', pathsStore.onDeletedNode)\n // subscribe('files:node:moved', pathsStore.onMovedNode)\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","import { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","import { defineStore } from 'pinia';\nimport { getUploader } from '@nextcloud/upload';\nlet uploader;\nexport const useUploaderStore = function (...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n};\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=69a49b0f\"\nimport script from \"./Home.vue?vue&type=script&lang=js\"\nexport * from \"./Home.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon home-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=1c4866bc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=1c4866bc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=1c4866bc&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=1c4866bc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c4866bc\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport { basename, extname } from 'path';\n// TODO: move to @nextcloud/files\n/**\n * Create an unique file name\n * @param name The initial name to use\n * @param otherNames Other names that are already used\n * @param suffix A function that takes an index an returns a suffix to add, defaults to '(index)'\n * @return Either the initial name, if unique, or the name with the suffix so that the name is unique\n */\nexport const getUniqueName = (name, otherNames, suffix = (n) => `(${n})`) => {\n let newName = name;\n let i = 1;\n while (otherNames.includes(newName)) {\n const ext = extname(name);\n newName = `${basename(name, ext)} ${suffix(i++)}${ext}`;\n }\n return newName;\n};\nexport const encodeFilePath = function (path) {\n const pathSections = (path.startsWith('/') ? path : `/${path}`).split('/');\n let relativePath = '';\n pathSections.forEach((section) => {\n if (section !== '') {\n relativePath += '/' + encodeURIComponent(section);\n }\n });\n return relativePath;\n};\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n const fileCount = nodes.filter(node => node.type === FileType.File).length;\n const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n if (fileCount === 0) {\n return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n }\n else if (folderCount === 0) {\n return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n }\n if (fileCount === 1) {\n return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n }\n if (folderCount === 1) {\n return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n }\n return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.source.attributes.failed)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"display-name\":_vm.displayName,\"extension\":_vm.extension,\"files-list-width\":_vm.filesListWidth,\"nodes\":_vm.nodes,\"source\":_vm.source},on:{\"click\":_vm.execDefaultAction}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"files-list-width\":_vm.filesListWidth,\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('NcDateTime',{attrs:{\"timestamp\":_vm.source.mtime,\"ignore-seconds\":true}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nexport const useRenamingStore = function (...args) {\n const store = defineStore('renaming', {\n state: () => ({\n renamingNode: undefined,\n newName: '',\n }),\n });\n const renamingStore = store(...args);\n // Make sure we only register the listeners once\n if (!renamingStore._initialized) {\n subscribe('files:node:rename', function (node) {\n renamingStore.renamingNode = node;\n renamingStore.newName = node.basename;\n });\n renamingStore._initialized = true;\n }\n return renamingStore;\n};\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=065722db\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=5c04f969\"\nimport script from \"./Folder.vue?vue&type=script&lang=js\"\nexport * from \"./Folder.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=578d5cf6&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=style&index=0&id=578d5cf6&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=578d5cf6\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=578d5cf6&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import DragAndDropPreview from '../components/DragAndDropPreview.vue';\nimport Vue from 'vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\nexport const getDragAndDropPreview = async (nodes) => {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n};\n","\n import API from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../css-loader/dist/cjs.js!./style.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../css-loader/dist/cjs.js!./style.css\";\n export default content && content.locals ? content.locals : undefined;\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport '@nextcloud/dialogs/style.css';\nimport { Permission } from '@nextcloud/files';\nimport PQueue from 'p-queue';\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n/**\n * Get the processing queue\n */\nexport const getQueue = () => {\n if (!queue) {\n queue = new PQueue({ concurrency: 3 });\n }\n return queue;\n};\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\nexport const canMove = (nodes) => {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return (minPermission & Permission.UPDATE) !== 0;\n};\nexport const canDownload = (nodes) => {\n return nodes.every(node => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some(attribute => attribute.scope === 'permissions' && attribute.enabled === false && attribute.key === 'download');\n });\n};\nexport const canCopy = (nodes) => {\n // For now the only restriction is that a shared file\n // cannot be copied if the download is disabled\n return canDownload(nodes);\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport '@nextcloud/dialogs/style.css';\n// eslint-disable-next-line n/no-extraneous-import\nimport { AxiosError } from 'axios';\nimport { basename, join } from 'path';\nimport { emit } from '@nextcloud/event-bus';\nimport { FilePickerClosed, getFilePickerBuilder, showError } from '@nextcloud/dialogs';\nimport { Permission, FileAction, FileType, NodeStatus, davGetClient, davRootPath, davResultToNode, davGetDefaultPropfind } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple.svg?raw';\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move.svg?raw';\nimport { MoveCopyAction, canCopy, canMove, getQueue } from './moveOrCopyActionUtils';\nimport logger from '../logger';\nimport { getUniqueName } from '../utils/fileUtils';\n/**\n * Return the action that is possible for the given nodes\n * @param {Node[]} nodes The nodes to check against\n * @return {MoveCopyAction} The action that is possible for the given nodes\n */\nconst getActionForNodes = (nodes) => {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n * @param {Node} node The node to copy/move\n * @param {Folder} destination The destination to copy/move the node to\n * @param {MoveCopyAction} method The method to use for the copy/move\n * @param {boolean} overwrite Whether to overwrite the destination if it exists\n * @return {Promise} A promise that resolves when the copy/move is done\n */\nexport const handleCopyMoveNodeTo = async (node, destination, method, overwrite = false) => {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && node.dirname === destination.path) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (`${destination.path}/`.startsWith(`${node.path}/`)) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n const queue = getQueue();\n return await queue.add(async () => {\n const copySuffix = (index) => {\n if (index === 1) {\n return t('files', '(copy)'); // TRANSLATORS: Mark a file as a copy of another file\n }\n return t('files', '(copy %n)', undefined, index); // TRANSLATORS: Meaning it is the n'th copy of a file\n };\n try {\n const client = davGetClient();\n const currentPath = join(davRootPath, node.path);\n const destinationPath = join(davRootPath, destination.path);\n if (method === MoveCopyAction.COPY) {\n let target = node.basename;\n // If we do not allow overwriting then find an unique name\n if (!overwrite) {\n const otherNodes = await client.getDirectoryContents(destinationPath);\n target = getUniqueName(node.basename, otherNodes.map((n) => n.basename), copySuffix);\n }\n await client.copyFile(currentPath, join(destinationPath, target));\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(join(destinationPath, target), {\n details: true,\n data: davGetDefaultPropfind(),\n });\n emit('files:node:created', davResultToNode(data));\n }\n }\n else {\n await client.moveFile(currentPath, join(destinationPath, node.basename));\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n if (error instanceof AxiosError) {\n if (error?.response?.status === 412) {\n throw new Error(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error?.response?.status === 423) {\n throw new Error(t('files', 'The files is locked'));\n }\n else if (error?.response?.status === 404) {\n throw new Error(t('files', 'The file does not exist anymore'));\n }\n else if (error.message) {\n throw new Error(error.message);\n }\n }\n logger.debug(error);\n throw new Error();\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n};\n/**\n * Open a file picker for the given action\n * @param {MoveCopyAction} action The action to open the file picker for\n * @param {string} dir The directory to start the file picker in\n * @param {Node[]} nodes The nodes to move/copy\n * @return {Promise} The picked destination\n */\nconst openFilePickerForAction = async (action, dir = '/', nodes) => {\n const fileIDs = nodes.map(node => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We only want to show folders that we can create nodes in\n return (n.permissions & Permission.CREATE) !== 0\n // We don't want to show the current nodes in the file picker\n && !fileIDs.includes(n.fileid);\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir);\n return new Promise((resolve, reject) => {\n filePicker.setButtonFactory((_selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map(node => node.dirname);\n const paths = nodes.map(node => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }) : t('files', 'Copy'),\n type: 'primary',\n icon: CopyIconSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }) : t('files', 'Move'),\n type: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n });\n const picker = filePicker.build();\n picker.pick().catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n reject(new Error(t('files', 'Cancelled move or copy operation')));\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n });\n};\nexport const action = new FileAction({\n id: 'move-copy',\n displayName(nodes) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled(nodes) {\n // We only support moving/copying files within the user folder\n if (!nodes.every(node => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(node, view, dir) {\n const action = getActionForNodes([node]);\n let result;\n try {\n result = await openFilePickerForAction(action, dir, [node]);\n }\n catch (e) {\n logger.error(e);\n return false;\n }\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n if (error instanceof Error && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return null;\n }\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n const action = getActionForNodes(nodes);\n const result = await openFilePickerForAction(action, dir, nodes);\n const promises = nodes.map(async (node) => {\n try {\n await handleCopyMoveNodeTo(node, result.destination, result.action);\n return true;\n }\n catch (error) {\n logger.error(`Failed to ${result.action} node`, { node, error });\n return false;\n }\n });\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n // we let the front handle the error.\n return await Promise.all(promises);\n },\n order: 15,\n});\n","/**\n * @copyright Copyright (c) 2024 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { extname, join } from 'path';\nimport { FileType, Permission, Folder, File as NcFile, NodeStatus, Node, View } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport { Upload, getUploader } from '@nextcloud/upload';\nimport { vOnClickOutside } from '@vueuse/components';\nimport Vue, { defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { handleCopyMoveNodeTo } from '../actions/moveOrCopyAction.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.js';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n filesListWidth: {\n type: Number,\n default: 0,\n },\n },\n data() {\n return {\n loading: '',\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n currentView() {\n return this.$navigation.active;\n },\n currentDir() {\n // Remove any trailing slash but leave root slash\n return (this.$route?.query?.dir?.toString() || '/').replace(/^(.+)\\/$/, '$1');\n },\n currentFileId() {\n return this.$route.params?.fileid || this.$route.query?.fileid || null;\n },\n fileid() {\n return this.source?.fileid;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING;\n },\n extension() {\n if (this.source.attributes?.displayName) {\n return extname(this.source.attributes.displayName);\n }\n return this.source.extension || '';\n },\n displayName() {\n const ext = this.extension;\n const name = (this.source.attributes.displayName\n || this.source.basename);\n // Strip extension from name if defined\n return !ext ? name : name.slice(0, 0 - ext.length);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.fileid && this.selectedFiles.includes(this.fileid);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.filesListWidth < 512;\n },\n isActive() {\n return this.fileid?.toString?.() === this.currentFileId?.toString?.();\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map(fileid => this.filesStore.getNode(fileid));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.fileid && this.draggingFiles.includes(this.fileid)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n // Only reset when opening a new menu\n if (opened) {\n // Reset any right click position override on close\n // Wait for css animation to be done\n const root = this.$root.$el;\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n this.actionsMenuStore.opened = opened ? this.uniqueId.toString() : null;\n },\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n */\n source() {\n this.resetState();\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset loading state\n this.loading = '';\n this.$refs.preview.reset();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n const root = this.$root.$el;\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n root.style.setProperty('--mouse-pos-x', Math.max(contentRect.left, Math.min(event.clientX, event.clientX - 200)) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(contentRect.top, event.clientY - contentRect.top) + 'px');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault();\n window.open(generateUrl('/f/{fileId}', { fileId: this.fileid }));\n return false;\n }\n this.$refs.actions.execDefaultAction(event);\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.([this.source], this.currentView)) {\n sidebarAction.exec(this.source, this.currentView, this.currentDir);\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.fileid)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.fileid]);\n }\n const nodes = this.draggingStore.dragging\n .map(fileid => this.filesStore.getNode(fileid));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.files?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // If another button is pressed, cancel it\n // This allows cancelling the drag with the right click\n if (!this.canDrop || event.button !== 0) {\n return;\n }\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, selection: this.draggingFiles });\n // Check whether we're uploading files\n if (event.dataTransfer?.files\n && event.dataTransfer.files.length > 0) {\n const uploader = getUploader();\n // Check whether the uploader is in the same folder\n // This should never happen™\n if (!uploader.destination.path.startsWith(uploader.destination.path)) {\n logger.error('The current uploader destination is not the same as the current folder');\n showError(t('files', 'An error occurred while uploading. Please try again later.'));\n return;\n }\n logger.debug(`Uploading files to ${this.source.path}`);\n const queue = [];\n for (const file of event.dataTransfer.files) {\n // Because the uploader destination is properly set to the current folder\n // we can just use the basename as the relative path.\n queue.push(uploader.upload(join(this.source.basename, file.name), file));\n }\n const results = await Promise.allSettled(queue);\n const errors = results.filter(result => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return;\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return;\n }\n const nodes = this.draggingFiles.map(fileid => this.filesStore.getNode(fileid));\n nodes.forEach(async (node) => {\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n // TODO: resolve potential conflicts prior and force overwrite\n await handleCopyMoveNodeTo(node, this.source, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE);\n }\n catch (error) {\n logger.error('Error while moving file', { error });\n if (isCopy) {\n showError(t('files', 'Could not copy {file}. {message}', { file: node.basename, message: error.message || '' }));\n }\n else {\n showError(t('files', 'Could not move {file}. {message}', { file: node.basename, message: error.message || '' }));\n }\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (this.draggingFiles.some(fileid => this.selectedFiles.includes(fileid))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const hashCode = function (str) {\n return str.split('').reduce(function (a, b) {\n a = ((a << 5) - a) + b.charCodeAt(0);\n return a & a;\n }, 0);\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=08a118c6\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"current-view\":_vm.currentView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"type\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t[`files-list__row-action--menu`]: _vm.isMenu(action.id)\n\t\t\t},attrs:{\"close-after-click\":!_vm.isMenu(action.id),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isMenu(action.id),\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.mountType === 'shared' && action.id === 'sharing-status' ? '' : _vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(_vm.openedSubmenu))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":false /* never close submenu, just go back */,\"data-cy-files-list-row-action\":action.id,\"title\":action.title?.([_vm.source], _vm.currentView)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChevronRight.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ChevronRight.vue?vue&type=template&id=750bcc07\"\nimport script from \"./ChevronRight.vue?vue&type=script&lang=js\"\nexport * from \"./ChevronRight.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chevron-right-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=670325ac&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=0&id=670325ac&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=670325ac&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=670325ac&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=670325ac&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=670325ac&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=670325ac&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"670325ac\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon'):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"checked\":_vm.isSelected},on:{\"update:checked\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = function (...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=6992c304\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.stopRenaming),expression:\"stopRenaming\"}],staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":true,\"minlength\":1,\"required\":true,\"value\":_vm.newName,\"enterkeyhint\":\"done\"},on:{\"update:value\":function($event){_vm.newName=$event},\"keyup\":[_vm.checkInputValidity,function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}]}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"aria-hidden\":_vm.isRenaming,\"data-cy-files-list-row-name-link\":\"\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\"},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.displayName)}}),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=637facfc\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl && _vm.backgroundFailed !== true)?_c('img',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false},attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":function($event){_vm.backgroundFailed = true},\"load\":function($event){_vm.backgroundFailed = false}}}):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"OverlayIcon\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=5c8d96c6\"\nimport script from \"./File.vue?vue&type=script&lang=js\"\nexport * from \"./File.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=3b29b1d5\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=aa295eae\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Network.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Network.vue?vue&type=template&id=7c7d2907\"\nimport script from \"./Network.vue?vue&type=script&lang=js\"\nexport * from \"./Network.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,3A2,2 0 0,1 19,5V15A2,2 0 0,1 17,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H7C5.89,17 5,16.1 5,15V5A2,2 0 0,1 7,3H17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=4d7171be\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=34d1e782\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=18541dcc\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=77afa6dc&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=style&index=0&id=77afa6dc&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=77afa6dc&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=77afa6dc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77afa6dc\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","/**\n * @copyright Copyright (c) 2023 Louis Chmn \n *\n * @author Louis Chmn \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, registerDavProperty } from '@nextcloud/files';\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param {Node} node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=87d1b8a6\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=6ae0d517\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row\",class:{'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.source.attributes.failed)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"display-name\":_vm.displayName,\"extension\":_vm.extension,\"files-list-width\":_vm.filesListWidth,\"grid-mode\":true,\"nodes\":_vm.nodes,\"source\":_vm.source},on:{\"click\":_vm.execDefaultAction}})],1),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"files-list-width\":_vm.filesListWidth,\"grid-mode\":true,\"loading\":_vm.loading,\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:loading\":function($event){_vm.loading=$event},\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=337076f0\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=0434f153\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=a85bde20&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=style&index=0&id=a85bde20&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=a85bde20&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=a85bde20&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a85bde20\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nimport { Navigation, View } from '@nextcloud/files';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{class:['files-list__column-sort-button', {\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"type\":\"tertiary\"},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=2dd1845e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=2dd1845e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=2dd1845e&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=2dd1845e&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2dd1845e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=952162c2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=style&index=0&id=952162c2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=952162c2&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=952162c2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"952162c2\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue';\nexport default Vue.extend({\n data() {\n return {\n filesListWidth: null,\n };\n },\n mounted() {\n const fileListEl = document.querySelector('#app-content-vue');\n this.filesListWidth = fileListEl?.clientWidth ?? null;\n this.$resizeObserver = new ResizeObserver((entries) => {\n if (entries.length > 0 && entries[0].target === fileListEl) {\n this.filesListWidth = entries[0].contentRect.width;\n }\n });\n this.$resizeObserver.observe(fileListEl);\n },\n beforeDestroy() {\n this.$resizeObserver.disconnect();\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",attrs:{\"data-cy-files-list\":\"\"}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{ 'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'] }},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",class:_vm.gridMode ? 'files-list__tbody--grid' : 'files-list__tbody--list',style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({key, item},i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isReady),expression:\"isReady\"}],staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=6932388d\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list__column files-list__row-actions-batch\"},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.inlineActions,\"menu-name\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=d939292c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=d939292c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=d939292c&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=d939292c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d939292c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":'source',\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t\tfilesListWidth: _vm.filesListWidth,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.sortedHeaders),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=48fb0b13&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=48fb0b13&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=48fb0b13&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=48fb0b13&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=48fb0b13&scoped=true\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=48fb0b13&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=48fb0b13&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48fb0b13\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=547c388d\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 Ferdinand Thiessen \n *\n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { davGetClient, davGetDefaultPropfind, davResultToNode, davRootPath } from '@nextcloud/files';\nimport { emit } from '@nextcloud/event-bus';\nimport { getUploader } from '@nextcloud/upload';\nimport { joinPaths } from '@nextcloud/paths';\nimport { showError } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport logger from '../logger.js';\nexport const handleDrop = async (data) => {\n // TODO: Maybe handle `getAsFileSystemHandle()` in the future\n const uploads = [];\n for (const item of data.items) {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n continue;\n }\n // MDN recommends to try both, as it might be renamed in the future\n const entry = item?.getAsEntry?.() ?? item.webkitGetAsEntry();\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry === null) {\n logger.debug('Could not get FilesystemEntry of item, falling back to file');\n const file = item.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: item.type, kind: item.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n }\n else {\n uploads.push(await handleFileUpload(file));\n }\n }\n else {\n logger.debug('Handle recursive upload', { entry: entry.name });\n // Use Filesystem API\n uploads.push(...await handleRecursiveUpload(entry));\n }\n }\n return uploads;\n};\nconst handleFileUpload = async (file, path = '') => {\n const uploader = getUploader();\n try {\n return await uploader.upload(`${path}${file.name}`, file);\n }\n catch (e) {\n showError(t('files', 'Uploading \"{filename}\" failed', { filename: file.name }));\n throw e;\n }\n};\nconst handleRecursiveUpload = async (entry, path = '') => {\n if (entry.isFile) {\n return [\n await new Promise((resolve, reject) => {\n entry.file(async (file) => resolve(await handleFileUpload(file, path)), (error) => reject(error));\n }),\n ];\n }\n else {\n const directory = entry;\n // TODO: Implement this on `@nextcloud/upload`\n const absolutPath = joinPaths(davRootPath, getUploader().destination.path, path, directory.name);\n logger.debug('Handle directory recursively', { name: directory.name, absolutPath });\n const davClient = davGetClient();\n const dirExists = await davClient.exists(absolutPath);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { absolutPath });\n await davClient.createDirectory(absolutPath, { recursive: true });\n const stat = await davClient.stat(absolutPath, { details: true, data: davGetDefaultPropfind() });\n emit('files:node:created', davResultToNode(stat.data));\n }\n const entries = await readDirectory(directory);\n // sorted so we upload files first before starting next level\n const promises = entries.sort((a) => a.isFile ? -1 : 1)\n .map((file) => handleRecursiveUpload(file, `${path}${directory.name}/`));\n return (await Promise.all(promises)).flat();\n }\n};\n/**\n * Read a directory using Filesystem API\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=46caa8f8&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=style&index=0&id=46caa8f8&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=46caa8f8&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=46caa8f8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46caa8f8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=b2731ace&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=b2731ace&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=b2731ace&scoped=true\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=b2731ace&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b2731ace\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=11e0f2dd\"\nimport script from \"./FilesApp.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport { getNavigation } from '@nextcloud/files';\nimport { getRequestToken } from '@nextcloud/auth';\nimport router from './router/router';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\nimport FilesApp from './FilesApp.vue';\n// @ts-expect-error __webpack_nonce__ is injected by webpack\n__webpack_nonce__ = btoa(getRequestToken());\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nconst Router = new RouterService(router);\nObject.assign(window.OCP.Files, { Router });\n// Init Pinia store\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\n// Init Navigation Service\n// This only works with Vue 2 - with Vue 3 this will not modify the source but return just a oberserver\nconst Navigation = Vue.observable(getNavigation());\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router,\n pinia,\n}).$mount('#content');\n","export default class RouterService {\n _router;\n constructor(router) {\n this._router = router;\n }\n get name() {\n return this._router.currentRoute.name;\n }\n get query() {\n return this._router.currentRoute.query || {};\n }\n get params() {\n return this._router.currentRoute.params || {};\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this._router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this._router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27/%3e%3c/svg%3e\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20height=%2716%27%20width=%2716%27%3e%3cpath%20d=%27M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z%27%20style=%27fill-opacity:1;fill:%23ffffff%27/%3e%3c/svg%3e\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 Julius Härtl \n *\n * @author Julius Härtl \n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n */\n.toastify.dialogs {\n min-width: 200px;\n background: none;\n background-color: var(--color-main-background);\n color: var(--color-main-text);\n box-shadow: 0 0 6px 0 var(--color-box-shadow);\n padding: 0 12px;\n margin-top: 45px;\n position: fixed;\n z-index: 10100;\n border-radius: var(--border-radius);\n display: flex;\n align-items: center;\n}\n.toastify.dialogs .toast-undo-container {\n display: flex;\n align-items: center;\n}\n.toastify.dialogs .toast-undo-button,\n.toastify.dialogs .toast-close {\n position: static;\n overflow: hidden;\n box-sizing: border-box;\n min-width: 44px;\n height: 100%;\n padding: 12px;\n white-space: nowrap;\n background-repeat: no-repeat;\n background-position: center;\n background-color: transparent;\n min-height: 0;\n}\n.toastify.dialogs .toast-undo-button.toast-close,\n.toastify.dialogs .toast-close.toast-close {\n text-indent: 0;\n opacity: .4;\n border: none;\n min-height: 44px;\n margin-left: 10px;\n font-size: 0;\n}\n.toastify.dialogs .toast-undo-button.toast-close:before,\n.toastify.dialogs .toast-close.toast-close:before {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n content: \" \";\n filter: var(--background-invert-if-dark);\n display: inline-block;\n width: 16px;\n height: 16px;\n}\n.toastify.dialogs .toast-undo-button.toast-undo-button,\n.toastify.dialogs .toast-close.toast-undo-button {\n height: calc(100% - 6px);\n margin: 3px 3px 3px 12px;\n}\n.toastify.dialogs .toast-undo-button:hover,\n.toastify.dialogs .toast-undo-button:focus,\n.toastify.dialogs .toast-undo-button:active,\n.toastify.dialogs .toast-close:hover,\n.toastify.dialogs .toast-close:focus,\n.toastify.dialogs .toast-close:active {\n cursor: pointer;\n opacity: 1;\n}\n.toastify.dialogs.toastify-top {\n right: 10px;\n}\n.toastify.dialogs.toast-with-click {\n cursor: pointer;\n}\n.toastify.dialogs.toast-error {\n border-left: 3px solid var(--color-error);\n}\n.toastify.dialogs.toast-info {\n border-left: 3px solid var(--color-primary);\n}\n.toastify.dialogs.toast-warning {\n border-left: 3px solid var(--color-warning);\n}\n.toastify.dialogs.toast-success,\n.toastify.dialogs.toast-undo {\n border-left: 3px solid var(--color-success);\n}\n.theme--dark .toastify.dialogs .toast-close.toast-close:before {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n._file-picker__file-icon_1vgv4_5 {\n width: 32px;\n height: 32px;\n min-width: 32px;\n min-height: 32px;\n background-repeat: no-repeat;\n background-size: contain;\n display: flex;\n justify-content: center;\n}\ntr.file-picker__row[data-v-6aded0d9] {\n height: var(--row-height, 50px);\n}\ntr.file-picker__row td[data-v-6aded0d9] {\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n border-bottom: none;\n}\ntr.file-picker__row td.row-checkbox[data-v-6aded0d9] {\n padding: 0 2px;\n}\ntr.file-picker__row td[data-v-6aded0d9]:not(.row-checkbox) {\n padding-inline: 14px 0;\n}\ntr.file-picker__row td.row-size[data-v-6aded0d9] {\n text-align: end;\n padding-inline: 0 14px;\n}\ntr.file-picker__row td.row-name[data-v-6aded0d9] {\n padding-inline: 2px 0;\n}\n@keyframes gradient-6aded0d9 {\n 0% {\n background-position: 0% 50%;\n }\n 50% {\n background-position: 100% 50%;\n }\n to {\n background-position: 0% 50%;\n }\n}\n.loading-row .row-checkbox[data-v-6aded0d9] {\n text-align: center !important;\n}\n.loading-row span[data-v-6aded0d9] {\n display: inline-block;\n height: 24px;\n background: linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker));\n background-size: 600px 100%;\n border-radius: var(--border-radius);\n animation: gradient-6aded0d9 12s ease infinite;\n}\n.loading-row .row-wrapper[data-v-6aded0d9] {\n display: inline-flex;\n align-items: center;\n}\n.loading-row .row-checkbox span[data-v-6aded0d9] {\n width: 24px;\n}\n.loading-row .row-name span[data-v-6aded0d9]:last-of-type {\n margin-inline-start: 6px;\n width: 130px;\n}\n.loading-row .row-size span[data-v-6aded0d9] {\n width: 80px;\n}\n.loading-row .row-modified span[data-v-6aded0d9] {\n width: 90px;\n}\ntr.file-picker__row[data-v-48df4f27] {\n height: var(--row-height, 50px);\n}\ntr.file-picker__row td[data-v-48df4f27] {\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n border-bottom: none;\n}\ntr.file-picker__row td.row-checkbox[data-v-48df4f27] {\n padding: 0 2px;\n}\ntr.file-picker__row td[data-v-48df4f27]:not(.row-checkbox) {\n padding-inline: 14px 0;\n}\ntr.file-picker__row td.row-size[data-v-48df4f27] {\n text-align: end;\n padding-inline: 0 14px;\n}\ntr.file-picker__row td.row-name[data-v-48df4f27] {\n padding-inline: 2px 0;\n}\n.file-picker__row--selected[data-v-48df4f27] {\n background-color: var(--color-background-dark);\n}\n.file-picker__row[data-v-48df4f27]:hover {\n background-color: var(--color-background-hover);\n}\n.file-picker__name-container[data-v-48df4f27] {\n display: flex;\n justify-content: start;\n align-items: center;\n height: 100%;\n}\n.file-picker__file-name[data-v-48df4f27] {\n padding-inline-start: 6px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.file-picker__file-extension[data-v-48df4f27] {\n color: var(--color-text-maxcontrast);\n min-width: fit-content;\n}\n.file-picker__header-preview[data-v-d3c94818] {\n width: 22px;\n height: 32px;\n flex: 0 0 auto;\n}\n.file-picker__files[data-v-d3c94818] {\n margin: 2px;\n margin-inline-start: 12px;\n overflow: scroll auto;\n}\n.file-picker__files table[data-v-d3c94818] {\n width: 100%;\n max-height: 100%;\n table-layout: fixed;\n}\n.file-picker__files th[data-v-d3c94818] {\n position: sticky;\n z-index: 1;\n top: 0;\n background-color: var(--color-main-background);\n padding: 2px;\n}\n.file-picker__files th .header-wrapper[data-v-d3c94818] {\n display: flex;\n}\n.file-picker__files th.row-checkbox[data-v-d3c94818] {\n width: 44px;\n}\n.file-picker__files th.row-name[data-v-d3c94818] {\n width: 230px;\n}\n.file-picker__files th.row-size[data-v-d3c94818] {\n width: 100px;\n}\n.file-picker__files th.row-modified[data-v-d3c94818] {\n width: 120px;\n}\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue__wrapper {\n justify-content: start;\n flex-direction: row-reverse;\n}\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue {\n padding-inline: 16px 4px;\n}\n.file-picker__files th.row-size[data-v-d3c94818] .button-vue__wrapper {\n justify-content: end;\n}\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper {\n color: var(--color-text-maxcontrast);\n}\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper .button-vue__text {\n font-weight: 400;\n}\n.file-picker__breadcrumbs[data-v-3bc9efa5] {\n flex-grow: 0 !important;\n}\n.file-picker__side[data-v-e96bec41] {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: .5rem;\n min-width: 200px;\n padding: 2px;\n overflow: auto;\n}\n.file-picker__side[data-v-e96bec41] .button-vue__wrapper {\n justify-content: start;\n}\n.file-picker__filter-input[data-v-e96bec41] {\n margin-block: 7px;\n max-width: 260px;\n}\n@media (max-width: 736px) {\n .file-picker__side[data-v-e96bec41] {\n flex-direction: row;\n min-width: unset;\n }\n}\n@media (max-width: 512px) {\n .file-picker__side[data-v-e96bec41] {\n flex-direction: row;\n min-width: unset;\n }\n .file-picker__filter-input[data-v-e96bec41] {\n max-width: unset;\n }\n}\n.file-picker__navigation {\n padding-inline: 8px 2px;\n}\n.file-picker__navigation,\n.file-picker__navigation * {\n box-sizing: border-box;\n}\n.file-picker__navigation .v-select.select {\n min-width: 220px;\n}\n@media (min-width: 513px) and (max-width: 736px) {\n .file-picker__navigation {\n gap: 11px;\n }\n}\n@media (max-width: 512px) {\n .file-picker__navigation {\n flex-direction: column-reverse !important;\n }\n}\n.file-picker__view[data-v-821451ce] {\n height: 50px;\n display: flex;\n justify-content: start;\n align-items: center;\n}\n.file-picker__view h3[data-v-821451ce] {\n font-weight: 700;\n height: fit-content;\n margin: 0;\n}\n.file-picker__main[data-v-821451ce] {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n min-height: 0;\n flex: 1;\n padding-inline: 2px;\n}\n.file-picker__main *[data-v-821451ce] {\n box-sizing: border-box;\n}\n[data-v-821451ce] .file-picker {\n height: min(80vh, 800px) !important;\n}\n@media (max-width: 512px) {\n [data-v-821451ce] .file-picker {\n height: calc(100% - 16px - var(--default-clickable-area)) !important;\n }\n}\n[data-v-821451ce] .file-picker__content {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/dialogs/dist/style.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,gBAAgB;EAChB,gBAAgB;EAChB,8CAA8C;EAC9C,6BAA6B;EAC7B,6CAA6C;EAC7C,eAAe;EACf,gBAAgB;EAChB,eAAe;EACf,cAAc;EACd,mCAAmC;EACnC,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,mBAAmB;AACrB;AACA;;EAEE,gBAAgB;EAChB,gBAAgB;EAChB,sBAAsB;EACtB,eAAe;EACf,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,4BAA4B;EAC5B,2BAA2B;EAC3B,6BAA6B;EAC7B,aAAa;AACf;AACA;;EAEE,cAAc;EACd,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;AACd;AACA;;EAEE,yDAA8Q;EAC9Q,YAAY;EACZ,wCAAwC;EACxC,qBAAqB;EACrB,WAAW;EACX,YAAY;AACd;AACA;;EAEE,wBAAwB;EACxB,wBAAwB;AAC1B;AACA;;;;;;EAME,eAAe;EACf,UAAU;AACZ;AACA;EACE,WAAW;AACb;AACA;EACE,eAAe;AACjB;AACA;EACE,yCAAyC;AAC3C;AACA;EACE,2CAA2C;AAC7C;AACA;EACE,2CAA2C;AAC7C;AACA;;EAEE,2CAA2C;AAC7C;AACA;EACE,yDAAsT;AACxT;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,4BAA4B;EAC5B,wBAAwB;EACxB,aAAa;EACb,uBAAuB;AACzB;AACA;EACE,+BAA+B;AACjC;AACA;EACE,eAAe;EACf,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,cAAc;AAChB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,eAAe;EACf,sBAAsB;AACxB;AACA;EACE,qBAAqB;AACvB;AACA;EACE;IACE,2BAA2B;EAC7B;EACA;IACE,6BAA6B;EAC/B;EACA;IACE,2BAA2B;EAC7B;AACF;AACA;EACE,6BAA6B;AAC/B;AACA;EACE,qBAAqB;EACrB,YAAY;EACZ,oIAAoI;EACpI,2BAA2B;EAC3B,mCAAmC;EACnC,8CAA8C;AAChD;AACA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;AACA;EACE,WAAW;AACb;AACA;EACE,wBAAwB;EACxB,YAAY;AACd;AACA;EACE,WAAW;AACb;AACA;EACE,WAAW;AACb;AACA;EACE,+BAA+B;AACjC;AACA;EACE,eAAe;EACf,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;AACrB;AACA;EACE,cAAc;AAChB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,eAAe;EACf,sBAAsB;AACxB;AACA;EACE,qBAAqB;AACvB;AACA;EACE,8CAA8C;AAChD;AACA;EACE,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;EACnB,YAAY;AACd;AACA;EACE,yBAAyB;EACzB,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,oCAAoC;EACpC,sBAAsB;AACxB;AACA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;AAChB;AACA;EACE,WAAW;EACX,yBAAyB;EACzB,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,gBAAgB;EAChB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,UAAU;EACV,MAAM;EACN,8CAA8C;EAC9C,YAAY;AACd;AACA;EACE,aAAa;AACf;AACA;EACE,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;AACd;AACA;EACE,sBAAsB;EACtB,2BAA2B;AAC7B;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,oBAAoB;AACtB;AACA;EACE,oCAAoC;AACtC;AACA;EACE,gBAAgB;AAClB;AACA;EACE,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;EACpB,UAAU;EACV,gBAAgB;EAChB,YAAY;EACZ,cAAc;AAChB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,iBAAiB;EACjB,gBAAgB;AAClB;AACA;EACE;IACE,mBAAmB;IACnB,gBAAgB;EAClB;AACF;AACA;EACE;IACE,mBAAmB;IACnB,gBAAgB;EAClB;EACA;IACE,gBAAgB;EAClB;AACF;AACA;EACE,uBAAuB;AACzB;AACA;;EAEE,sBAAsB;AACxB;AACA;EACE,gBAAgB;AAClB;AACA;EACE;IACE,SAAS;EACX;AACF;AACA;EACE;IACE,yCAAyC;EAC3C;AACF;AACA;EACE,YAAY;EACZ,aAAa;EACb,sBAAsB;EACtB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,SAAS;AACX;AACA;EACE,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,sBAAsB;EACtB,aAAa;EACb,OAAO;EACP,mBAAmB;AACrB;AACA;EACE,sBAAsB;AACxB;AACA;EACE,mCAAmC;AACrC;AACA;EACE;IACE,oEAAoE;EACtE;AACF;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 Julius Härtl \\n *\\n * @author Julius Härtl \\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n */\\n.toastify.dialogs {\\n min-width: 200px;\\n background: none;\\n background-color: var(--color-main-background);\\n color: var(--color-main-text);\\n box-shadow: 0 0 6px 0 var(--color-box-shadow);\\n padding: 0 12px;\\n margin-top: 45px;\\n position: fixed;\\n z-index: 10100;\\n border-radius: var(--border-radius);\\n display: flex;\\n align-items: center;\\n}\\n.toastify.dialogs .toast-undo-container {\\n display: flex;\\n align-items: center;\\n}\\n.toastify.dialogs .toast-undo-button,\\n.toastify.dialogs .toast-close {\\n position: static;\\n overflow: hidden;\\n box-sizing: border-box;\\n min-width: 44px;\\n height: 100%;\\n padding: 12px;\\n white-space: nowrap;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-color: transparent;\\n min-height: 0;\\n}\\n.toastify.dialogs .toast-undo-button.toast-close,\\n.toastify.dialogs .toast-close.toast-close {\\n text-indent: 0;\\n opacity: .4;\\n border: none;\\n min-height: 44px;\\n margin-left: 10px;\\n font-size: 0;\\n}\\n.toastify.dialogs .toast-undo-button.toast-close:before,\\n.toastify.dialogs .toast-close.toast-close:before {\\n background-image: url(\\\"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='16'%20width='16'%3e%3cpath%20d='M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z'/%3e%3c/svg%3e\\\");\\n content: \\\" \\\";\\n filter: var(--background-invert-if-dark);\\n display: inline-block;\\n width: 16px;\\n height: 16px;\\n}\\n.toastify.dialogs .toast-undo-button.toast-undo-button,\\n.toastify.dialogs .toast-close.toast-undo-button {\\n height: calc(100% - 6px);\\n margin: 3px 3px 3px 12px;\\n}\\n.toastify.dialogs .toast-undo-button:hover,\\n.toastify.dialogs .toast-undo-button:focus,\\n.toastify.dialogs .toast-undo-button:active,\\n.toastify.dialogs .toast-close:hover,\\n.toastify.dialogs .toast-close:focus,\\n.toastify.dialogs .toast-close:active {\\n cursor: pointer;\\n opacity: 1;\\n}\\n.toastify.dialogs.toastify-top {\\n right: 10px;\\n}\\n.toastify.dialogs.toast-with-click {\\n cursor: pointer;\\n}\\n.toastify.dialogs.toast-error {\\n border-left: 3px solid var(--color-error);\\n}\\n.toastify.dialogs.toast-info {\\n border-left: 3px solid var(--color-primary);\\n}\\n.toastify.dialogs.toast-warning {\\n border-left: 3px solid var(--color-warning);\\n}\\n.toastify.dialogs.toast-success,\\n.toastify.dialogs.toast-undo {\\n border-left: 3px solid var(--color-success);\\n}\\n.theme--dark .toastify.dialogs .toast-close.toast-close:before {\\n background-image: url(\\\"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='16'%20width='16'%3e%3cpath%20d='M14%2012.3L12.3%2014%208%209.7%203.7%2014%202%2012.3%206.3%208%202%203.7%203.7%202%208%206.3%2012.3%202%2014%203.7%209.7%208z'%20style='fill-opacity:1;fill:%23ffffff'/%3e%3c/svg%3e\\\");\\n}\\n._file-picker__file-icon_1vgv4_5 {\\n width: 32px;\\n height: 32px;\\n min-width: 32px;\\n min-height: 32px;\\n background-repeat: no-repeat;\\n background-size: contain;\\n display: flex;\\n justify-content: center;\\n}\\ntr.file-picker__row[data-v-6aded0d9] {\\n height: var(--row-height, 50px);\\n}\\ntr.file-picker__row td[data-v-6aded0d9] {\\n cursor: pointer;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-bottom: none;\\n}\\ntr.file-picker__row td.row-checkbox[data-v-6aded0d9] {\\n padding: 0 2px;\\n}\\ntr.file-picker__row td[data-v-6aded0d9]:not(.row-checkbox) {\\n padding-inline: 14px 0;\\n}\\ntr.file-picker__row td.row-size[data-v-6aded0d9] {\\n text-align: end;\\n padding-inline: 0 14px;\\n}\\ntr.file-picker__row td.row-name[data-v-6aded0d9] {\\n padding-inline: 2px 0;\\n}\\n@keyframes gradient-6aded0d9 {\\n 0% {\\n background-position: 0% 50%;\\n }\\n 50% {\\n background-position: 100% 50%;\\n }\\n to {\\n background-position: 0% 50%;\\n }\\n}\\n.loading-row .row-checkbox[data-v-6aded0d9] {\\n text-align: center !important;\\n}\\n.loading-row span[data-v-6aded0d9] {\\n display: inline-block;\\n height: 24px;\\n background: linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker));\\n background-size: 600px 100%;\\n border-radius: var(--border-radius);\\n animation: gradient-6aded0d9 12s ease infinite;\\n}\\n.loading-row .row-wrapper[data-v-6aded0d9] {\\n display: inline-flex;\\n align-items: center;\\n}\\n.loading-row .row-checkbox span[data-v-6aded0d9] {\\n width: 24px;\\n}\\n.loading-row .row-name span[data-v-6aded0d9]:last-of-type {\\n margin-inline-start: 6px;\\n width: 130px;\\n}\\n.loading-row .row-size span[data-v-6aded0d9] {\\n width: 80px;\\n}\\n.loading-row .row-modified span[data-v-6aded0d9] {\\n width: 90px;\\n}\\ntr.file-picker__row[data-v-48df4f27] {\\n height: var(--row-height, 50px);\\n}\\ntr.file-picker__row td[data-v-48df4f27] {\\n cursor: pointer;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-bottom: none;\\n}\\ntr.file-picker__row td.row-checkbox[data-v-48df4f27] {\\n padding: 0 2px;\\n}\\ntr.file-picker__row td[data-v-48df4f27]:not(.row-checkbox) {\\n padding-inline: 14px 0;\\n}\\ntr.file-picker__row td.row-size[data-v-48df4f27] {\\n text-align: end;\\n padding-inline: 0 14px;\\n}\\ntr.file-picker__row td.row-name[data-v-48df4f27] {\\n padding-inline: 2px 0;\\n}\\n.file-picker__row--selected[data-v-48df4f27] {\\n background-color: var(--color-background-dark);\\n}\\n.file-picker__row[data-v-48df4f27]:hover {\\n background-color: var(--color-background-hover);\\n}\\n.file-picker__name-container[data-v-48df4f27] {\\n display: flex;\\n justify-content: start;\\n align-items: center;\\n height: 100%;\\n}\\n.file-picker__file-name[data-v-48df4f27] {\\n padding-inline-start: 6px;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.file-picker__file-extension[data-v-48df4f27] {\\n color: var(--color-text-maxcontrast);\\n min-width: fit-content;\\n}\\n.file-picker__header-preview[data-v-d3c94818] {\\n width: 22px;\\n height: 32px;\\n flex: 0 0 auto;\\n}\\n.file-picker__files[data-v-d3c94818] {\\n margin: 2px;\\n margin-inline-start: 12px;\\n overflow: scroll auto;\\n}\\n.file-picker__files table[data-v-d3c94818] {\\n width: 100%;\\n max-height: 100%;\\n table-layout: fixed;\\n}\\n.file-picker__files th[data-v-d3c94818] {\\n position: sticky;\\n z-index: 1;\\n top: 0;\\n background-color: var(--color-main-background);\\n padding: 2px;\\n}\\n.file-picker__files th .header-wrapper[data-v-d3c94818] {\\n display: flex;\\n}\\n.file-picker__files th.row-checkbox[data-v-d3c94818] {\\n width: 44px;\\n}\\n.file-picker__files th.row-name[data-v-d3c94818] {\\n width: 230px;\\n}\\n.file-picker__files th.row-size[data-v-d3c94818] {\\n width: 100px;\\n}\\n.file-picker__files th.row-modified[data-v-d3c94818] {\\n width: 120px;\\n}\\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue__wrapper {\\n justify-content: start;\\n flex-direction: row-reverse;\\n}\\n.file-picker__files th[data-v-d3c94818]:not(.row-size) .button-vue {\\n padding-inline: 16px 4px;\\n}\\n.file-picker__files th.row-size[data-v-d3c94818] .button-vue__wrapper {\\n justify-content: end;\\n}\\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper {\\n color: var(--color-text-maxcontrast);\\n}\\n.file-picker__files th[data-v-d3c94818] .button-vue__wrapper .button-vue__text {\\n font-weight: 400;\\n}\\n.file-picker__breadcrumbs[data-v-3bc9efa5] {\\n flex-grow: 0 !important;\\n}\\n.file-picker__side[data-v-e96bec41] {\\n display: flex;\\n flex-direction: column;\\n align-items: stretch;\\n gap: .5rem;\\n min-width: 200px;\\n padding: 2px;\\n overflow: auto;\\n}\\n.file-picker__side[data-v-e96bec41] .button-vue__wrapper {\\n justify-content: start;\\n}\\n.file-picker__filter-input[data-v-e96bec41] {\\n margin-block: 7px;\\n max-width: 260px;\\n}\\n@media (max-width: 736px) {\\n .file-picker__side[data-v-e96bec41] {\\n flex-direction: row;\\n min-width: unset;\\n }\\n}\\n@media (max-width: 512px) {\\n .file-picker__side[data-v-e96bec41] {\\n flex-direction: row;\\n min-width: unset;\\n }\\n .file-picker__filter-input[data-v-e96bec41] {\\n max-width: unset;\\n }\\n}\\n.file-picker__navigation {\\n padding-inline: 8px 2px;\\n}\\n.file-picker__navigation,\\n.file-picker__navigation * {\\n box-sizing: border-box;\\n}\\n.file-picker__navigation .v-select.select {\\n min-width: 220px;\\n}\\n@media (min-width: 513px) and (max-width: 736px) {\\n .file-picker__navigation {\\n gap: 11px;\\n }\\n}\\n@media (max-width: 512px) {\\n .file-picker__navigation {\\n flex-direction: column-reverse !important;\\n }\\n}\\n.file-picker__view[data-v-821451ce] {\\n height: 50px;\\n display: flex;\\n justify-content: start;\\n align-items: center;\\n}\\n.file-picker__view h3[data-v-821451ce] {\\n font-weight: 700;\\n height: fit-content;\\n margin: 0;\\n}\\n.file-picker__main[data-v-821451ce] {\\n box-sizing: border-box;\\n width: 100%;\\n display: flex;\\n flex-direction: column;\\n min-height: 0;\\n flex: 1;\\n padding-inline: 2px;\\n}\\n.file-picker__main *[data-v-821451ce] {\\n box-sizing: border-box;\\n}\\n[data-v-821451ce] .file-picker {\\n height: min(80vh, 800px) !important;\\n}\\n@media (max-width: 512px) {\\n [data-v-821451ce] .file-picker {\\n height: calc(100% - 16px - var(--default-clickable-area)) !important;\\n }\\n}\\n[data-v-821451ce] .file-picker__content {\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.upload-picker[data-v-af4c69fa] {\n display: inline-flex;\n align-items: center;\n height: 44px;\n}\n.upload-picker__progress[data-v-af4c69fa] {\n width: 200px;\n max-width: 0;\n transition: max-width var(--animation-quick) ease-in-out;\n margin-top: 8px;\n}\n.upload-picker__progress p[data-v-af4c69fa] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.upload-picker--uploading .upload-picker__progress[data-v-af4c69fa] {\n max-width: 200px;\n margin-right: 20px;\n margin-left: 8px;\n}\n.upload-picker--paused .upload-picker__progress[data-v-af4c69fa] {\n animation: breathing-af4c69fa 3s ease-out infinite normal;\n}\n@keyframes breathing-af4c69fa {\n 0% {\n opacity: .5;\n }\n 25% {\n opacity: 1;\n }\n 60% {\n opacity: .5;\n }\n to {\n opacity: .5;\n }\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/upload/dist/assets/index-7900cbe9.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,YAAY;AACd;AACA;EACE,YAAY;EACZ,YAAY;EACZ,wDAAwD;EACxD,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,yDAAyD;AAC3D;AACA;EACE;IACE,WAAW;EACb;EACA;IACE,UAAU;EACZ;EACA;IACE,WAAW;EACb;EACA;IACE,WAAW;EACb;AACF\",\"sourcesContent\":[\".upload-picker[data-v-af4c69fa] {\\n display: inline-flex;\\n align-items: center;\\n height: 44px;\\n}\\n.upload-picker__progress[data-v-af4c69fa] {\\n width: 200px;\\n max-width: 0;\\n transition: max-width var(--animation-quick) ease-in-out;\\n margin-top: 8px;\\n}\\n.upload-picker__progress p[data-v-af4c69fa] {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n.upload-picker--uploading .upload-picker__progress[data-v-af4c69fa] {\\n max-width: 200px;\\n margin-right: 20px;\\n margin-left: 8px;\\n}\\n.upload-picker--paused .upload-picker__progress[data-v-af4c69fa] {\\n animation: breathing-af4c69fa 3s ease-out infinite normal;\\n}\\n@keyframes breathing-af4c69fa {\\n 0% {\\n opacity: .5;\\n }\\n 25% {\\n opacity: 1;\\n }\\n 60% {\\n opacity: .5;\\n }\\n to {\\n opacity: .5;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.breadcrumb[data-v-1c4866bc]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-1c4866bc] a{cursor:pointer !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__drag-drop-notice[data-v-46caa8f8]{display:flex;align-items:center;justify-content:center;width:100%;min-height:113px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-46caa8f8]{margin-left:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-46caa8f8]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,gBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 55px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-left: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-drag-image{position:absolute;top:-9999px;left:-9999px;display:flex;overflow:hidden;align-items:center;height:44px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon{display:flex;overflow:hidden;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-right:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon{margin-top:6px;margin-left:-26px}.files-list-drag-image__icon>span .files-list__row-icon+.files-list__row-icon+.files-list__row-icon{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,0EAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,iBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAGA,8EACC,cA9CU,CA+CV,iBAAA,CACA,oGACC,eAAA,CAKF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 32px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tleft: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\tpadding: 6px 12px;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-right: 12px;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t.files-list__row-icon + .files-list__row-icon {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-left: $stack-shift - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.favorite-marker-icon[data-v-77afa6dc]{color:#a08b00;min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-77afa6dc] svg{width:26px !important;height:26px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-77afa6dc] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,aAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: #a08b00;\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 26px !important;\\n\\t\\t\\theight: 26px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh), 0px) !important}[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,6EAAA,CAGA,kEACC,0FAAA,CAGD,kEACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\n[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `[data-v-670325ac] .button-vue--icon-and-text .button-vue__text{color:var(--color-primary-element)}[data-v-670325ac] .button-vue--icon-and-text .button-vue__icon{color:var(--color-primary-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAEC,+DACC,kCAAA,CAED,+DACC,kCAAA\",\"sourcesContent\":[\"\\n:deep(.button-vue--icon-and-text, .files-list__row-action-sharing-status) {\\n\\t.button-vue__text {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\t.button-vue__icon {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tr[data-v-a85bde20]{margin-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-a85bde20]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,mBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n\\n\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column[data-v-952162c2]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-952162c2]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__row-actions-batch[data-v-d939292c]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list__column-sort-button[data-v-2dd1845e]{margin:0 calc(var(--cell-margin)*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-2dd1845e]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-2dd1845e]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-2dd1845e]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-2dd1845e],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-2dd1845e],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-2dd1845e],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-2dd1845e]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,oCAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list[data-v-48fb0b13]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;position:relative;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-48fb0b13] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-48fb0b13] tbody tr{contain:strict}.files-list[data-v-48fb0b13] tbody tr:hover,.files-list[data-v-48fb0b13] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-48fb0b13] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-48fb0b13] .files-list__table{display:block}.files-list[data-v-48fb0b13] .files-list__table.files-list__table--with-thead-overlay{margin-top:calc(-1*var(--row-height))}.files-list[data-v-48fb0b13] .files-list__thead-overlay{position:sticky;top:0;margin-left:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-bottom:1px solid var(--color-border);height:var(--row-height)}.files-list[data-v-48fb0b13] .files-list__thead,.files-list[data-v-48fb0b13] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-48fb0b13] .files-list__thead{position:sticky;z-index:10;top:0}.files-list[data-v-48fb0b13] .files-list__tfoot{min-height:300px}.files-list[data-v-48fb0b13] tr{position:relative;display:flex;align-items:center;width:100%;user-select:none;border-bottom:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-48fb0b13] td,.files-list[data-v-48fb0b13] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-48fb0b13] td span,.files-list[data-v-48fb0b13] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-48fb0b13] .files-list__row--failed{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-48fb0b13] .files-list__row-checkbox{justify-content:center}.files-list[data-v-48fb0b13] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-48fb0b13] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-48fb0b13] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-48fb0b13] .files-list__row:hover,.files-list[data-v-48fb0b13] .files-list__row:focus,.files-list[data-v-48fb0b13] .files-list__row:active,.files-list[data-v-48fb0b13] .files-list__row--active,.files-list[data-v-48fb0b13] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-48fb0b13] .files-list__row:hover>*,.files-list[data-v-48fb0b13] .files-list__row:focus>*,.files-list[data-v-48fb0b13] .files-list__row:active>*,.files-list[data-v-48fb0b13] .files-list__row--active>*,.files-list[data-v-48fb0b13] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-48fb0b13] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-48fb0b13] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-48fb0b13] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-48fb0b13] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-48fb0b13] .files-list__row-icon *{cursor:pointer}.files-list[data-v-48fb0b13] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-48fb0b13] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-icon,.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-48fb0b13] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-48fb0b13] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);object-fit:contain;object-position:center}.files-list[data-v-48fb0b13] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-48fb0b13] .files-list__row-icon-favorite{position:absolute;top:0px;right:-10px}.files-list[data-v-48fb0b13] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.5);max-width:calc(var(--icon-preview-size)*.5);color:var(--color-primary-element-text);margin-top:2px}.files-list[data-v-48fb0b13] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-48fb0b13] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-48fb0b13] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%;min-width:0}.files-list[data-v-48fb0b13] .files-list__row-name a:focus-visible{outline:none}.files-list[data-v-48fb0b13] .files-list__row-name a:focus .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-48fb0b13] .files-list__row-name a:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-48fb0b13] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:5px 10px;margin-left:-10px;display:inline-flex}.files-list[data-v-48fb0b13] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-48fb0b13] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-48fb0b13] .files-list__row-rename input{width:100%;margin-left:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-48fb0b13] .files-list__row-rename input:invalid{border-color:var(--color-error);color:red}.files-list[data-v-48fb0b13] .files-list__row-actions{width:auto}.files-list[data-v-48fb0b13] .files-list__row-actions~td,.files-list[data-v-48fb0b13] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-48fb0b13] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-48fb0b13] .files-list__row-action--inline{margin-right:7px}.files-list[data-v-48fb0b13] .files-list__row-mtime,.files-list[data-v-48fb0b13] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-48fb0b13] .files-list__row-size{width:calc(var(--row-height)*1.5);justify-content:flex-end}.files-list[data-v-48fb0b13] .files-list__row-mtime{width:calc(var(--row-height)*2)}.files-list[data-v-48fb0b13] .files-list__row-column-custom{width:calc(var(--row-height)*2)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,iBAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAIC,oCACC,mBAAA,CACA,0BAAA,CACA,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAGA,uCACC,cAAA,CACA,0FAEC,6CAAA,CAMH,kDACC,YAAA,CACA,qBAAA,CAGD,iDACC,aAAA,CAEA,uFAEC,qCAAA,CAIF,yDAEC,eAAA,CACA,KAAA,CAEA,6BAAA,CAEA,UAAA,CAEA,YAAA,CACA,kBAAA,CAGA,6CAAA,CACA,2CAAA,CACA,wBAAA,CAGD,kGAEC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,6CAAA,CAKD,iDAEC,eAAA,CACA,UAAA,CACA,KAAA,CAID,iDACC,gBAAA,CAGD,iCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,gBAAA,CACA,2CAAA,CACA,qBAAA,CACA,gBAAA,CACA,wBAAA,CAGD,kEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,4EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CACA,6BAAA,CAGD,wDACC,sBAAA,CAEA,+EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,kHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,4GACC,mBAAA,CAMF,gRAEC,8CAAA,CAGA,gDAAA,CACA,0RACC,wCAAA,CAID,2aACC,oCAAA,CAIF,2DAEC,mBAAA,CAKF,oDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAGA,sDACC,cAAA,CAGD,yDACC,0BAAA,CAEA,iGACC,8BAAA,CACA,+BAAA,CAID,+IAEC,WAAA,CACA,uJACC,0CAAA,CACA,2CAAA,CAKH,4DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CAEA,kBAAA,CACA,sBAAA,CAGA,uGACC,oCAAA,CAKF,6DACC,iBAAA,CACA,OAAA,CACA,WAAA,CAID,4DACC,iBAAA,CACA,4CAAA,CACA,2CAAA,CACA,uCAAA,CAEA,cAAA,CAGA,kEACC,4BAAA,CACA,uCAAA,CACA,kBAAA,CAMH,oDAEC,eAAA,CAEA,aAAA,CAEA,sDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAEA,WAAA,CAGA,oEACC,YAAA,CAID,uFACC,mDAAA,CACA,kBAAA,CAED,2GACC,uBAAA,CAIF,+EACC,4BAAA,CAEA,gBAAA,CACA,iBAAA,CAEA,mBAAA,CAGD,8EACC,mCAAA,CAEA,gBAAA,CAKF,sDACC,UAAA,CACA,eAAA,CACA,4DACC,UAAA,CAEA,gBAAA,CACA,eAAA,CACA,gBAAA,CAEA,oEAEC,+BAAA,CACA,SAAA,CAKH,uDAEC,UAAA,CAGA,oHAEC,2BAAA,CAIA,gFAEC,kBAAA,CAKH,8DACC,gBAAA,CAGD,yGAEC,mCAAA,CAED,oDACC,iCAAA,CAEA,wBAAA,CAGD,qDACC,+BAAA,CAGD,6DACC,+BAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tposition: relative;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-top: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-left: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__thead {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t}\\n\\n\\t\\t// Table footer\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tmin-height: 300px;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: left;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-right: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tright: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.5);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.5);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\ta {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-left: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-error);\\n\\t\\t\\t\\t\\tcolor: red;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-right: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 1.5);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `tbody.files-list__tbody.files-list__tbody--grid{--half-clickable-area: calc(var(--clickable-area) / 2);--row-width: 160px;--row-height: calc(var(--row-width) - var(--half-clickable-area));--icon-preview-size: calc(var(--row-width) - var(--clickable-area));--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));grid-gap:15px;row-gap:15px;align-content:center;align-items:center;justify-content:space-around;justify-items:center}tbody.files-list__tbody.files-list__tbody--grid tr{width:var(--row-width);height:calc(var(--row-height) + var(--clickable-area));border:none;border-radius:var(--border-radius)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-checkbox{position:absolute;z-index:9;top:0;left:0;overflow:hidden;width:var(--clickable-area);height:var(--clickable-area);border-radius:var(--half-clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-icon-favorite{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name{display:grid;justify-content:stretch;width:100%;height:100%;grid-auto-rows:var(--row-height) var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name span.files-list__row-icon{width:100%;height:100%;padding-top:var(--half-clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name a.files-list__row-name-link{width:calc(100% - var(--clickable-area));height:var(--clickable-area)}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-name .files-list__row-name-text{margin:0;padding-right:0}tbody.files-list__tbody.files-list__tbody--grid .files-list__row-actions{position:absolute;right:0;bottom:0;width:var(--clickable-area);height:var(--clickable-area)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,gDACC,sDAAA,CACA,kBAAA,CAEA,iEAAA,CACA,mEAAA,CACA,uBAAA,CAEA,YAAA,CACA,yDAAA,CACA,aAAA,CACA,YAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,mDACC,sBAAA,CACA,sDAAA,CACA,WAAA,CACA,kCAAA,CAID,0EACC,iBAAA,CACA,SAAA,CACA,KAAA,CACA,MAAA,CACA,eAAA,CACA,2BAAA,CACA,4BAAA,CACA,wCAAA,CAID,+EACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,sEACC,YAAA,CACA,uBAAA,CACA,UAAA,CACA,WAAA,CACA,sDAAA,CAEA,gGACC,UAAA,CACA,WAAA,CAGA,sCAAA,CAGD,kGAEC,wCAAA,CACA,4BAAA,CAGD,iGACC,QAAA,CACA,eAAA,CAIF,yEACC,iBAAA,CACA,OAAA,CACA,QAAA,CACA,2BAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n// Grid mode\\ntbody.files-list__tbody.files-list__tbody--grid {\\n\\t--half-clickable-area: calc(var(--clickable-area) / 2);\\n\\t--row-width: 160px;\\n\\t// We use half of the clickable area as visual balance margin\\n\\t--row-height: calc(var(--row-width) - var(--half-clickable-area));\\n\\t--icon-preview-size: calc(var(--row-width) - var(--clickable-area));\\n\\t--checkbox-padding: 0px;\\n\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\tgrid-gap: 15px;\\n\\trow-gap: 15px;\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: calc(var(--row-height) + var(--clickable-area));\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t\\tborder-radius: var(--half-clickable-area);\\n\\t}\\n\\n\\t// Star icon in the top right\\n\\t.files-list__row-icon-favorite {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tright: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: grid;\\n\\t\\tjustify-content: stretch;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tgrid-auto-rows: var(--row-height) var(--clickable-area);\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Visual balance, we use half of the clickable area\\n\\t\\t\\t// as a margin around the preview\\n\\t\\t\\tpadding-top: var(--half-clickable-area);\\n\\t\\t}\\n\\n\\t\\ta.files-list__row-name-link {\\n\\t\\t\\t// Minus action menu\\n\\t\\t\\twidth: calc(100% - var(--clickable-area));\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding-right: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation-entry__settings-quota--not-unlimited[data-v-18ceb3ce] .app-navigation-entry__name{margin-top:-6px}.app-navigation-entry__settings-quota progress[data-v-18ceb3ce]{position:absolute;bottom:12px;margin-left:44px;width:calc(100% - 44px - 22px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,kGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__name {\\n\\t\\tmargin-top: -6px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 12px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-b2731ace]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative}.files-list__header[data-v-b2731ace]{display:flex;align-items:center;flex:0 0;margin:4px 4px 4px 50px;max-width:100%}.files-list__header>*[data-v-b2731ace]{flex:0 0}.files-list__header-share-button[data-v-b2731ace]{color:var(--color-text-maxcontrast) !important}.files-list__header-share-button--shared[data-v-b2731ace]{color:var(--color-main-text) !important}.files-list__refresh-icon[data-v-b2731ace]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-b2731ace]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,iBAAA,CAOA,qCACC,YAAA,CACA,kBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,cAAA,CACA,uCAGC,QAAA,CAGD,kDACC,8CAAA,CACA,0DACC,uCAAA,CAKH,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\tposition: relative;\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\tmax-width: 100%;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\n\\t\\t&-share-button {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t&--shared {\\n\\t\\t\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-navigation[data-v-3f2914e1] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation[data-v-3f2914e1] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-3f2914e1]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-3f2914e1]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation::v-deep .app-navigation-entry.active .button-vue.icon-collapse:not(:hover) {\\n\\tcolor: var(--color-primary-element-text);\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.setting-link[data-v-6d63c120]:hover{text-decoration:underline}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-ps\": 20315,\n\t\"./ar-ps.js\": 20315,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku-kmr\": 90563,\n\t\"./ku-kmr.js\": 90563,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;",";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // \n SCRIPT: S++, // ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountOff.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountOff.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountOff.vue?vue&type=template&id=4a2e1178\"\nimport script from \"./AccountOff.vue?vue&type=script&lang=js\"\nexport * from \"./AccountOff.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-off-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=bcf30078\"\nimport script from \"./Cog.vue?vue&type=script&lang=js\"\nexport * from \"./Cog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShieldAccount.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShieldAccount.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShieldAccount.vue?vue&type=template&id=3937f138\"\nimport script from \"./ShieldAccount.vue?vue&type=script&lang=js\"\nexport * from \"./ShieldAccount.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon shield-account-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M17.13,17C15.92,18.85 14.11,20.24 12,20.92C9.89,20.24 8.08,18.85 6.87,17C6.53,16.5 6.24,16 6,15.47C6,13.82 8.71,12.47 12,12.47C15.29,12.47 18,13.79 18,15.47C17.76,16 17.47,16.5 17.13,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The users will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=36dd2d08&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36dd2d08\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserModal',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"close\":_vm.closeModal}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No users')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading users …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.usersSvg}})]},proxy:true}],null,false,934871631)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tgroups: _vm.groups,\n\t\t\tsubAdminsGroups: _vm.subAdminsGroups,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of users. This list is not fully rendered for performance reasons. The users will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=4377829d&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4377829d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',_vm._g({staticClass:\"modal\",attrs:{\"size\":\"small\"}},_vm.$listeners),[_c('form',{staticClass:\"modal__form\",attrs:{\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'New user')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"username\",staticClass:\"modal__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"modal__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"modal__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[(!_vm.settings.isAdmin)?_c('NcTextField',{class:{ 'icon-loading-small': _vm.loading.groups },attrs:{\"id\":\"new-user-groups-input\",\"tabindex\":\"-1\",\"value\":_vm.newUser.groups,\"required\":!_vm.settings.isAdmin}}):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-groups\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(!_vm.settings.isAdmin ? _vm.t('settings', 'Groups (required)') : _vm.t('settings', 'Groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-groups\",\"placeholder\":_vm.t('settings', 'Set user groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.canAddGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":true},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-sub-admin\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Administered groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-sub-admin\",\"placeholder\":_vm.t('settings', 'Set user as admin for …'),\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-quota\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-quota\",\"placeholder\":_vm.t('settings', 'Set user quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-language\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-language\",\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['modal__item managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-manager\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manager'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-manager\",\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"modal__submit\",attrs:{\"data-test\":\"submit\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new user'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserModal.vue?vue&type=template&id=0634d81b&scoped=true\"\nimport script from \"./NewUserModal.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0634d81b\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading users …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=3ec0b16a&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec0b16a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Username'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User actions'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=69afa821&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69afa821\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading user …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:[(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this user'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add user to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add user to group'),\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ name: value, isCreating: true })},on:{\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && _vm.settings.isAdmin && _vm.subAdminsGroups.length > 0)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set user as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"value\":_vm.userSubAdminsGroups},on:{\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminsGroupsLabels?.length > 40 ? _vm.userSubAdminsGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select user quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select user quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle user actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.actions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon},on:{\"click\":(event) => action(event, { ..._vm.user })}},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=81dfc294\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author Greta Doci \n * @author John Molakvoæ \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user\n * @param user.id\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=79fe702d&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79fe702d\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=220321a2&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"220321a2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'User management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show user backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new users'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('label',{attrs:{\"for\":\"default-quota-select\"}},[_vm._v(_vm._s(_vm.t('settings', 'Default quota')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"default-quota-select\",\"placement\":\"top\",\"taggable\":true,\"options\":_vm.quotaOptions,\"create-option\":_vm.validateQuota,\"placeholder\":_vm.t('settings', 'Select default quota'),\"clearable\":false},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=0a250c55&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a250c55\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=68b27594&scoped=true\"\nimport script from \"./Users.vue?vue&type=script&lang=js\"\nexport * from \"./Users.vue?vue&type=script&lang=js\"\nimport style0 from \"./Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b27594\",\n null\n \n)\n\nexport default component.exports","/**\n * vue-local-storage v0.6.0\n * (c) 2017 Alexander Avakov\n * @license MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.VueLocalStorage = factory());\n}(this, (function () { 'use strict';\n\nvar VueLocalStorage = function VueLocalStorage () {\n this._properties = {};\n this._namespace = '';\n this._isSupported = true;\n};\n\nvar prototypeAccessors = { namespace: {} };\n\n/**\n * Namespace getter.\n *\n * @returns {string}\n */\nprototypeAccessors.namespace.get = function () {\n return this._namespace\n};\n\n/**\n * Namespace setter.\n *\n * @param {string} value\n */\nprototypeAccessors.namespace.set = function (value) {\n this._namespace = value ? (value + \".\") : '';\n};\n\n/**\n * Concatenates localStorage key with namespace prefix.\n *\n * @param {string} lsKey\n * @returns {string}\n * @private\n */\nVueLocalStorage.prototype._getLsKey = function _getLsKey (lsKey) {\n return (\"\" + (this._namespace) + lsKey)\n};\n\n/**\n * Set a value to localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @param {*} rawValue\n * @param {*} type\n * @private\n */\nVueLocalStorage.prototype._lsSet = function _lsSet (lsKey, rawValue, type) {\n var key = this._getLsKey(lsKey);\n var value = type && [Array, Object].includes(type)\n ? JSON.stringify(rawValue)\n : rawValue;\n\n window.localStorage.setItem(key, value);\n};\n\n/**\n * Get value from localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @returns {any}\n * @private\n */\nVueLocalStorage.prototype._lsGet = function _lsGet (lsKey) {\n var key = this._getLsKey(lsKey);\n\n return window.localStorage[key]\n};\n\n/**\n * Get value from localStorage\n *\n * @param {String} lsKey\n * @param {*} defaultValue\n * @param {*} defaultType\n * @returns {*}\n */\nVueLocalStorage.prototype.get = function get (lsKey, defaultValue, defaultType) {\n var this$1 = this;\n if ( defaultValue === void 0 ) defaultValue = null;\n if ( defaultType === void 0 ) defaultType = String;\n\n if (!this._isSupported) {\n return null\n }\n\n if (this._lsGet(lsKey)) {\n var type = defaultType;\n\n for (var key in this$1._properties) {\n if (key === lsKey) {\n type = this$1._properties[key].type;\n break\n }\n }\n\n return this._process(type, this._lsGet(lsKey))\n }\n\n return defaultValue !== null ? defaultValue : null\n};\n\n/**\n * Set localStorage value\n *\n * @param {String} lsKey\n * @param {*} value\n * @returns {*}\n */\nVueLocalStorage.prototype.set = function set (lsKey, value) {\n var this$1 = this;\n\n if (!this._isSupported) {\n return null\n }\n\n for (var key in this$1._properties) {\n var type = this$1._properties[key].type;\n\n if ((key === lsKey)) {\n this$1._lsSet(lsKey, value, type);\n\n return value\n }\n }\n\n this._lsSet(lsKey, value);\n\n return value\n};\n\n/**\n * Remove value from localStorage\n *\n * @param {String} lsKey\n */\nVueLocalStorage.prototype.remove = function remove (lsKey) {\n if (!this._isSupported) {\n return null\n }\n\n return window.localStorage.removeItem(lsKey)\n};\n\n/**\n * Add new property to localStorage\n *\n * @param {String} key\n * @param {function} type\n * @param {*} defaultValue\n */\nVueLocalStorage.prototype.addProperty = function addProperty (key, type, defaultValue) {\n if ( defaultValue === void 0 ) defaultValue = undefined;\n\n type = type || String;\n\n this._properties[key] = { type: type };\n\n if (!this._lsGet(key) && defaultValue !== null) {\n this._lsSet(key, defaultValue, type);\n }\n};\n\n/**\n * Process the value before return it from localStorage\n *\n * @param {String} type\n * @param {*} value\n * @returns {*}\n * @private\n */\nVueLocalStorage.prototype._process = function _process (type, value) {\n switch (type) {\n case Boolean:\n return value === 'true'\n case Number:\n return parseFloat(value)\n case Array:\n try {\n var array = JSON.parse(value);\n\n return Array.isArray(array) ? array : []\n } catch (e) {\n return []\n }\n case Object:\n try {\n return JSON.parse(value)\n } catch (e) {\n return {}\n }\n default:\n return value\n }\n};\n\nObject.defineProperties( VueLocalStorage.prototype, prototypeAccessors );\n\nvar vueLocalStorage = new VueLocalStorage();\n\nvar index = {\n /**\n * Install vue-local-storage plugin\n *\n * @param {Vue} Vue\n * @param {Object} options\n */\n install: function (Vue, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof process !== 'undefined' &&\n (\n process.server ||\n process.SERVER_BUILD ||\n (process.env && process.env.VUE_ENV === 'server')\n )\n ) {\n return\n }\n\n var isSupported = true;\n\n try {\n var test = '__vue-localstorage-test__';\n\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n } catch (e) {\n isSupported = false;\n vueLocalStorage._isSupported = false;\n\n console.error('Local storage is not supported');\n }\n\n var name = options.name || 'localStorage';\n var bind = options.bind;\n\n if (options.namespace) {\n vueLocalStorage.namespace = options.namespace;\n }\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n var this$1 = this;\n\n if (!isSupported) {\n return\n }\n\n if (this.$options[name]) {\n Object.keys(this.$options[name]).forEach(function (key) {\n var config = this$1.$options[name][key];\n var ref = [config.type, config.default];\n var type = ref[0];\n var defaultValue = ref[1];\n\n vueLocalStorage.addProperty(key, type, defaultValue);\n\n var existingProp = Object.getOwnPropertyDescriptor(vueLocalStorage, key);\n\n if (!existingProp) {\n var prop = {\n get: function () { return Vue.localStorage.get(key, defaultValue); },\n set: function (val) { return Vue.localStorage.set(key, val); },\n configurable: true\n };\n\n Object.defineProperty(vueLocalStorage, key, prop);\n Vue.util.defineReactive(vueLocalStorage, key, defaultValue);\n } else if (!Vue.config.silent) {\n console.log((key + \": is already defined and will be reused\"));\n }\n\n if ((bind || config.bind) && config.bind !== false) {\n this$1.$options.computed = this$1.$options.computed || {};\n\n if (!this$1.$options.computed[key]) {\n this$1.$options.computed[key] = {\n get: function () { return Vue.localStorage[key]; },\n set: function (val) { Vue.localStorage[key] = val; }\n };\n }\n }\n });\n }\n }\n });\n\n Vue[name] = vueLocalStorage;\n Vue.prototype[(\"$\" + name)] = vueLocalStorage;\n }\n};\n\nreturn index;\n\n})));\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","AccountGroup","Delete","Fragment","NcActionButton","NcActionInput","NcAppNavigationItem","NcButton","NcCounterBubble","NcModal","NcNoteCard","Pencil","active","Boolean","required","count","data","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","computed","settings","$store","getters","getServerData","methods","handleGroupMenuOpen","renameGroup","gid","trim","displayName","$refs","displayNameInput","$el","querySelector","value","dispatch","groupid","removeGroup","error","showError","t","group","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","key","params","selectedGroup","encodeURIComponent","scopedSlots","_u","fn","proxy","undefined","isAdmin","ref","Vue","directive","vElementVisibility","extend","dataComponent","Object","Function","dataKey","dataSources","Array","itemHeight","extraProps","bufferItems","index","headerHeight","tableHeight","resizeObserver","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","length","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","tfoot","thead","ResizeObserver","debounce","clientHeight","logger","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","handleFooterVisibility","visible","round","scrollTop","_setupProxy","_t","style","_l","item","i","tag","directives","rawName","expression","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerLabel","showConfig","getShowConfig","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","groups","getGroups","filter","sort","a","b","localeCompare","subAdminsGroups","getSubadminGroups","canAddGroups","map","assign","$isDisabled","canAdd","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","createUser","all","userid","password","email","mailAddress","subadmin","quota","language","code","manager","username","inputField","input","focus","response","ocs","meta","statuscode","handleGroupInput","createGroup","_ref","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","label","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","$listeners","preventDefault","apply","arguments","$set","newUserRequireEmail","class","model","callback","$$v","showLanguages","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActions","NcIconSvgWrapper","actions","disabled","edit","user","editSvg","toggleEdit","action","icon","text","event","externalActions","userGroups","userSubAdminsGroups","availableGroups","groupClone","canRemove","usedSpace","used","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","concat","lang","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","unlimitedQuota","defaultQuota","isObfuscated","keys","at","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","subadmins","delete","disable","wipe","editedDisplayName","displayname","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","userGroupsLabels","join","userSubAdminsGroupsLabels","formatFileSize","canEdit","getCurrentUser","uid","parseFileSize","userActions","deleteUser","wipeUserDevices","enabled","enableDisableUser","sendWelcomeMail","editedUserQuota","get","set","availableLanguages","initManager","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","result","showSuccess","timeout","finally","filterManagers","managers","userId","searchInitialUserManager","updateUserManager","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","isCreating","removeUserGroup","$route","commit","addUserSubAdmin","removeUserSubAdmin","setUserQuota","setUserLanguage","$nextTick","displayNameField","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","NcEmptyContent","NewUserModal","UserListFooter","UserListHeader","VirtualList","UserRow","isInitialLoad","rowHeight","usersSvg","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","old","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeModal","defaultLanguage","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","isModalOpen","getLocalstorage","status","setLocalStorage","newUserSendEmail","axios","post","generateUrl","e","message","localConfig","$localStorage","setDefaultQuota","app","use","VueLocalStorage","AccountOff","Cog","GroupListItem","NcActionText","NcAppContent","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationNew","NcContent","Plus","ShieldAccount","UserList","UserSettingsDialog","newGroupName","isAddGroupOpen","loadingAddGroup","hasAddGroupError","isDialogOpen","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","getUserCount","groupList","isArray","formatGroupMenu","adminGroupMenu","disabledGroupMenu","orderBy","sortGroups","OCA","Settings","registerAction","showNewUserMenu","groupId","indexOf","_k","keyCode","exports","_properties","_namespace","_isSupported","prototypeAccessors","namespace","prototype","_getLsKey","lsKey","_lsSet","rawValue","JSON","stringify","window","localStorage","setItem","_lsGet","defaultValue","defaultType","_process","this$1","remove","removeItem","addProperty","parseFloat","array","parse","defineProperties","vueLocalStorage","install","process","server","SERVER_BUILD","env","VUE_ENV","isSupported","test","bind","mixin","beforeCreate","$options","forEach","config","getOwnPropertyDescriptor","silent","log","prop","configurable","defineProperty","util","defineReactive","factory"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-users-8351.js?v=8ba037e94aafca61870f","mappings":"0JAGIA,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,oPAAqP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,MAAQ,GAAG,SAAW,iHAAiH,eAAiB,CAAC,mSAAmS,WAAa,MAEh0B,S,kFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,iIAAkI,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,sDAAsD,eAAiB,CAAC,0NAA0N,WAAa,MAEpkB,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,0kBAA2kB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,kOAAkO,eAAiB,CAAC,m/BAAu/B,WAAa,MAEh+D,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,ysEAA0sE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,qEAAqE,MAAQ,GAAG,SAAW,kwBAAkwB,eAAiB,CAAC,meAAme,4gGAA4gG,WAAa,MAE7rN,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,45DAA65D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,qEAAqE,MAAQ,GAAG,SAAW,ipBAAipB,eAAiB,CAAC,4IAA4I,4gGAA4gG,WAAa,MAEx8L,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,whFAAyhF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,qEAAqE,MAAQ,GAAG,SAAW,8wBAA8wB,eAAiB,CAAC,k2BAAk2B,4gGAA4gG,WAAa,MAEh5O,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,gFAAiF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,4BAA4B,eAAiB,CAAC,oFAAsF,WAAa,MAErY,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,imBAAkmB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,kNAAkN,eAAiB,CAAC,qwBAAqwB,WAAa,MAEpvD,S,mFCJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,0LAA2L,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,4EAA4E,eAAiB,CAAC,uSAAuS,WAAa,MAExtB,S,8DCPA,I,qLCoBA,MCpB6G,EDoB7G,CACEC,KAAM,iBACNC,MAAO,CAAC,SACRC,MAAO,CACLC,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,M,eEff,SAXgB,OACd,GCRW,WAAkB,IAAIG,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,OAAOF,EAAII,GAAG,CAACC,YAAY,wCAAwCC,MAAM,CAAC,eAAeN,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOc,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOR,EAAIS,MAAM,QAASD,EAAO,IAAI,OAAOR,EAAIU,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAON,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,qPAAqP,CAAEN,EAAS,MAAEE,EAAG,QAAQ,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIP,UAAUO,EAAIa,UACxvB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElBsE,ECoBtG,CACEvB,KAAM,UACNC,MAAO,CAAC,SACRC,MAAO,CACLC,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,MCff,GAXgB,OACd,GCRW,WAAkB,IAAIG,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,OAAOF,EAAII,GAAG,CAACC,YAAY,gCAAgCC,MAAM,CAAC,eAAeN,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOc,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOR,EAAIS,MAAM,QAASD,EAAO,IAAI,OAAOR,EAAIU,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAON,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,g5BAAg5B,CAAEN,EAAS,MAAEE,EAAG,QAAQ,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIP,UAAUO,EAAIa,UAC34C,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,Q,eEEhC,MCpBgH,EDoBhH,CACEvB,KAAM,oBACNC,MAAO,CAAC,SACRC,MAAO,CACLC,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,MEff,GAXgB,OACd,GCRW,WAAkB,IAAIG,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,OAAOF,EAAII,GAAG,CAACC,YAAY,2CAA2CC,MAAM,CAAC,eAAeN,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOc,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOR,EAAIS,MAAM,QAASD,EAAO,IAAI,OAAOR,EAAIU,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAON,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACI,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,uUAAuU,CAAEN,EAAS,MAAEE,EAAG,QAAQ,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIP,UAAUO,EAAIa,UAC70B,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElBhC,I,kECwGA,MCxGyL,EDwGzL,CACAvB,KAAA,gBACAwB,WAAA,CACAC,aAAA,IACAC,OAAA,IACAC,SAAA,IACAC,eAAA,IACAC,cAAA,IACAC,oBAAA,IACAC,SAAA,IACAC,gBAAA,IACAC,QAAA,IACAC,WAAA,IACAC,OAAAA,EAAAA,GAEAjC,MAAA,CAIAkC,OAAA,CACAhC,KAAAiC,QACAC,UAAA,GAKAC,MAAA,CACAnC,KAAAK,OACAF,QAAA,MAKAR,GAAA,CACAK,KAAAC,OACAiC,UAAA,GAKAtC,KAAA,CACAI,KAAAC,OACAiC,UAAA,IAGAE,KAAAA,KACA,CACAC,oBAAA,EACAC,eAAA,EACAC,sBAAA,IAGAC,SAAA,CACAC,QAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,GAEAC,QAAA,CACAC,mBAAAA,GACA,KAAAR,eAAA,CACA,EACA,iBAAAS,CAAAC,GAEA,QAAAA,EAAAC,OACA,OAGA,MAAAC,EAAA,KAAAC,MAAAC,iBAAAC,IAAAC,cAAA,sBAAAC,MAGA,QAAAL,EAAAD,OAIA,IACA,KAAAX,eAAA,EACA,KAAAD,oBAAA,QACA,KAAAK,OAAAc,SAAA,eACAC,QAAAT,EAAAC,OACAC,YAAAA,EAAAD,SAGA,KAAAZ,oBAAA,CACA,OACA,KAAAC,eAAA,EACA,KAAAD,oBAAA,CACA,CACA,EACA,iBAAAqB,GACA,UACA,KAAAhB,OAAAc,SAAA,mBAAA7D,IACA,KAAA4C,sBAAA,CACA,OAAAoB,IACAC,EAAAA,EAAAA,IAAAC,EAAA,+CAAAC,MAAA,KAAAlE,OACA,CACA,I,oIE5LImE,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,OCP1D,SAXgB,OACd,GJTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAAEF,EAAIiC,qBAAsB/B,EAAG,UAAU,CAACK,GAAG,CAAC,MAAQ,SAASC,GAAQR,EAAIiC,sBAAuB,CAAK,IAAI,CAAC/B,EAAG,MAAM,CAACG,YAAY,kBAAkB,CAACH,EAAG,KAAK,CAACG,YAAY,iBAAiB,CAACL,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,qCAAqC,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,UAAU,aAAa,KAAK,CAACN,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,8EAA+E,CAAEC,MAAOxD,EAAIV,QAAS,cAAcU,EAAIW,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,qBAAqB,CAACH,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,aAAaC,GAAG,CAAC,MAAQ,SAASC,GAAQR,EAAIiC,sBAAuB,CAAK,IAAI,CAACjC,EAAIW,GAAG,eAAeX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,WAAW,gBAAgBvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,WAAWC,GAAG,CAAC,MAAQP,EAAIoD,cAAc,CAACpD,EAAIW,GAAG,eAAeX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,YAAY,iBAAiB,IAAI,KAAKvD,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,sBAAsB,CAAC8D,IAAIhE,EAAIX,GAAGiB,MAAM,CAAC,OAAQ,EAAK,KAAON,EAAIV,KAAK,GAAK,CAAEA,KAAM,QAAS2E,OAAQ,CAAEC,cAAeC,mBAAmBnE,EAAIX,MAAQ,QAAUW,EAAI+B,mBAAmB,YAAY/B,EAAIgC,eAAezB,GAAG,CAAC,kBAAkBP,EAAIwC,qBAAqB4B,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,GAAM,CAACP,IAAI,UAAUM,GAAG,WAAW,MAAO,CAAEtE,EAAI6B,MAAO3B,EAAG,kBAAkB,CAACI,MAAM,CAAC,KAAON,EAAI0B,OAAS,mBAAgB8C,IAAY,CAACxE,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAI6B,OAAO,cAAc7B,EAAIa,KAAK,EAAE0D,OAAM,GAAM,CAACP,IAAI,UAAUM,GAAG,WAAW,MAAO,CAAa,UAAXtE,EAAIX,IAA6B,aAAXW,EAAIX,IAAqBW,EAAImC,SAASsC,QAASvE,EAAG,gBAAgB,CAACwE,IAAI,mBAAmBpE,MAAM,CAAC,wBAAwBN,EAAIuD,EAAE,WAAY,UAAU,KAAO,OAAO,MAAQvD,EAAIV,KAAK,MAAQU,EAAIuD,EAAE,WAAY,iBAAiBhD,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOR,EAAIyC,YAAYzC,EAAIX,GAAG,GAAG+E,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,SAAS,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,IAAO,MAAK,EAAM,aAAavE,EAAIa,KAAKb,EAAIW,GAAG,KAAiB,UAAXX,EAAIX,IAA6B,aAAXW,EAAIX,IAAqBW,EAAImC,SAASsC,QAASvE,EAAG,iBAAiB,CAACK,GAAG,CAAC,MAAQ,SAASC,GAAQR,EAAIiC,sBAAuB,CAAI,GAAGmC,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,SAAS,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,IAAO,MAAK,EAAM,aAAa,CAACvE,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiB,cAAcvD,EAAIa,KAAK,EAAE0D,OAAM,QAAW,EACz6E,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBhC,I,qECIAI,EAAAA,GAAIC,UAAU,oBAAqBC,GAAAA,IAEnC,MCNoQ,GDOrPF,EAAAA,GAAIG,OAAO,CACtBxF,KAAM,cACNE,MAAO,CACHuF,cAAe,CACXrF,KAAM,CAACsF,OAAQC,UACfrD,UAAU,GAEdsD,QAAS,CACLxF,KAAMC,OACNiC,UAAU,GAEduD,YAAa,CACTzF,KAAM0F,MACNxD,UAAU,GAEdyD,WAAY,CACR3F,KAAMK,OACN6B,UAAU,GAEd0D,WAAY,CACR5F,KAAMsF,OACNnF,QAASA,KAAA,CAAS,KAG1BiC,KAAIA,KACO,CACHyD,YA3BQ,EA4BRC,MAAO,EACPC,aAAc,EACdC,YAAa,EACbC,eAAgB,OAGxBzD,SAAU,CACN0D,UAAAA,GACI,OAAOC,KAAKC,IAAI,EAAG,KAAKN,MApChB,EAqCZ,EACAO,UAAAA,GACI,OAAOF,KAAKG,MAAM,KAAKN,YAAc,KAAKD,cAAgB,KAAKJ,YAAcE,CACjF,EACAU,aAAAA,GACI,OAAO,KAAKd,YAAYe,MAAM,KAAKN,WAAY,KAAKA,WAAa,KAAKG,WAC1E,EACAI,UAAAA,GACI,MAAMC,EAAiB,KAAKR,WAAa,KAAKG,WAAa,KAAKZ,YAAYkB,OACtEC,EAAY,KAAKnB,YAAYkB,OAAS,KAAKT,WAAa,KAAKG,WAC7DQ,EAAmBV,KAAKW,IAAI,KAAKrB,YAAYkB,OAAS,KAAKT,WAAYU,GAC7E,MAAO,CACHG,WAAe,KAAKb,WAAa,KAAKP,WAAzB,KACbqB,cAAeN,EAAiB,EAAOG,EAAmB,KAAKlB,WAA1B,KAE7C,GAEJsB,OAAAA,GACI,MAAMC,EAAO,KAAK7D,IACZ8D,EAAQ,KAAKhE,OAAOgE,MACpBC,EAAQ,KAAKjE,OAAOiE,MAC1B,KAAKnB,eAAiB,IAAIoB,gBAAeC,EAAAA,GAAAA,WAAS,KAC9C,KAAKvB,aAAeqB,GAAOG,cAAgB,EAC3C,KAAKvB,YAAckB,GAAMK,cAAgB,EACzCC,GAAAA,EAAOC,MAAM,sCACb,KAAKC,UAAU,GAChB,KAAK,IACR,KAAKzB,eAAe0B,QAAQT,GAC5B,KAAKjB,eAAe0B,QAAQR,GAC5B,KAAKlB,eAAe0B,QAAQP,GAC5B,KAAK/D,IAAIuE,iBAAiB,SAAU,KAAKF,SAC7C,EACAG,aAAAA,GACQ,KAAK5B,gBACL,KAAKA,eAAe6B,YAE5B,EACAjF,QAAS,CACLkF,sBAAAA,CAAuBC,GACfA,GACA,KAAKjH,MAAM,aAEnB,EACA2G,QAAAA,GAEI,KAAK5B,MAAQK,KAAKC,IAAI,EAAGD,KAAK8B,MAAM,KAAK5E,IAAI6E,UAAY,KAAKvC,YAClE,K,gBE9EJ,GAAU,CAAC,EAEf,GAAQ3B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IHTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0H,YAAmB3H,EAAG,QAAQ,CAACG,YAAY,aAAa,CAACL,EAAI8H,GAAG,UAAU9H,EAAIW,GAAG,KAAKT,EAAG,QAAQ,CAACwE,IAAI,QAAQrE,YAAY,oBAAoBC,MAAM,CAAC,KAAO,aAAa,CAACN,EAAI8H,GAAG,WAAW,GAAG9H,EAAIW,GAAG,KAAKT,EAAG,QAAQ,CAACG,YAAY,kBAAkB0H,MAAO/H,EAAImG,YAAanG,EAAIgI,GAAIhI,EAAIiG,eAAe,SAASgC,EAAKC,GAAG,OAAOhI,EAAGF,EAAI+E,cAAc/E,EAAII,GAAG,CAAC4D,IAAIiE,EAAKjI,EAAIkF,SAASiD,IAAI,YAAY7H,MAAM,CAAC,KAAO2H,EAAK,SAAWC,GAAKlI,EAAIuF,aAAevF,EAAIwF,OAASxF,EAAIuF,cAAiB2C,EAAIlI,EAAI+F,WAAa/F,EAAIuF,cAAe,YAAYvF,EAAIsF,YAAW,GAAO,IAAG,GAAGtF,EAAIW,GAAG,KAAKT,EAAG,QAAQ,CAACkI,WAAW,CAAC,CAAC9I,KAAK,qBAAqB+I,QAAQ,uBAAuBpF,MAAOjD,EAAIyH,uBAAwBa,WAAW,2BAA2B5D,IAAI,QAAQrE,YAAY,oBAAoBC,MAAM,CAAC,KAAO,aAAa,CAACN,EAAI8H,GAAG,WAAW,IAAI,EAC73B,GACsB,IGUpB,EACA,KACA,WACA,MAI8B,QCnBhC,I,oCCqLA,MCrL8L,GDqL9L,CACAxI,KAAA,eAEAwB,WAAA,CACAO,SAAA,IACAE,QAAA,IACAgH,gBAAA,KACAC,SAAA,KACAC,YAAAA,GAAAA,GAGAjJ,MAAA,CACAkJ,QAAA,CACAhJ,KAAAsF,OACApD,UAAA,GAGA+G,QAAA,CACAjJ,KAAAsF,OACApD,UAAA,GAGAgH,aAAA,CACAlJ,KAAA0F,MACAxD,UAAA,IAIAE,KAAAA,KACA,CACA+G,iBAAA,GAEAC,aAAAvF,EAAA,iCAIArB,SAAA,CACA6G,UAAAA,GACA,YAAA3G,OAAAC,QAAA2G,aACA,EAEA7G,QAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEA2G,aAAAA,GACA,YAAA9G,SAAA+G,sBACA3F,EAAA,6CAEAA,EAAA,iCACA,EAEA4F,iBAAAA,GACA,YAAA/G,OAAAC,QAAA+G,0BACA,EAEAC,MAAAA,GAEA,YAAAjH,OAAAC,QAAAiH,UACAC,QAAA/F,GAAA,aAAAA,EAAAnE,KACAmK,MAAA,CAAAC,EAAAC,IAAAD,EAAAnK,KAAAqK,cAAAD,EAAApK,OACA,EAEAsK,eAAAA,GAEA,YAAAxH,OAAAC,QAAAwH,iBACA,EAEAC,YAAAA,GAEA,YAAAT,OAAAU,KAAAvG,KAGAA,EAAAwB,OAAAgF,OAAA,GAAAxG,IACAyG,aAAA,IAAAzG,EAAA0G,OACA1G,IAEA,EAEA2G,SAAAA,GACA,OACA,CACA7K,KAAAiE,EAAA,+BACA4G,UAAA,KAAAhI,SAAAgI,UAAAC,oBAEA,KAAAjI,SAAAgI,UAAAC,gBACA,CACA9K,KAAAiE,EAAA,8BACA4G,UAAA,KAAAhI,SAAAgI,UAAAE,mBAEA,KAAAlI,SAAAgI,UAAAE,eAEA,GAGA,iBAAAC,SACA,KAAAC,mBACA,EAEAhI,QAAA,CACA,gBAAAiI,GACA,KAAA9B,QAAA+B,KAAA,EACA,UACA,KAAArI,OAAAc,SAAA,WACAwH,OAAA,KAAA/B,QAAAtJ,GACAsL,SAAA,KAAAhC,QAAAgC,SACA/H,YAAA,KAAA+F,QAAA/F,YACAgI,MAAA,KAAAjC,QAAAkC,YACAxB,OAAA,KAAAV,QAAAU,OAAAU,KAAAvG,GAAAA,EAAAnE,KACAyL,SAAA,KAAAnC,QAAAiB,gBAAAG,KAAAvG,GAAAA,EAAAnE,KACA0L,MAAA,KAAApC,QAAAoC,MAAA1L,GACA2L,SAAA,KAAArC,QAAAqC,SAAAC,KACAC,QAAA,KAAAvC,QAAAuC,QAAA7L,KAGA,KAAAoB,MAAA,SACA,KAAAoC,MAAAsI,UAAAtI,OAAAuI,YAAAvI,OAAAwI,OAAAC,UACA,KAAA7K,MAAA,QACA,OAAA4C,GAEA,GADA,KAAAqF,QAAA+B,KAAA,EACApH,EAAAkI,UAAAlI,EAAAkI,SAAAzJ,MAAAuB,EAAAkI,SAAAzJ,KAAA0J,KAAAnI,EAAAkI,SAAAzJ,KAAA0J,IAAAC,KAAA,CACA,MAAAC,EAAArI,EAAAkI,SAAAzJ,KAAA0J,IAAAC,KAAAC,WACA,MAAAA,EAEA,KAAA7I,MAAAsI,UAAAtI,OAAAuI,YAAAvI,OAAAwI,OAAAC,UACA,MAAAI,GAEA,KAAA7I,MAAA8H,UAAA9H,OAAAuI,YAAAvI,OAAAwI,OAAAC,SAEA,CACA,CACA,EAEAK,gBAAAA,CAAAtC,GAMA,KAAAV,QAAAU,OAAAA,EAAAE,QAAA/F,GAAA7B,QAAA6B,EAAAnE,KACA,EAQA,iBAAAuM,CAAAC,GAAA,IAAAvM,KAAAoD,GAAAmJ,EACA,KAAAnD,QAAAW,QAAA,EACA,UACA,KAAAjH,OAAAc,SAAA,WAAAR,GACA,KAAAiG,QAAAU,OAAAlK,KAAA,KAAAkK,OAAAyC,MAAAtI,GAAAA,EAAAnE,KAAAqD,KACA,KAAAgG,QAAAW,QAAA,CACA,OAAAhG,GACA,KAAAqF,QAAAW,QAAA,CACA,CACA,EAQA0C,aAAAA,CAAAhB,GAEA,MAAAiB,EAAAC,GAAAC,KAAAC,iBAAApB,GACA,cAAAiB,GAAAA,GAAA,GAEAjB,EAAAkB,GAAAC,KAAAE,cAAAH,GAAAC,KAAAC,iBAAApB,IACA,KAAApC,QAAAoC,MAAA,CAAA1L,GAAA0L,EAAAsB,MAAAtB,GACA,KAAApC,QAAAoC,QAGA,KAAApC,QAAAoC,MAAA,KAAAnC,aAAA,GACA,KAAAA,aAAA,GACA,EAEA0D,iBAAAA,CAAAC,EAAAF,EAAAG,IAEAD,EAAApC,UACAoC,EAAApC,UAAAsC,MACAC,IAAA,SAAApN,GAAAoN,EAAA,OAAApN,EAAAqN,oBAAAC,SAAAJ,EAAAG,oBAAA,KAIAN,GAAA,IAAAM,oBAAAC,SAAAJ,EAAAG,qBAGA,uBAAApC,CAAAsC,SACA,KAAAzK,OAAAc,SACA,cACA,CACA4J,OAAA,EACAC,MAAA,GACAP,OAAAK,IAEAG,MAAAzB,IACA,MAAA0B,EAAA1B,GAAAzJ,KAAAkD,OAAAkI,OAAA3B,GAAAzJ,KAAA0J,IAAA1J,KAAAmL,OAAA,GACAA,EAAA5G,OAAA,IACA,KAAAwC,iBAAAoE,EACA,GAEA,I,gBEtXI,GAAU,CAAC,EAEf,GAAQvJ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IJTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAUF,EAAImN,GAAG,CAAC9M,YAAY,QAAQC,MAAM,CAAC,KAAO,UAAUN,EAAIoN,YAAY,CAAClN,EAAG,OAAO,CAACG,YAAY,cAAcC,MAAM,CAAC,YAAY,OAAO,SAAWN,EAAI0I,QAAQ+B,KAAKlK,GAAG,CAAC,OAAS,SAASC,GAAgC,OAAxBA,EAAO6M,iBAAwBrN,EAAIwK,WAAW8C,MAAM,KAAMC,UAAU,IAAI,CAACrN,EAAG,KAAK,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,gBAAgBvD,EAAIW,GAAG,KAAKT,EAAG,cAAc,CAACwE,IAAI,WAAWrE,YAAY,cAAcC,MAAM,CAAC,YAAY,WAAW,MAAQN,EAAI2I,QAAQtJ,GAAG,SAAWW,EAAImC,SAAS+G,sBAAsB,MAAQlJ,EAAIiJ,cAAc,eAAiB,OAAO,aAAe,MAAM,WAAa,QAAQ,QAAU,yBAAyB,SAAW,IAAI1I,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIwN,KAAKxN,EAAI2I,QAAS,KAAMnI,EAAO,KAAKR,EAAIW,GAAG,KAAKT,EAAG,cAAc,CAACG,YAAY,cAAcC,MAAM,CAAC,YAAY,cAAc,MAAQN,EAAI2I,QAAQ/F,YAAY,MAAQ5C,EAAIuD,EAAE,WAAY,gBAAgB,eAAiB,OAAO,aAAe,MAAM,WAAa,SAAShD,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIwN,KAAKxN,EAAI2I,QAAS,cAAenI,EAAO,KAAKR,EAAIW,GAAG,KAAOX,EAAImC,SAASsL,oBAA+LzN,EAAIa,KAA9KX,EAAG,OAAO,CAACG,YAAY,cAAcC,MAAM,CAAC,GAAK,wBAAwB,CAACN,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,yCAAyC,YAAqBvD,EAAIW,GAAG,KAAKT,EAAG,kBAAkB,CAACwE,IAAI,WAAWrE,YAAY,cAAcC,MAAM,CAAC,YAAY,WAAW,MAAQN,EAAI2I,QAAQgC,SAAS,UAAY3K,EAAImJ,kBAAkB,UAAY,IAAI,mBAAmB,sBAAsB,MAAoC,KAA5BnJ,EAAI2I,QAAQkC,YAAqB7K,EAAIuD,EAAE,WAAY,uBAAyBvD,EAAIuD,EAAE,WAAY,YAAY,eAAiB,OAAO,aAAe,eAAe,WAAa,QAAQ,SAAuC,KAA5BvD,EAAI2I,QAAQkC,aAAoBtK,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIwN,KAAKxN,EAAI2I,QAAS,WAAYnI,EAAO,KAAKR,EAAIW,GAAG,KAAKT,EAAG,cAAc,CAACG,YAAY,cAAcC,MAAM,CAAC,YAAY,QAAQ,KAAO,QAAQ,MAAQN,EAAI2I,QAAQkC,YAAY,mBAAmB,sBAAsB,MAAiC,KAAzB7K,EAAI2I,QAAQgC,UAAmB3K,EAAImC,SAASsL,oBAAsBzN,EAAIuD,EAAE,WAAY,oBAAsBvD,EAAIuD,EAAE,WAAY,SAAS,eAAiB,OAAO,aAAe,MAAM,WAAa,QAAQ,SAAoC,KAAzBvD,EAAI2I,QAAQgC,UAAmB3K,EAAImC,SAASsL,qBAAqBlN,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIwN,KAAKxN,EAAI2I,QAAS,cAAenI,EAAO,KAAKR,EAAIW,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,eAAe,CAAGL,EAAImC,SAASsC,QAAiMzE,EAAIa,KAA5LX,EAAG,cAAc,CAACwN,MAAM,CAAE,qBAAsB1N,EAAI0I,QAAQW,QAAS/I,MAAM,CAAC,GAAK,wBAAwB,SAAW,KAAK,MAAQN,EAAI2I,QAAQU,OAAO,UAAYrJ,EAAImC,SAASsC,WAAoBzE,EAAIW,GAAG,KAAKT,EAAG,QAAQ,CAACG,YAAY,eAAeC,MAAM,CAAC,IAAM,oBAAoB,CAACN,EAAIW,GAAG,aAAaX,EAAIY,GAAIZ,EAAImC,SAASsC,QAAmDzE,EAAIuD,EAAE,WAAY,UAA3DvD,EAAIuD,EAAE,WAAY,sBAAoD,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,gBAAgBC,MAAM,CAAC,WAAW,kBAAkB,YAAcN,EAAIuD,EAAE,WAAY,mBAAmB,SAAWvD,EAAI0I,QAAQW,QAAUrJ,EAAI0I,QAAQ+B,IAAI,QAAUzK,EAAI8J,aAAa,MAAQ9J,EAAI2I,QAAQU,OAAO,MAAQ,OAAO,mBAAkB,EAAM,UAAW,EAAK,UAAW,GAAM9I,GAAG,CAAC,MAAQP,EAAI2L,iBAAiB,iBAAiB3L,EAAI4L,gBAAgB,GAAG5L,EAAIW,GAAG,KAAMX,EAAI4J,gBAAgBvD,OAAS,GAAKrG,EAAImC,SAASsC,QAASvE,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeC,MAAM,CAAC,IAAM,uBAAuB,CAACN,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,wBAAwB,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,gBAAgBC,MAAM,CAAC,WAAW,qBAAqB,YAAcN,EAAIuD,EAAE,WAAY,2BAA2B,QAAUvD,EAAI4J,gBAAgB,mBAAkB,EAAM,UAAW,EAAK,MAAQ,QAAQ+D,MAAM,CAAC1K,MAAOjD,EAAI2I,QAAQiB,gBAAiBgE,SAAS,SAAUC,GAAM7N,EAAIwN,KAAKxN,EAAI2I,QAAS,kBAAmBkF,EAAI,EAAEvF,WAAW,8BAA8B,GAAGtI,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeC,MAAM,CAAC,IAAM,mBAAmB,CAACN,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,UAAU,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,gBAAgBC,MAAM,CAAC,WAAW,iBAAiB,YAAcN,EAAIuD,EAAE,WAAY,kBAAkB,QAAUvD,EAAI4I,aAAa,WAAY,EAAM,UAAW,EAAK,gBAAgB5I,EAAI+L,eAAe4B,MAAM,CAAC1K,MAAOjD,EAAI2I,QAAQoC,MAAO6C,SAAS,SAAUC,GAAM7N,EAAIwN,KAAKxN,EAAI2I,QAAS,QAASkF,EAAI,EAAEvF,WAAW,oBAAoB,GAAGtI,EAAIW,GAAG,KAAMX,EAAI+I,WAAW+E,cAAe5N,EAAG,MAAM,CAACG,YAAY,eAAe,CAACH,EAAG,QAAQ,CAACG,YAAY,eAAeC,MAAM,CAAC,IAAM,sBAAsB,CAACN,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,aAAa,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,gBAAgBC,MAAM,CAAC,WAAW,oBAAoB,YAAcN,EAAIuD,EAAE,WAAY,wBAAwB,WAAY,EAAM,WAAagJ,IAAWA,EAAOpC,UAAU,YAAYnK,EAAIsM,iBAAiB,QAAUtM,EAAImK,UAAU,MAAQ,QAAQwD,MAAM,CAAC1K,MAAOjD,EAAI2I,QAAQqC,SAAU4C,SAAS,SAAUC,GAAM7N,EAAIwN,KAAKxN,EAAI2I,QAAS,WAAYkF,EAAI,EAAEvF,WAAW,uBAAuB,GAAGtI,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,MAAM,CAACwN,MAAM,CAAC,uBAAwB,CAAE,qBAAsB1N,EAAI0I,QAAQwC,WAAY,CAAChL,EAAG,QAAQ,CAACG,YAAY,eAAeC,MAAM,CAAC,IAAM,qBAAqB,CAACN,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,YAAY,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,gBAAgBC,MAAM,CAAC,WAAW,mBAAmB,YAAcN,EAAI8I,aAAa,QAAU9I,EAAI6I,iBAAiB,eAAc,EAAK,MAAQ,eAAetI,GAAG,CAAC,OAASP,EAAIuK,mBAAmBoD,MAAM,CAAC1K,MAAOjD,EAAI2I,QAAQuC,QAAS0C,SAAS,SAAUC,GAAM7N,EAAIwN,KAAKxN,EAAI2I,QAAS,UAAWkF,EAAI,EAAEvF,WAAW,sBAAsB,GAAGtI,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,gBAAgBC,MAAM,CAAC,YAAY,SAAS,KAAO,UAAU,cAAc,WAAW,CAACN,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiB,aAAa,IAC33L,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBuO,GCGxPoB,EAAAA,GAAIG,OAAO,CACtBxF,KAAM,iBACNwB,WAAY,CACRiN,cAAaA,EAAAA,GAEjBvO,MAAO,CACHkJ,QAAS,CACLhJ,KAAMiC,QACNC,UAAU,GAEdoM,cAAe,CACXtO,KAAM0F,MACNxD,UAAU,IAGlBM,SAAU,CACN+L,SAAAA,GACI,OAAI,KAAKvF,QACE,KAAKwF,EAAE,WAAY,qBAAsB,sBAAuB,KAAKF,cAAc3H,OAAQ,CAC9F4H,UAAW,KAAKD,cAAc3H,SAG/B,KAAK6H,EAAE,WAAY,mBAAoB,oBAAqB,KAAKF,cAAc3H,OAAQ,CAC1F4H,UAAW,KAAKD,cAAc3H,QAEtC,GAEJ9D,QAAS,CACLgB,EAAC,KACD2K,EAACA,EAAAA,M,gBCrBL,GAAU,CAAC,EAEf,GAAQxK,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IFTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0H,YAAmB3H,EAAG,KAAK,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACI,MAAM,CAAC,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACL,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,4BAA4BvD,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,sCAAsC,CAAEL,EAAI0I,QAASxI,EAAG,gBAAgB,CAACI,MAAM,CAAC,MAAQN,EAAIuD,EAAE,WAAY,mBAAmB,KAAO,MAAMvD,EAAIa,MAAM,GAAGb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,4DAA4D,CAACH,EAAG,OAAO,CAACI,MAAM,CAAC,mBAAmB,oBAAoB,CAACN,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIiO,cAAcjO,EAAIW,GAAG,KAAKT,EAAG,OAAO,CAACG,YAAY,kBAAkBC,MAAM,CAAC,GAAK,oBAAoB,CAACN,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,6BAA6B,eACtxB,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,QCnBuO,GCExPoB,EAAAA,GAAIG,OAAO,CACtBxF,KAAM,iBACNE,MAAO,CACH2O,cAAe,CACXzO,KAAMiC,QACNC,UAAU,IAGlBM,SAAU,CACN6G,UAAAA,GAEI,OAAO,KAAK3G,OAAOC,QAAQ2G,aAC/B,EACA7G,QAAAA,GAEI,OAAO,KAAKC,OAAOC,QAAQC,aAC/B,EACAsH,eAAAA,GAEI,OAAO,KAAKxH,OAAOC,QAAQwH,iBAC/B,EACAuE,aAAAA,GACI,OAAI,KAAKD,eAEE5K,EAAAA,EAAAA,IAAE,WAAY,iDAElBA,EAAAA,EAAAA,IAAE,WAAY,WACzB,GAEJhB,QAAS,CACLgB,EAACA,EAAAA,M,gBCrBL,GAAU,CAAC,EAEf,GAAQG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IFTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0H,YAAmB3H,EAAG,KAAK,CAACG,YAAY,UAAU,CAACH,EAAG,KAAK,CAACG,YAAY,oCAAoCC,MAAM,CAAC,kCAAkC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACL,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,WAAW,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,yCAAyCC,MAAM,CAAC,uCAAuC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,SAAS,CAACF,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiB,YAAYvD,EAAIW,GAAG,KAAKT,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACL,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,aAAa,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,eAAeqN,MAAM,CAAE,2BAA4B1N,EAAImO,eAAgB7N,MAAM,CAAC,oCAAoC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIoO,oBAAoBpO,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,eAAeC,MAAM,CAAC,iCAAiC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,eAAevD,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,mCAAmCC,MAAM,CAAC,kCAAkC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,gBAAgBvD,EAAIW,GAAG,KAAMX,EAAI4J,gBAAgBvD,OAAS,GAAKrG,EAAImC,SAASsC,QAASvE,EAAG,KAAK,CAACG,YAAY,mCAAmCC,MAAM,CAAC,qCAAqC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,yBAAyBvD,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,eAAeC,MAAM,CAAC,iCAAiC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,eAAevD,EAAIW,GAAG,KAAMX,EAAI+I,WAAW+E,cAAe5N,EAAG,KAAK,CAACG,YAAY,mCAAmCC,MAAM,CAAC,qCAAqC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,kBAAkBvD,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+I,WAAWsF,iBAAmBrO,EAAI+I,WAAWuF,gBAAiBpO,EAAG,KAAK,CAACG,YAAY,mCAAmCC,MAAM,CAAC,4CAA4C,GAAG,MAAQ,QAAQ,CAAEN,EAAI+I,WAAWsF,gBAAiBnO,EAAG,OAAO,CAACF,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiB,YAAYvD,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+I,WAAWuF,gBAAiBpO,EAAG,OAAO,CAACG,YAAY,oBAAoB,CAACL,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,qBAAqB,YAAYvD,EAAIa,OAAOb,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+I,WAAWwF,cAAerO,EAAG,KAAK,CAACG,YAAY,eAAeC,MAAM,CAAC,sCAAsC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,oBAAoBvD,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,sDAAsDC,MAAM,CAAC,mCAAmC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiBvD,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,qCAAqCC,MAAM,CAAC,mCAAmC,GAAG,MAAQ,QAAQ,CAACJ,EAAG,OAAO,CAACG,YAAY,mBAAmB,CAACL,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiB,eAC/iG,GACsB,IEUpB,EACA,KACA,WACA,MAI8B,QCnBhC,I,iECAuQ,ICMxPiL,EAAAA,EAAAA,IAAgB,CAC3B1N,WAAY,CACRI,eAAc,IACduN,UAAS,KACTC,iBAAgBA,EAAAA,GAEpBlP,MAAO,CAIHmP,QAAS,CACLjP,KAAM0F,MACNxD,UAAU,GAKdgN,SAAU,CACNlP,KAAMiC,QACNC,UAAU,GAKdiN,KAAM,CACFnP,KAAMiC,QACNC,UAAU,GAKdkN,KAAM,CACFpP,KAAMsF,OACNpD,UAAU,IAGlBM,SAAU,CAIN6M,OAAAA,GACI,OAAO,KAAKF,K,4YAChB,GAEJtM,QAAS,CAILyM,UAAAA,GACI,KAAKvO,MAAM,eAAgB,KAAKoO,KACpC,KCtCR,IAXgB,OACd,IDRW,WAAkB,IAAI7O,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0H,YAAmB3H,EAAG,YAAY,CAACI,MAAM,CAAC,aAAaN,EAAIuD,EAAE,WAAY,4BAA4B,SAAWvD,EAAI4O,SAAS,OAAS,IAAI,CAAC1O,EAAG,iBAAiB,CAACI,MAAM,CAAC,uCAAwC,GAAEN,EAAI6O,OAAO,SAAW7O,EAAI4O,UAAUrO,GAAG,CAAC,MAAQP,EAAIgP,YAAY5K,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,mBAAmB,CAAC8D,IAAIhE,EAAI+O,QAAQzO,MAAM,CAAC,IAAMN,EAAI+O,QAAQ,cAAc,UAAU,EAAExK,OAAM,MAAS,CAACvE,EAAIW,GAAG,SAASX,EAAIY,GAAGZ,EAAI6O,KAAO7O,EAAIuD,EAAE,WAAY,QAAUvD,EAAIuD,EAAE,WAAY,SAAS,YAAYvD,EAAIW,GAAG,KAAKX,EAAIgI,GAAIhI,EAAI2O,SAAS,SAAA9C,EAAgCrG,GAAM,IAA7B,OAAEyJ,EAAM,KAAEC,EAAI,KAAEC,GAAMtD,EAAQ,OAAO3L,EAAG,iBAAiB,CAAC8D,IAAIwB,EAAMlF,MAAM,CAAC,SAAWN,EAAI4O,SAAS,aAAaO,EAAK,KAAOD,GAAM3O,GAAG,CAAC,MAAS6O,GAAUH,EAAOG,EAAO,IAAKpP,EAAI8O,SAAU,CAAC9O,EAAIW,GAAG,SAASX,EAAIY,GAAGuO,GAAM,SAAS,KAAI,EACl3B,GACsB,ICSpB,EACA,KACA,KACA,MAI8B,QCMhC,IACC3P,MAAO,CACNsP,KAAM,CACLpP,KAAMsF,OACNpD,UAAU,GAEXO,SAAU,CACTzC,KAAMsF,OACNnF,QAASA,KAAA,CAAS,IAEnBwJ,OAAQ,CACP3J,KAAM0F,MACNvF,QAASA,IAAM,IAEhB+J,gBAAiB,CAChBlK,KAAM0F,MACNvF,QAASA,IAAM,IAEhB+I,aAAc,CACblJ,KAAM0F,MACNvF,QAASA,IAAM,IAEhBsK,UAAW,CACVzK,KAAM0F,MACNxD,UAAU,GAEXyN,gBAAiB,CAChB3P,KAAM0F,MACNvF,QAASA,IAAM,KAGjBqC,SAAU,CACT6G,UAAAA,GACC,OAAO9I,KAAKmC,OAAOC,QAAQ2G,aAC5B,EAGAsG,UAAAA,GAEC,OADmBrP,KAAKoJ,OAAOE,QAAO/F,GAASvD,KAAK6O,KAAKzF,OAAOuD,SAASpJ,EAAMnE,KAEhF,EACAkQ,mBAAAA,GAEC,OAD4BtP,KAAK2J,gBAAgBL,QAAO/F,GAASvD,KAAK6O,KAAKhE,SAAS8B,SAASpJ,EAAMnE,KAEpG,EACAmQ,eAAAA,GACC,OAAOvP,KAAKoJ,OAAOU,KAAKvG,IAGvB,MAAMiM,EAAazK,OAAOgF,OAAO,CAAC,EAAGxG,GAUrC,OALAiM,EAAWxF,aACU,IAAjBzG,EAAM0G,SACJjK,KAAK6O,KAAKzF,OAAOuD,SAASpJ,EAAMnE,MACb,IAApBmE,EAAMkM,WACNzP,KAAK6O,KAAKzF,OAAOuD,SAASpJ,EAAMnE,IAC9BoQ,CAAU,GAEnB,EAGAE,SAAAA,GACC,OAAI1P,KAAK6O,KAAK/D,MAAM6E,KACZrM,EAAE,WAAY,cAAe,CAAEzD,KAAMmM,GAAGC,KAAKE,cAAcnM,KAAK6O,KAAK/D,MAAM6E,QAE5ErM,EAAE,WAAY,cAAe,CAAEzD,KAAMmM,GAAGC,KAAKE,cAAc,IACnE,EACAyD,SAAAA,GACC,IAAI9E,EAAQ9K,KAAK6O,KAAK/D,MAAMA,MAQ5B,OANCA,EADGA,EAAQ,EACHlF,KAAKW,IAAI,IAAKX,KAAK8B,MAAM1H,KAAK6O,KAAK/D,MAAM6E,KAAO7E,EAAQ,MAIxD,IAAM,EAAK,GAFF9K,KAAK6O,KAAK/D,MAAM6E,MAAQ,GAAK/J,KAAKiK,IAAI,EAAG,KAEvB,IAE7BC,MAAMhF,GAAS,EAAIA,CAC3B,EAEAiF,SAAAA,GACC,GAAI/P,KAAK6O,KAAK/D,MAAMA,OAAS,EAAG,CAE/B,MAAMkF,EAAahE,GAAGC,KAAKE,cAAcnM,KAAK6O,KAAK/D,MAAMA,OAEzD,OADkB9K,KAAK2I,aAAakD,MAAKf,GAASA,EAAM1L,KAAO4Q,KAC3C,CAAE5Q,GAAI4Q,EAAY5D,MAAO4D,EAC9C,CAAO,MAA8B,YAA1BhQ,KAAK6O,KAAK/D,MAAMA,MAEnB9K,KAAK2I,aAAa,GAEnB3I,KAAK2I,aAAa,EAC1B,EAGAO,iBAAAA,GACC,OAAOlJ,KAAKmC,OAAOC,QAAQ+G,0BAC5B,EAGA8G,YAAAA,GACC,MACMC,EADqBlQ,KAAKkK,UAAU,GAAGA,UAAUiG,OAAOnQ,KAAKkK,UAAU,GAAGA,WAC5C2B,MAAKuE,GAAQA,EAAKpF,OAAShL,KAAK6O,KAAK9D,WACzE,MAAwB,iBAAbmF,GAAgD,KAAvBlQ,KAAK6O,KAAK9D,SACtC,CACNC,KAAMhL,KAAK6O,KAAK9D,SAChB1L,KAAMW,KAAK6O,KAAK9D,UAEgB,KAAvB/K,KAAK6O,KAAK9D,UAGdmF,CACR,EAGAG,oBAAAA,GACC,OAAIrQ,KAAK6O,KAAKyB,UAAY,EAClBtE,GAAGC,KAAKsE,WAAWvQ,KAAK6O,KAAKyB,WAE9B,EACR,EACAE,aAAAA,GACC,OAAIxQ,KAAK6O,KAAKyB,UAAY,EAClBtE,GAAGC,KAAKwE,qBAAqBzQ,KAAK6O,KAAKyB,WAExChN,EAAE,WAAY,QACtB,IClIWoN,GAAiB,CAC1BtR,GAAI,OACJgN,MAAO9I,EAAE,WAAY,cAEZqN,GAAe,CACxBvR,GAAI,UACJgN,MAAO9I,EAAE,WAAY,kBAQZsN,GAAgB/B,IACzB,MAAMgC,EAAO9L,OAAO8L,KAAKhC,GACzB,OAAuB,IAAhBgC,EAAKzK,QAA+B,OAAfyK,EAAKC,GAAG,EAAW,E,gBCkRnD,MCvTyL,GDuTzL,CACAzR,KAAA,UAEAwB,WAAA,CACAkQ,SAAA,KACAjD,cAAA,IACAkD,cAAA,KACAzI,SAAA,KACAC,YAAA,KACAyI,eAAAA,IAGAC,OAAA,CACAC,IAGA5R,MAAA,CACAsP,KAAA,CACApP,KAAAsF,OACApD,UAAA,GAEA8F,QAAA,CACAhI,KAAAiC,QACAC,UAAA,GAEAqL,MAAA,CACAvN,KAAA0F,MACAxD,UAAA,GAEAuM,cAAA,CACAzO,KAAAiC,QACAC,UAAA,GAEAyH,OAAA,CACA3J,KAAA0F,MACAvF,QAAAA,IAAA,IAEA+J,gBAAA,CACAlK,KAAA0F,MACAxD,UAAA,GAEAgH,aAAA,CACAlJ,KAAA0F,MACAxD,UAAA,GAEAuI,UAAA,CACAzK,KAAA0F,MACAxD,UAAA,GAEAO,SAAA,CACAzC,KAAAsF,OACApD,UAAA,GAEAyN,gBAAA,CACA3P,KAAA0F,MACAvF,QAAAA,IAAA,KAIAiC,IAAAA,GACA,OACAuP,eAAA,EACAC,KAAAzL,KAAA0L,SAAAC,SAAA,IAAAC,UAAA,GACAC,yBAAA,EACA7I,iBAAA,GACA8I,eAAA,GACAC,SAAA,EACAlJ,QAAA,CACA+B,KAAA,EACA7H,aAAA,EACA+H,UAAA,EACAE,aAAA,EACAxB,QAAA,EACAwI,WAAA,EACA9G,OAAA,EACA+G,QAAA,EACAC,SAAA,EACA5H,WAAA,EACA6H,MAAA,EACA9G,SAAA,GAEA+G,kBAAA,KAAAnD,KAAAoD,YACAC,eAAA,GACAC,WAAA,KAAAtD,KAAAlE,OAAA,GAEA,EAEA1I,SAAA,CACA4G,aAAAA,IAEAvF,EAAA,+BAGAsN,YAAAA,GACA,OAAAA,GAAA,KAAA/B,KACA,EAEA/F,UAAAA,GACA,YAAA3G,OAAAC,QAAA2G,aACA,EAEAqJ,aAAAA,GACA,YAAA3J,QAAAoJ,QAAA,KAAApJ,QAAAqJ,SAAA,KAAArJ,QAAAsJ,IACA,EAEAM,cAAAA,GACA,YAAA5J,QAAAoJ,QAAA,KAAApJ,QAAAqJ,SAAA,KAAArJ,QAAA+B,GACA,EAEA8H,QAAAA,GACA,OAAApO,mBAAA,KAAA2K,KAAAzP,GAAA,KAAAiS,KACA,EAEAkB,gBAAAA,GACA,YAAAlD,WACAvF,KAAAvG,GAAAA,EAAAlE,OACAmT,KAAA,KACA,EAEAC,yBAAAA,GACA,YAAAnD,oBACAxF,KAAAvG,GAAAA,EAAAlE,OACAmT,KAAA,KACA,EAEA9C,SAAAA,GACA,YAAAb,KAAA/D,OAAA6E,KACArM,EAAA,0BAAAzD,MAAA6S,EAAAA,GAAAA,IAAA,KAAA7D,KAAA/D,OAAA6E,QAEArM,EAAA,0BAAAzD,MAAA6S,EAAAA,GAAAA,IAAA,IACA,EAEAC,OAAAA,GACA,OAAAC,EAAAA,GAAAA,MAAAC,MAAA,KAAAhE,KAAAzP,IAAA,KAAA8C,SAAAsC,OACA,EAEAuL,SAAAA,GACA,IAAAjF,EAAA,KAAA+D,KAAA/D,OAAAA,MAWA,MATA,YAAAA,IACAA,EAAA,KAAA5I,SAAAyO,aACA,SAAA7F,IAEAA,GAAAgI,EAAAA,GAAAA,IAAAhI,GAAA,KAKA,SAAAA,IAAA,IAAAA,EACAxH,EAAA,wBACAwH,GAAA,GACA4H,EAAAA,GAAAA,IAAA5H,IAEA4H,EAAAA,GAAAA,IAAA,EACA,EAEAK,WAAAA,GACA,MAAArE,EAAA,CACA,CACAO,KAAA,cACAC,KAAA5L,EAAA,0BACA0L,OAAA,KAAAgE,YAEA,CACA/D,KAAA,cACAC,KAAA5L,EAAA,+BACA0L,OAAA,KAAAiE,iBAEA,CACAhE,KAAA,KAAAJ,KAAAqE,QAAA,wBACAhE,KAAA,KAAAL,KAAAqE,QAAA5P,EAAA,2BAAAA,EAAA,0BACA0L,OAAA,KAAAmE,oBAUA,OAPA,YAAAtE,KAAAlE,OAAA,UAAAkE,KAAAlE,OACA+D,EAAAxP,KAAA,CACA+P,KAAA,YACAC,KAAA5L,EAAA,mCACA0L,OAAA,KAAAoE,kBAGA1E,EAAAyB,OAAA,KAAAf,gBACA,EAGAiE,gBAAA,CACAC,GAAAA,GACA,gBAAAlC,cACA,KAAAA,cAEA,KAAAlP,SAAAyO,eAAAD,GAAAtR,KAAA0T,EAAAA,GAAAA,IAAA,KAAA5Q,SAAAyO,cAAA,MAEA,CAAAvR,GAAA,KAAA8C,SAAAyO,aAAAvE,MAAA,KAAAlK,SAAAyO,cAEAD,EACA,EACA6C,GAAAA,CAAAzI,GACA,KAAAsG,cAAAtG,CACA,GAGA0I,kBAAAA,GACA,YAAAtJ,UAAA,GAAAA,UAAAiG,OAAA,KAAAjG,UAAA,GAAAA,UACA,GAGA,iBAAAG,GACA,KAAAwE,KAAA5D,eACA,KAAAwI,YAAA,KAAA5E,KAAA5D,QAEA,EAEA3I,QAAA,CACA2Q,eAAAA,GACA,MAAAxI,EAAA,KAAAoE,KAAAzP,GACA4M,GAAA0H,QAAAC,mBACArQ,EAAA,gNAAAmH,WACAnH,EAAA,qCACA,CACA7D,KAAAuM,GAAA0H,QAAAE,eACAC,QAAAvQ,EAAA,sCAAAmH,WACAqJ,eAAA,QACAC,OAAAzQ,EAAA,uBAEA0Q,IACAA,IACA,KAAAvL,QAAAsJ,MAAA,EACA,KAAAtJ,QAAA+B,KAAA,EACA,KAAArI,OAAAc,SAAA,kBAAAwH,GACAsC,MAAA,KAAAkH,EAAAA,EAAAA,IAAA3Q,EAAA,uCAAAmH,aAAA,CAAAyJ,QAAA,MACAC,SAAA,KACA,KAAA1L,QAAAsJ,MAAA,EACA,KAAAtJ,QAAA+B,KAAA,KAEA,IAEA,EAEA,EAEA4J,cAAAA,CAAAC,GACA,OAAAA,EAAA/K,QAAA2B,GAAAA,EAAA7L,KAAA,KAAAyP,KAAAzP,IACA,EAEA,iBAAAqU,CAAAa,SACA,KAAAnS,OAAAc,SAAA,UAAAqR,GAAAvH,MAAAzB,IACA,KAAAoG,eAAApG,GAAAzJ,KAAA0J,IAAA1J,IAAA,GAEA,EAEA,8BAAA0S,GACA,KAAA9C,yBAAA,QACA,KAAAnH,oBACA,KAAAmH,yBAAA,CACA,EAEA,uBAAAnH,CAAAsC,SACA,KAAAzK,OAAAc,SAAA,eAAA4J,OAAA,EAAAC,MAAA,GAAAP,OAAAK,IAAAG,MAAAzB,IACA,MAAA0B,EAAA1B,GAAAzJ,KAAA,KAAAuS,eAAArP,OAAAkI,OAAA3B,GAAAzJ,KAAA0J,IAAA1J,KAAAmL,QAAA,GACAA,EAAA5G,OAAA,IACA,KAAAwC,iBAAAoE,EACA,GAEA,EAEA,uBAAAwH,CAAAvJ,GACA,OAAAA,IACA,KAAAyG,eAAA,IAEA,KAAAjJ,QAAAwC,SAAA,EACA,UACA,KAAA9I,OAAAc,SAAA,eACAwH,OAAA,KAAAoE,KAAAzP,GACA2E,IAAA,UACAf,MAAA,KAAA0O,eAAA,KAAAA,eAAAtS,GAAA,IAEA,OAAAgE,IAEAC,EAAAA,EAAAA,IAAAC,EAAA,4CACAmR,GAAArR,MAAAA,EACA,SACA,KAAAqF,QAAAwC,SAAA,CACA,CACA,EAEA+H,UAAAA,GACA,MAAAvI,EAAA,KAAAoE,KAAAzP,GACA4M,GAAA0H,QAAAC,mBACArQ,EAAA,iGAAAmH,WACAnH,EAAA,+BACA,CACA7D,KAAAuM,GAAA0H,QAAAE,eACAC,QAAAvQ,EAAA,wCAAAmH,WACAqJ,eAAA,QACAC,OAAAzQ,EAAA,uBAEA0Q,IACA,GAAAA,EAGA,OAFA,KAAAvL,QAAAoJ,QAAA,EACA,KAAApJ,QAAA+B,KAAA,EACA,KAAArI,OAAAc,SAAA,aAAAwH,GACAsC,MAAA,KACA,KAAAtE,QAAAoJ,QAAA,EACA,KAAApJ,QAAA+B,KAAA,IAEA,IAEA,EAEA,EAEA2I,iBAAAA,GACA,KAAA1K,QAAAoJ,QAAA,EACA,KAAApJ,QAAA+B,KAAA,EACA,MAAAC,EAAA,KAAAoE,KAAAzP,GACA8T,GAAA,KAAArE,KAAAqE,QACA,YAAA/Q,OAAAc,SAAA,qBACAwH,SACAyI,YAEAnG,MAAA,KACA,KAAAtE,QAAAoJ,QAAA,EACA,KAAApJ,QAAA+B,KAAA,IAEA,EAOAkK,iBAAAA,GACA,KAAAjM,QAAA9F,aAAA,EACA,KAAAR,OAAAc,SAAA,eACAwH,OAAA,KAAAoE,KAAAzP,GACA2E,IAAA,cACAf,MAAA,KAAAgP,oBACAjF,MAAA,KACA,KAAAtE,QAAA9F,aAAA,EACA,KAAAqP,oBAAA,KAAAnD,KAAAoD,cACAgC,EAAAA,EAAAA,IAAA3Q,EAAA,mDACA,GAEA,EAOAqR,cAAAA,GACA,KAAAlM,QAAAiC,UAAA,EACA,SAAAwH,eAAA9L,SACA/C,EAAAA,EAAAA,IAAAC,EAAA,sCACA,KAAAmF,QAAAiC,UAAA,GAEA,KAAAvI,OAAAc,SAAA,eACAwH,OAAA,KAAAoE,KAAAzP,GACA2E,IAAA,WACAf,MAAA,KAAAkP,iBACAnF,MAAA,KACA,KAAAtE,QAAAiC,UAAA,EACA,KAAAwH,eAAA,IACA+B,EAAAA,EAAAA,IAAA3Q,EAAA,kDAGA,EAOAsR,WAAAA,GACA,KAAAnM,QAAAmC,aAAA,EACA,UAAAuH,aACA9O,EAAAA,EAAAA,IAAAC,EAAA,mCACA,KAAAmF,QAAAmC,aAAA,EACA,KAAAuH,WAAA,KAAAtD,KAAAlE,OAEA,KAAAxI,OAAAc,SAAA,eACAwH,OAAA,KAAAoE,KAAAzP,GACA2E,IAAA,QACAf,MAAA,KAAAmP,aACApF,MAAA,KACA,KAAAtE,QAAAmC,aAAA,EACA,KAAAuH,aAAA,KAAAtD,KAAAlE,QACAsJ,EAAAA,EAAAA,IAAA3Q,EAAA,4CACA,GAGA,EAOA,iBAAAqI,CAAAC,GAAA,IAAAvM,KAAAoD,GAAAmJ,EACA,KAAAnD,QAAA,CAAAW,QAAA,EAAAwI,WAAA,GACA,UACA,KAAAzP,OAAAc,SAAA,WAAAR,GACA,MAAAgI,EAAA,KAAAoE,KAAAzP,SACA,KAAA+C,OAAAc,SAAA,gBAAAwH,SAAAhI,OACA,OAAAW,GACAqR,GAAArR,MAAAA,EACA,SACA,KAAAqF,QAAA,CAAAW,QAAA,EAAAwI,WAAA,EACA,CACA,YAAAzP,OAAAC,QAAAiH,UAAA,KAAAD,OAAAhD,OACA,EAOA,kBAAAyO,CAAAtR,GACA,GAAAA,EAAAuR,WAGA,OAEA,KAAArM,QAAAW,QAAA,EACA,MAAAqB,EAAA,KAAAoE,KAAAzP,GACAqD,EAAAc,EAAAnE,GACA,QAAAmE,EAAA0G,OACA,SAEA,UACA,KAAA9H,OAAAc,SAAA,gBAAAwH,SAAAhI,OACA,OAAAW,GACAqR,GAAArR,MAAAA,EACA,SACA,KAAAqF,QAAAW,QAAA,CACA,CACA,EAOA,qBAAA2L,CAAAxR,GACA,QAAAA,EAAAkM,UACA,SAEA,KAAAhH,QAAAW,QAAA,EACA,MAAAqB,EAAA,KAAAoE,KAAAzP,GACAqD,EAAAc,EAAAnE,GACA,UACA,KAAA+C,OAAAc,SAAA,mBACAwH,SACAhI,QAEA,KAAAgG,QAAAW,QAAA,EAEA,KAAA4L,OAAAhR,OAAAC,gBAAAxB,GACA,KAAAN,OAAA8S,OAAA,aAAAxK,EAEA,OACA,KAAAhC,QAAAW,QAAA,CACA,CACA,EAOA,qBAAA8L,CAAA3R,GACA,KAAAkF,QAAAmJ,WAAA,EACA,MAAAnH,EAAA,KAAAoE,KAAAzP,GACAqD,EAAAc,EAAAnE,GACA,UACA,KAAA+C,OAAAc,SAAA,mBACAwH,SACAhI,QAEA,KAAAgG,QAAAmJ,WAAA,CACA,OAAAxO,GACAqR,GAAArR,MAAAA,EACA,CACA,EAOA,wBAAA+R,CAAA5R,GACA,KAAAkF,QAAAmJ,WAAA,EACA,MAAAnH,EAAA,KAAAoE,KAAAzP,GACAqD,EAAAc,EAAAnE,GAEA,UACA,KAAA+C,OAAAc,SAAA,sBACAwH,SACAhI,OAEA,OAAAW,GACAqR,GAAArR,MAAAA,EACA,SACA,KAAAqF,QAAAmJ,WAAA,CACA,CACA,EAQA,kBAAAwD,GAAA,IAAAtK,EAAAwC,UAAAlH,OAAA,QAAA7B,IAAA+I,UAAA,GAAAA,UAAA,UAEA,SAAAxC,IACAA,EAAA4F,IAEA,KAAAjI,QAAAqC,OAAA,EAGAA,EAAAA,EAAA1L,GAAA0L,EAAA1L,GAAA0L,EAEA,IAGA,MAAA9H,IAAA8P,EAAAA,GAAAA,IAAAhI,GAAA,IAAAA,GAAAyG,iBACA,KAAApP,OAAAc,SAAA,eACAwH,OAAA,KAAAoE,KAAAzP,GACA2E,IAAA,QACAf,SAEA,OAAAI,GACAqR,GAAArR,MAAAA,EACA,SACA,KAAAqF,QAAAqC,OAAA,CACA,CACA,OAAAA,CACA,EAQAgB,cAAAhB,IACA,iBAAAA,IACAA,EAAAA,GAAA1L,IAAA0L,EAAAsB,OAIA,QADA0G,EAAAA,GAAAA,IAAAhI,GAAA,GAEA4F,GAIA,CAAAtR,GADA0L,GAAA4H,EAAAA,GAAAA,KAAAI,EAAAA,GAAAA,IAAAhI,GAAA,IACAsB,MAAAtB,IAUA,qBAAAuK,CAAAjF,GACA,KAAA3H,QAAAyB,WAAA,EAEA,UACA,KAAA/H,OAAAc,SAAA,eACAwH,OAAA,KAAAoE,KAAAzP,GACA2E,IAAA,WACAf,MAAAoN,EAAApF,OAEA,KAAAvC,QAAAyB,WAAA,CACA,OAAA9G,GACAqR,GAAArR,MAAAA,EACA,CACA,OAAAgN,CACA,EAKAgD,eAAAA,GACA,KAAA3K,QAAA+B,KAAA,EACA,KAAArI,OAAAc,SAAA,uBAAA4L,KAAAzP,IACA2N,MAAA,KAAAkH,EAAAA,EAAAA,IAAA3Q,EAAA,iCAAA4Q,QAAA,QACAC,SAAA,KACA,KAAA1L,QAAA+B,KAAA,IAEA,EAEA,gBAAAuE,GACA,KAAA4C,SAAA,KAAAA,QACA,KAAAA,gBACA,KAAA2D,YACA,KAAA1S,MAAA2S,kBAAA3S,OAAAuI,YAAAvI,OAAAwI,OAAAC,SAEA,KAAA2G,oBAAA,KAAAnD,KAAAoD,YACA,KAAAD,kBAAA,KAAAnD,KAAAoD,YACA,KAAAE,aAAA,KAAAtD,KAAAlE,QACA,KAAAwH,WAAA,KAAAtD,KAAAlE,OAAA,GAEA,I,gBE14BI,GAAU,CAAC,EAEf,GAAQlH,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OClB1D,IAAI,IAAY,OACd,ITTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACG,YAAY,iBAAiBC,MAAM,CAAC,mBAAmBN,EAAI8O,KAAKzP,KAAK,CAACa,EAAG,KAAK,CAACG,YAAY,8BAA8BC,MAAM,CAAC,gCAAgC,KAAK,CAAEN,EAAIqS,cAAenS,EAAG,gBAAgB,CAACI,MAAM,CAAC,KAAON,EAAIuD,EAAE,WAAY,kBAAkB,KAAO,MAAOvD,EAAI0H,QAASxH,EAAG,WAAW,CAACI,MAAM,CAAC,eAAe,GAAG,oBAAmB,EAAM,KAAON,EAAI8O,KAAKzP,MAAMW,EAAIa,MAAM,GAAGb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,mCAAmCC,MAAM,CAAC,qCAAqC,KAAK,CAAEN,EAAI4R,SAAW5R,EAAI8O,KAAK2G,oBAAoBC,eAAgB,CAACxV,EAAG,cAAc,CAACwE,IAAI,mBAAmBrE,YAAY,sBAAsBqN,MAAM,CAAE,qBAAsB1N,EAAI0I,QAAQ9F,aAActC,MAAM,CAAC,sCAAsC,GAAG,eAAeN,EAAI0I,QAAQ9F,kBAAe4B,EAAU,wBAAwBxE,EAAIuD,EAAE,WAAY,UAAU,wBAAuB,EAAK,SAAWvD,EAAI0I,QAAQ9F,aAAe5C,EAAIsS,eAAe,MAAQtS,EAAIuD,EAAE,WAAY,uBAAuB,uBAAuB,aAAa,MAAQvD,EAAIiS,kBAAkB,eAAiB,MAAM,aAAe,MAAM,WAAa,SAAS1R,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIiS,kBAAkBzR,CAAM,EAAE,wBAAwBR,EAAI2U,sBAAsB,CAAG3U,EAAI6Q,aAA4K7Q,EAAIa,KAAlKX,EAAG,SAAS,CAACI,MAAM,CAAC,MAAQN,EAAI8O,KAAKoD,aAAa7L,OAAS,GAAKrG,EAAI8O,KAAKoD,YAAc,OAAO,CAAClS,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAI8O,KAAKoD,aAAa,cAAuBlS,EAAIW,GAAG,KAAKT,EAAG,OAAO,CAACG,YAAY,iBAAiB,CAACL,EAAIW,GAAGX,EAAIY,GAAGZ,EAAI8O,KAAKzP,SAAS,GAAGW,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,YAAYqN,MAAM,CAAE,wBAAyB1N,EAAImO,eAAgB7N,MAAM,CAAC,kCAAkC,KAAK,CAAEN,EAAI4R,SAAW5R,EAAImC,SAASwT,mBAAqB3V,EAAI8O,KAAK2G,oBAAoBG,YAAa,CAAC1V,EAAG,cAAc,CAACG,YAAY,sBAAsBqN,MAAM,CAAC,qBAAsB1N,EAAI0I,QAAQiC,UAAUrK,MAAM,CAAC,mCAAmC,GAAG,eAAeN,EAAI0I,QAAQiC,eAAYnG,EAAU,wBAAwBxE,EAAIuD,EAAE,WAAY,UAAU,wBAAuB,EAAK,SAAWvD,EAAI0I,QAAQiC,UAAY3K,EAAIsS,eAAe,UAAYtS,EAAImJ,kBAAkB,UAAY,MAAM,MAAQnJ,EAAIuD,EAAE,WAAY,oBAAoB,uBAAuB,aAAa,MAAQvD,EAAImS,eAAe,eAAiB,MAAM,aAAe,eAAe,SAAW,GAAG,WAAa,QAAQ,KAAO,YAAY5R,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAImS,eAAe3R,CAAM,EAAE,wBAAwBR,EAAI4U,mBAAoB5U,EAAI6Q,aAAc3Q,EAAG,OAAO,CAACF,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,gEAAgE,YAAYvD,EAAIa,MAAM,GAAGb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,YAAYC,MAAM,CAAC,+BAA+B,KAAK,CAAEN,EAAI4R,QAAS,CAAC1R,EAAG,cAAc,CAACG,YAAY,sBAAsBqN,MAAM,CAAC,qBAAsB1N,EAAI0I,QAAQmC,aAAavK,MAAM,CAAC,gCAAgC,GAAG,eAAeN,EAAI0I,QAAQmC,kBAAerG,EAAU,wBAAuB,EAAK,wBAAwBxE,EAAIuD,EAAE,WAAY,UAAU,MAAQvD,EAAIuD,EAAE,WAAY,yBAAyB,SAAWvD,EAAI0I,QAAQmC,aAAe7K,EAAIsS,eAAe,uBAAuB,aAAa,MAAQtS,EAAIoS,WAAW,eAAiB,MAAM,aAAe,QAAQ,WAAa,QAAQ,KAAO,SAAS7R,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIoS,WAAW5R,CAAM,EAAE,wBAAwBR,EAAI6U,gBAAkB7U,EAAI6Q,aAAoJ7Q,EAAIa,KAA1IX,EAAG,OAAO,CAACI,MAAM,CAAC,MAAQN,EAAI8O,KAAKlE,OAAOvE,OAAS,GAAKrG,EAAI8O,KAAKlE,MAAQ,OAAO,CAAC5K,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAI8O,KAAKlE,OAAO,aAAsB,GAAG5K,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,kDAAkDC,MAAM,CAAC,gCAAgC,KAAK,CAAEN,EAAI4R,QAAS,CAAC1R,EAAG,QAAQ,CAACG,YAAY,kBAAkBC,MAAM,CAAC,IAAM,SAAWN,EAAIuS,WAAW,CAACvS,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,sBAAsB,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACI,MAAM,CAAC,iCAAiC,GAAG,eAAeN,EAAI0I,QAAQW,aAAU7E,EAAU,WAAW,SAAWxE,EAAIuS,SAAS,mBAAkB,EAAM,SAAWvS,EAAIsS,eAAe,QAAUtS,EAAI0I,QAAQW,OAAO,UAAW,EAAK,kBAAiB,EAAM,QAAUrJ,EAAIwP,gBAAgB,YAAcxP,EAAIuD,EAAE,WAAY,qBAAqB,SAAWvD,EAAImC,SAASsC,QAAQ,MAAQzE,EAAIsP,WAAW,MAAQ,OAAO,WAAU,EAAK,gBAAiBrM,IAAK,CAAQ3D,KAAM2D,EAAO8R,YAAY,KAASxU,GAAG,CAAC,iBAAiBP,EAAI4L,YAAY,kBAAkBnI,GAAWzD,EAAI8U,aAAarR,EAAQsN,IAAI,IAAI,oBAAoB/Q,EAAIgV,oBAAsBhV,EAAI6Q,aAAsK7Q,EAAIa,KAA5JX,EAAG,OAAO,CAACI,MAAM,CAAC,MAAQN,EAAIwS,kBAAkBnM,OAAS,GAAKrG,EAAIwS,iBAAmB,OAAO,CAACxS,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIwS,kBAAkB,aAAsB,GAAGxS,EAAIW,GAAG,KAAMX,EAAI4J,gBAAgBvD,OAAS,GAAKrG,EAAImC,SAASsC,QAASvE,EAAG,KAAK,CAACG,YAAY,kDAAkDC,MAAM,CAAC,mCAAmC,KAAK,CAAEN,EAAI4R,SAAW5R,EAAImC,SAASsC,SAAWzE,EAAI4J,gBAAgBvD,OAAS,EAAG,CAACnG,EAAG,QAAQ,CAACG,YAAY,kBAAkBC,MAAM,CAAC,IAAM,YAAcN,EAAIuS,WAAW,CAACvS,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,0BAA0B,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACI,MAAM,CAAC,oCAAoC,GAAG,eAAeN,EAAI0I,QAAQmJ,gBAAarN,EAAU,WAAW,YAAcxE,EAAIuS,SAAS,mBAAkB,EAAM,SAAWvS,EAAIsS,eAAe,QAAUtS,EAAI0I,QAAQmJ,UAAU,MAAQ,OAAO,kBAAiB,EAAM,UAAW,EAAK,WAAU,EAAK,QAAU7R,EAAI4J,gBAAgB,YAAc5J,EAAIuD,EAAE,WAAY,yBAAyB,MAAQvD,EAAIuP,qBAAqBhP,GAAG,CAAC,oBAAoBP,EAAIoV,mBAAmB,kBAAkB3R,GAAWzD,EAAImV,gBAAgB1R,EAAQsN,IAAI,QAAU/Q,EAAI6Q,aAAiM7Q,EAAIa,KAAvLX,EAAG,OAAO,CAACI,MAAM,CAAC,MAAQN,EAAI0S,2BAA2BrM,OAAS,GAAKrG,EAAI0S,0BAA4B,OAAO,CAAC1S,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAI0S,2BAA2B,aAAsB,GAAG1S,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,YAAYC,MAAM,CAAC,+BAA+B,KAAK,CAAEN,EAAI4R,QAAS,CAAC1R,EAAG,QAAQ,CAACG,YAAY,kBAAkBC,MAAM,CAAC,IAAM,QAAUN,EAAIuS,WAAW,CAACvS,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,sBAAsB,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACI,MAAM,CAAC,mBAAkB,EAAK,gBAAgBN,EAAI+L,cAAc,gCAAgC,GAAG,eAAe/L,EAAI0I,QAAQqC,YAASvG,EAAU,SAAWxE,EAAIsS,eAAe,QAAUtS,EAAI0I,QAAQqC,MAAM,kBAAiB,EAAM,WAAY,EAAM,WAAW,QAAU/K,EAAIuS,SAAS,QAAUvS,EAAI4I,aAAa,YAAc5I,EAAIuD,EAAE,WAAY,qBAAqB,UAAW,GAAMhD,GAAG,CAAC,kBAAkBP,EAAIqV,cAAc1H,MAAM,CAAC1K,MAAOjD,EAAIsT,gBAAiB1F,SAAS,SAAUC,GAAM7N,EAAIsT,gBAAgBzF,CAAG,EAAEvF,WAAW,sBAAwBtI,EAAI6Q,aAExhN7Q,EAAIa,KAFkiN,CAACX,EAAG,OAAO,CAACI,MAAM,CAAC,GAAK,iBAAmBN,EAAIuS,WAAW,CAACvS,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIgQ,WAAW,KAAKhQ,EAAIY,GAAGZ,EAAI2P,WAAW,OAAO3P,EAAIW,GAAG,KAAKT,EAAG,gBAAgB,CAACG,YAAY,gBAAgBqN,MAAM,CACtzN,sBAAuB1N,EAAI6P,UAAY,IACtCvP,MAAM,CAAC,kBAAkB,iBAAmBN,EAAIuS,SAAS,MAAQvS,EAAI6P,eAAwB,GAAG7P,EAAIW,GAAG,KAAMX,EAAI+I,WAAW+E,cAAe5N,EAAG,KAAK,CAACG,YAAY,6BAA6BC,MAAM,CAAC,kCAAkC,KAAK,CAAEN,EAAI4R,QAAS,CAAC1R,EAAG,QAAQ,CAACG,YAAY,kBAAkBC,MAAM,CAAC,IAAM,WAAaN,EAAIuS,WAAW,CAACvS,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,qBAAqB,cAAcvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACI,MAAM,CAAC,GAAK,WAAaN,EAAIuS,SAAS,mCAAmC,GAAG,eAAevS,EAAI0I,QAAQyB,gBAAa3F,EAAU,eAAc,EAAM,SAAWxE,EAAIsS,eAAe,QAAUtS,EAAI0I,QAAQyB,UAAU,WAAY,EAAM,kBAAiB,EAAM,QAAUnK,EAAIyT,mBAAmB,YAAczT,EAAIuD,EAAE,WAAY,mBAAmB,MAAQvD,EAAIkQ,aAAa,MAAQ,QAAQ3P,GAAG,CAAC,MAAQP,EAAIsV,oBAAsBtV,EAAI6Q,aAAqF7Q,EAAIa,KAA3EX,EAAG,OAAO,CAACF,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIkQ,aAAa5Q,MAAM,aAAsB,GAAGU,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+I,WAAWsF,iBAAmBrO,EAAI+I,WAAWuF,gBAAiBpO,EAAG,KAAK,CAACG,YAAY,6BAA6BC,MAAM,CAAC,0CAA0C,KAAK,CAAGN,EAAI6Q,aAAmT7Q,EAAIa,KAAzS,CAAEb,EAAI+I,WAAWsF,gBAAiBnO,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAI8O,KAAK+G,YAAY7V,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+I,WAAWuF,gBAAiBpO,EAAG,OAAO,CAACG,YAAY,gBAAgBC,MAAM,CAAC,MAAQN,EAAI8O,KAAKgH,kBAAkB,CAAC9V,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAI8O,KAAKgH,iBAAiB,cAAc9V,EAAIa,OAAgB,GAAGb,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+I,WAAWwF,cAAerO,EAAG,KAAK,CAACG,YAAY,YAAYC,MAAM,CAAC,MAAQN,EAAIsQ,qBAAqB,oCAAoC,KAAK,CAAGtQ,EAAI6Q,aAA6D7Q,EAAIa,KAAnDX,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIyQ,oBAA6BzQ,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,6CAA6CC,MAAM,CAAC,iCAAiC,KAAK,CAAEN,EAAI4R,QAAS,CAAC1R,EAAG,QAAQ,CAACG,YAAY,kBAAkBC,MAAM,CAAC,IAAM,UAAYN,EAAIuS,WAAW,CAACvS,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAI8I,cAAc,cAAc9I,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACG,YAAY,eAAeC,MAAM,CAAC,kCAAkC,GAAG,eAAeN,EAAI0I,QAAQwC,cAAW1G,EAAU,WAAW,UAAYxE,EAAIuS,SAAS,mBAAkB,EAAK,SAAWvS,EAAIsS,eAAe,kBAAiB,EAAM,QAAUtS,EAAI0R,yBAA2B1R,EAAI0I,QAAQwC,QAAQ,MAAQ,cAAc,QAAUlL,EAAI6I,iBAAiB,YAAc7I,EAAI8I,cAAcvI,GAAG,CAAC,KAAOP,EAAIwU,yBAAyB,OAASxU,EAAIuK,kBAAkB,kBAAkBvK,EAAIyU,mBAAmB9G,MAAM,CAAC1K,MAAOjD,EAAI2R,eAAgB/D,SAAS,SAAUC,GAAM7N,EAAI2R,eAAe9D,CAAG,EAAEvF,WAAW,qBAAuBtI,EAAI6Q,aAAgF7Q,EAAIa,KAAtEX,EAAG,OAAO,CAACF,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAI8O,KAAK5D,SAAS,aAAsB,GAAGlL,EAAIW,GAAG,KAAKT,EAAG,KAAK,CAACG,YAAY,+BAA+BC,MAAM,CAAC,iCAAiC,KAAK,CAAEN,EAAI0H,UAAY1H,EAAI6Q,cAAgB7Q,EAAI4S,UAAY5S,EAAI0I,QAAQ+B,IAAKvK,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAUN,EAAIgT,YAAY,SAAWhT,EAAIsS,eAAe,KAAOtS,EAAI4R,QAAQ,KAAO5R,EAAI8O,MAAMvO,GAAG,CAAC,cAAcP,EAAIgP,cAAchP,EAAIa,MAAM,IACphG,GACsB,ISQpB,EACA,KACA,WACA,MAIF,SAAe,GAAiB,QCkFhC8H,GAAA,CACAtJ,GAAA,GACAuD,YAAA,GACA+H,SAAA,GACAE,YAAA,GACAxB,OAAA,GACA6B,QAAA,GACAtB,gBAAA,GACAmB,MAAA6F,GACA5F,SAAA,CACAC,KAAA,KACA3L,KAAAiE,EAAA,iCChHoL,GDoHpL,CACAjE,KAAA,WAEAwB,WAAA,CACAG,SAAA,IACA8U,eAAA,IACArH,iBAAA,IACAX,cAAA,IACAiI,aAAA,GACAC,eAAA,GACAC,eAAA,GACAC,YAAAA,IAGA3W,MAAA,CACA0E,cAAA,CACAxE,KAAAC,OACAE,QAAA,MAEAwP,gBAAA,CACA3P,KAAA0F,MACAvF,QAAAA,IAAA,KAIAiC,KAAAA,KACA,CACAsU,QAAA,GACA1N,QAAA,CACA+B,KAAA,EACApB,QAAA,EACA4D,OAAA,GAEAoJ,eAAA,EACAC,UAAA,GACAC,S,oqBACAC,YAAA,GACA7N,QAAA3D,OAAAgF,OAAA,GAAArB,MAIAzG,SAAA,CACA6G,UAAAA,GACA,YAAA3G,OAAAC,QAAA2G,aACA,EAEA7G,QAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAyF,KAAAA,GACA,OACA,uBAAAuO,cAEA,EAEAnI,aAAAA,GACA,YAAAH,cAAAvB,MAAAqC,GAAA+B,GAAA/B,IACA,EAEA7B,KAAAA,GACA,YAAA7K,OAAAC,QAAAoU,QACA,EAEAzI,aAAAA,GACA,wBAAA9J,cACA,KAAA+I,MAAA1D,QAAAuF,IAAA,IAAAA,EAAAqE,WAEA,KAAAhR,SAAAsC,QAIA,KAAAwI,MAAA1D,QAAAuF,IAAA,IAAAA,EAAAqE,UACA,EAEA9J,MAAAA,GAEA,YAAAjH,OAAAC,QAAAiH,UACAC,QAAA/F,GAAA,aAAAA,EAAAnE,KACAmK,MAAA,CAAAC,EAAAC,IAAAD,EAAAnK,KAAAqK,cAAAD,EAAApK,OACA,EAEAsK,eAAAA,GAEA,YAAAxH,OAAAC,QAAAwH,iBACA,EAEAjB,YAAAA,GAEA,MAAA8N,EAAA,KAAAvU,SAAAuU,YAAAC,QAAA,CAAAC,EAAAC,IAAAD,EAAAxG,OAAA,CACA/Q,GAAAwX,EACAxK,MAAAwK,KACA,IAMA,OAJA,KAAA1U,SAAA2U,qBACAJ,EAAAK,QAAApG,IAEA+F,EAAAK,QAAAnG,IACA8F,CACA,EAEAM,WAAAA,GACA,YAAA5U,OAAAC,QAAA4U,cACA,EAEAC,UAAAA,GACA,YAAA9U,OAAAC,QAAA8U,aACA,EAEAC,mBAAAA,GACA,YAAAhV,OAAAC,QAAAgV,sBACA,EAEAC,kBAAAA,GACA,YAAAlV,OAAAC,QAAAkV,qBACA,EAEAC,UAAAA,GACA,YAAAvK,MAAA5G,MACA,EAGA8D,SAAAA,GACA,OACA,CACAkC,MAAA9I,EAAA,+BACA4G,UAAA,KAAAhI,SAAAgI,UAAAC,iBAEA,CACAiC,MAAA9I,EAAA,8BACA4G,UAAA,KAAAhI,SAAAgI,UAAAE,gBAGA,GAGAoN,MAAA,CAEA,mBAAAvT,CAAAwT,EAAAC,GACA,KAAAtB,eAAA,QAEA,KAAAuB,qBACA,KAAAxV,OAAA8S,OAAA,oBACA,KAAA2C,YACA,KAAAC,uBAAAJ,EACA,EAEA1J,aAAAA,CAAAA,GACA9G,GAAAA,EAAAC,MAAA,GAAA6G,EAAA3H,0BACA,GAGA,aAAA0R,SACA,KAAAF,WACA,EAEA,aAAAlR,GACA,KAAAxE,SAAAwT,mBACA1J,GAAA+L,aAAAC,cAAA1U,EAAA,8EAMA,KAAA2U,aAKAC,EAAAA,EAAAA,IAAA,uCAAA3L,SACA2L,EAAAA,EAAAA,IAAA,sCAAAC,mBAKA,KAAAR,oBACA,EAEArQ,aAAAA,IACA8Q,EAAAA,EAAAA,IAAA,uCAAA7L,SACA6L,EAAAA,EAAAA,IAAA,sCAAAD,YACA,EAEA7V,QAAA,CACA,qBAAA+V,SACA,KAAAT,WACA,EAEA,eAAAA,GACA,KAAAnP,QAAAuE,OAAA,EACA,IACA,kBAAA/I,oBACA,KAAA9B,OAAAc,SAAA,oBACA4J,OAAA,KAAAsK,oBACArK,MAAA,KAAAuK,2BAGA,KAAAlV,OAAAc,SAAA,YACA4J,OAAA,KAAAkK,YACAjK,MAAA,KAAAmK,WACA1T,MAAA,KAAAU,cACAsI,OAAA,KAAAgK,cAGAtP,GAAAA,EAAAC,MAAA,QAAA8F,MAAA5G,8BACA,OAAAhD,GACA6D,GAAAA,EAAA7D,MAAA,wBAAAA,WACAC,EAAAA,EAAAA,IAAA,uBACA,CACA,KAAAoF,QAAAuE,OAAA,EACA,KAAAoJ,eAAA,CACA,EAEAkC,UAAAA,GACA,KAAAnW,OAAA8S,OAAA,iBACAlR,IAAA,kBACAf,OAAA,GAEA,EAEA,YAAAuJ,CAAAX,GAAA,UAAAgB,GAAAhB,EACA,KAAA2K,YAAA3J,EACA,KAAAzK,OAAA8S,OAAA,oBACA,KAAA2C,WACA,EAEAO,WAAAA,GACA,KAAA5L,OAAA,CAAAK,MAAA,IACA,EAEAqL,SAAAA,GAEA,KAAAvP,QAAA3D,OAAAgF,OAAA,GAAArB,IAOA,KAAAxG,SAAAqW,iBACA7T,EAAAA,GAAAA,IAAA,KAAAgE,QAAAqC,SAAA,YAAA7I,SAAAqW,iBAOA,KAAAV,uBAAA,KAAA5T,eAEA,KAAAwE,QAAA+B,KAAA,CACA,EAEAqN,sBAAAA,CAAA7U,GACA,GAAAA,GAAAA,EAAAoD,OAAA,GAEA,MAAAoS,EAAA,KAAApP,OAAAyC,MAAAtI,GAAAA,EAAAnE,KAAA4D,IACA,GAAAwV,EAEA,YADA,KAAA9P,QAAAU,OAAA,CAAAoP,GAGA,CAEA,KAAA9P,QAAAU,OAAA,EACA,EAQA,wBAAAuO,GACA,MAAAc,EAAA,KAAAtW,OAAAC,QAAAiH,UACA,kBAAApF,eACAwU,EAAAC,WAAAnV,GAAA,aAAAA,EAAAnE,IAAA,IAAAmE,EAAAoV,aAAA,IAEA,KAAAC,QAAA1Z,KAAA,CAAAG,KAAA,gBACA,KAAAuY,YAEA,I,eEhYI,GAAU,CAAC,EAEf,GAAQnU,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,I/BTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAAEF,EAAI+I,WAAW+P,gBAAiB5Y,EAAG,eAAe,CAACI,MAAM,CAAC,QAAUN,EAAI0I,QAAQ,WAAW1I,EAAI2I,QAAQ,gBAAgB3I,EAAI4I,cAAcrI,GAAG,CAAC,MAAQP,EAAIkY,UAAU,MAAQlY,EAAIuY,cAAcvY,EAAIa,KAAKb,EAAIW,GAAG,KAAmC,IAA7BX,EAAIgO,cAAc3H,OAAcnG,EAAG,iBAAiB,CAACG,YAAY,QAAQC,MAAM,CAAC,KAAON,EAAIqW,eAAiBrW,EAAI0I,QAAQuE,MAAQ,KAAOjN,EAAIuD,EAAE,WAAY,aAAaa,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAAEtE,EAAIqW,eAAiBrW,EAAI0I,QAAQuE,MAAO/M,EAAG,gBAAgB,CAACI,MAAM,CAAC,KAAON,EAAIuD,EAAE,WAAY,mBAAmB,KAAO,MAAMrD,EAAG,mBAAmB,CAACI,MAAM,CAAC,IAAMN,EAAIuW,YAAY,EAAEhS,OAAM,IAAO,MAAK,EAAM,aAAarE,EAAG,cAAc,CAAC6H,MAAO/H,EAAI+H,MAAOzH,MAAM,CAAC,iBAAiBN,EAAIoW,QAAQ,eAAepW,EAAIgO,cAAc,WAAW,KAAK,oBAAoB,GAAG,cAAchO,EAAIsW,UAAU,cAAc,CACj5BrJ,MAAOjN,EAAIiN,MACX9K,SAAUnC,EAAImC,SACdgM,cAAenO,EAAImO,cACnB9E,OAAQrJ,EAAIqJ,OACZO,gBAAiB5J,EAAI4J,gBACrBhB,aAAc5I,EAAI4I,aAClBuB,UAAWnK,EAAImK,UACfkF,gBAAiBrP,EAAIqP,kBACnB9O,GAAG,CAAC,aAAaP,EAAIsY,iBAAiBlU,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,SAASM,GAAG,WAAW,MAAO,CAACpE,EAAG,UAAU,CAACG,YAAY,mBAAmB,CAACL,EAAIW,GAAG,aAAaX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,yIAAyI,cAAc,EAAEgB,OAAM,GAAM,CAACP,IAAI,SAASM,GAAG,WAAW,MAAO,CAACpE,EAAG,iBAAiB,CAACI,MAAM,CAAC,iBAAiBN,EAAImO,iBAAiB,EAAE5J,OAAM,GAAM,CAACP,IAAI,SAASM,GAAG,WAAW,MAAO,CAACpE,EAAG,iBAAiB,CAACI,MAAM,CAAC,QAAUN,EAAI0I,QAAQuE,MAAM,iBAAiBjN,EAAIgO,iBAAiB,EAAEzJ,OAAM,QAAW,EAC5mB,GACsB,I+BCpB,EACA,KACA,WACA,MAI8B,QCnBhC,I,uECuFA,MCvFoM,GDuFpM,CACAjF,KAAA,qBAEAwB,WAAA,CACAiY,oBAAA,KACAC,qBAAA,KACAC,sBAAA,KACAzQ,SAAAA,GAAAA,GAGAhJ,MAAA,CACA0Z,KAAA,CACAxZ,KAAAiC,QACAC,UAAA,IAIAE,KAAAA,KACA,CACAuP,eAAA,EACA8H,iBAAA,IAIAjX,SAAA,CACAkX,YAAA,CACA7F,GAAAA,GACA,YAAA2F,IACA,EACA1F,GAAAA,CAAA0F,GACA,KAAAzY,MAAA,cAAAyY,EACA,GAGAnQ,UAAAA,GACA,YAAA3G,OAAAC,QAAA2G,aACA,EAEA7G,QAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAwL,cAAA,CACAyF,GAAAA,GACA,YAAA8F,gBAAA,gBACA,EACA7F,GAAAA,CAAA8F,GACA,KAAAC,gBAAA,gBAAAD,EACA,GAGA/K,cAAA,CACAgF,GAAAA,GACA,YAAA8F,gBAAA,gBACA,EACA7F,GAAAA,CAAA8F,GACA,KAAAC,gBAAA,gBAAAD,EACA,GAGAjL,gBAAA,CACAkF,GAAAA,GACA,YAAA8F,gBAAA,kBACA,EACA7F,GAAAA,CAAA8F,GACA,KAAAC,gBAAA,kBAAAD,EACA,GAGAhL,gBAAA,CACAiF,GAAAA,GACA,YAAA8F,gBAAA,kBACA,EACA7F,GAAAA,CAAA8F,GACA,KAAAC,gBAAA,kBAAAD,EACA,GAGA1Q,YAAAA,GAEA,MAAA8N,EAAA,KAAAvU,SAAAuU,YAAAC,QAAA,CAAAC,EAAAC,IAAAD,EAAAxG,OAAA,CAAA/Q,GAAAwX,EAAAxK,MAAAwK,KAAA,IAKA,OAHA,KAAA1U,SAAA2U,qBACAJ,EAAAK,QAAApG,IAEA+F,CACA,EAEA9F,aAAA,CACA2C,GAAAA,GACA,gBAAAlC,cACA,KAAAA,cAEA,KAAAlP,SAAAyO,eAAAD,GAAAtR,IAAA4M,GAAAC,KAAAC,iBAAA,KAAAhK,SAAAyO,eAAA,EAEA,CAAAvR,GAAA,KAAA8C,SAAAyO,aAAAvE,MAAA,KAAAlK,SAAAyO,cAEAD,EACA,EACA6C,GAAAA,CAAAzI,GACA,KAAAsG,cAAAtG,CACA,GAGAsI,gBAAA,CACAE,GAAAA,GACA,YAAApR,SAAAqX,gBACA,EACA,SAAAhG,CAAAvQ,GACA,IACA,KAAAkW,iBAAA,EACA,KAAA/W,OAAA8S,OAAA,oBACA,KAAA/S,SACAqX,iBAAAvW,UAEAwW,GAAAA,EAAAC,MAAAC,EAAAA,GAAAA,aAAA,kDAAA1W,MAAAA,EAAA,YACA,OAAA2W,GACAlF,GAAArR,MAAA,kDAAAuW,EAAAC,QAAAD,EACA,SACA,KAAAT,iBAAA,CACA,CACA,IAIA5W,QAAA,CACA8W,eAAAA,CAAArV,GAEA,MAAA8V,EAAA,KAAAC,cAAAxG,IAAAvP,GAGA,OADA,KAAA5B,OAAA8S,OAAA,iBAAAlR,MAAAf,MAAA,OAAA6W,EAAA,SAAAA,EAAA,KAAA/Q,WAAA/E,KACA,KAAA+E,WAAA/E,EACA,EAEAuV,eAAAA,CAAAvV,EAAAsV,GAGA,OAFA,KAAAlX,OAAA8S,OAAA,iBAAAlR,MAAAf,MAAAqW,IACA,KAAAS,cAAAvG,IAAAxP,EAAAsV,GACAA,CACA,EAQAvN,cAAAhB,IACA,iBAAAA,IACAA,EAAAA,GAAA1L,IAAA0L,EAAAsB,OAIA,OADAJ,GAAAC,KAAAC,iBAAApB,GAEA4F,GAIA,CAAAtR,GADA0L,EAAAkB,GAAAC,KAAAE,cAAAH,GAAAC,KAAAC,iBAAApB,IACAsB,MAAAtB,IASAiP,eAAAA,GAAA,IAAAjP,EAAAwC,UAAAlH,OAAA,QAAA7B,IAAA+I,UAAA,GAAAA,UAAA,UAEA,SAAAxC,IACAA,EAAA4F,IAEA,KAAAvO,OAAAc,SAAA,gBACA+W,IAAA,QACAjW,IAAA,gBAEAf,MAAA8H,EAAA1L,GAAA0L,EAAA1L,GAAA0L,IACAiC,MAAA,KACA,iBAAAjC,IACAA,EAAA,CAAA1L,GAAA0L,EAAAsB,MAAAtB,IAEA,KAAA6F,aAAA7F,CAAA,GAEA,I,gBElQI,GAAU,CAAC,EAEf,GAAQrH,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IJTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,sBAAsB,CAACI,MAAM,CAAC,KAAON,EAAIoZ,YAAY,mBAAkB,EAAK,KAAOpZ,EAAIuD,EAAE,WAAY,6BAA6BhD,GAAG,CAAC,cAAc,SAASC,GAAQR,EAAIoZ,YAAY5Y,CAAM,IAAI,CAACN,EAAG,uBAAuB,CAACI,MAAM,CAAC,GAAK,sBAAsB,KAAON,EAAIuD,EAAE,WAAY,gBAAgB,CAACrD,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,YAAY,gBAAgB,QAAUN,EAAI8N,eAAevN,GAAG,CAAC,iBAAiB,SAASC,GAAQR,EAAI8N,cAActN,CAAM,IAAI,CAACR,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,kBAAkB,YAAYvD,EAAIW,GAAG,KAAKT,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,YAAY,kBAAkB,QAAUN,EAAIqO,iBAAiB9N,GAAG,CAAC,iBAAiB,SAASC,GAAQR,EAAIqO,gBAAgB7N,CAAM,IAAI,CAACR,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,sBAAsB,YAAYvD,EAAIW,GAAG,KAAKT,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,YAAY,kBAAkB,QAAUN,EAAIsO,iBAAiB/N,GAAG,CAAC,iBAAiB,SAASC,GAAQR,EAAIsO,gBAAgB9N,CAAM,IAAI,CAACR,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,sBAAsB,YAAYvD,EAAIW,GAAG,KAAKT,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,YAAY,gBAAgB,QAAUN,EAAIuO,eAAehO,GAAG,CAAC,iBAAiB,SAASC,GAAQR,EAAIuO,cAAc/N,CAAM,IAAI,CAACR,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,oBAAoB,aAAa,GAAGvD,EAAIW,GAAG,KAAKT,EAAG,uBAAuB,CAACI,MAAM,CAAC,GAAK,iBAAiB,KAAON,EAAIuD,EAAE,WAAY,gBAAgB,CAACrD,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,YAAY,kBAAkB,QAAUN,EAAIqT,gBAAgB,SAAWrT,EAAImZ,iBAAiB5Y,GAAG,CAAC,iBAAiB,SAASC,GAAQR,EAAIqT,gBAAgB7S,CAAM,IAAI,CAACR,EAAIW,GAAG,WAAWX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,oCAAoC,aAAa,GAAGvD,EAAIW,GAAG,KAAKT,EAAG,uBAAuB,CAACI,MAAM,CAAC,GAAK,mBAAmB,KAAON,EAAIuD,EAAE,WAAY,cAAc,CAACrD,EAAG,QAAQ,CAACI,MAAM,CAAC,IAAM,yBAAyB,CAACN,EAAIW,GAAGX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,qBAAqBvD,EAAIW,GAAG,KAAKT,EAAG,WAAW,CAACI,MAAM,CAAC,WAAW,uBAAuB,UAAY,MAAM,UAAW,EAAK,QAAUN,EAAI4I,aAAa,gBAAgB5I,EAAI+L,cAAc,YAAc/L,EAAIuD,EAAE,WAAY,wBAAwB,WAAY,GAAOhD,GAAG,CAAC,kBAAkBP,EAAIga,iBAAiBrM,MAAM,CAAC1K,MAAOjD,EAAI4Q,aAAchD,SAAS,SAAUC,GAAM7N,EAAI4Q,aAAa/C,CAAG,EAAEvF,WAAW,mBAAmB,IAAI,EAC54E,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCoJhC3D,EAAAA,GAAAuV,IAAAC,KAEA,MCzKiL,GDyKjL,CACA7a,KAAA,QAEAwB,WAAA,CACAC,aAAA,IACAqZ,WAAA,EACAC,IAAA,EACApZ,SAAA,IACAqZ,cAAA,EACAnZ,cAAA,IACAoZ,aAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,uBAAA,IACAtZ,oBAAA,IACAuZ,mBAAA,IACAC,UAAA,IACAtZ,gBAAA,IACAyM,cAAA,IACA8M,KAAA,IACAC,cAAA,EACAC,SAAA,GACAC,mBAAAA,IAGAxb,MAAA,CACA0E,cAAA,CACAxE,KAAAC,OACAE,QAAA,OAIAiC,KAAAA,KACA,CAEAuN,gBAAA,GACA4L,aAAA,GACAC,gBAAA,EACAC,iBAAA,EACAC,kBAAA,EACAC,cAAA,IAIAnZ,SAAA,CACAoZ,WAAAA,GACA,mBAAAC,sBACAhY,EAAAA,EAAAA,IAAA,2BAEA,CACAiY,OAAAjY,EAAAA,EAAAA,IAAA,qBACAqL,UAAArL,EAAAA,EAAAA,IAAA,8BAEA,KAAAgY,wBAAAhY,EAAAA,EAAAA,IAAA,kCAAAC,MAAA,KAAA+X,sBACA,EAEAxS,UAAAA,GACA,YAAA3G,OAAAC,QAAA2G,aACA,EAEAuS,oBAAAA,GACA,YAAArX,cAAAuX,mBAAA,KAAAvX,eAAA,IACA,EAEA+I,KAAAA,GACA,YAAA7K,OAAAC,QAAAoU,QACA,EAEApN,MAAAA,GACA,YAAAjH,OAAAC,QAAAiH,SACA,EAEA0N,WAAAA,GACA,YAAA5U,OAAAC,QAAA4U,cACA,EAEAC,UAAAA,GACA,YAAA9U,OAAAC,QAAA8U,aACA,EAEAlJ,SAAAA,GACA,YAAA7L,OAAAC,QAAAqZ,YACA,EAEAvZ,QAAAA,GACA,YAAAC,OAAAC,QAAAC,aACA,EAEAqZ,SAAAA,GAGA,OAFAvW,MAAAwW,QAAA,KAAAvS,QAAA,KAAAA,OAAA,IAIAE,QAAA/F,GAAA,aAAAA,EAAAnE,IAAA,UAAAmE,EAAAnE,KACA0K,KAAAvG,GAAA,KAAAqY,gBAAArY,IACA,EAEAsY,cAAAA,GACA,YAAAD,gBAAA,KAAAxS,OAAAyC,MAAAtI,GAAA,UAAAA,EAAAnE,KACA,EAEA0c,iBAAAA,GACA,YAAAF,gBAAA,KAAAxS,OAAAyC,MAAAtI,GAAA,aAAAA,EAAAnE,KACA,GAGAiL,WAAAA,GACA,KAAAlI,OAAA8S,OAAA,cACA7L,OAAA,KAAAjH,OAAAC,QAAAC,cAAA+G,OACA2S,QAAA,KAAA5Z,OAAAC,QAAAC,cAAA2Z,WACAhO,UAAA,KAAA7L,OAAAC,QAAAC,cAAA2L,YAEA,KAAA7L,OAAAc,SAAA,6BACA,EAEA6U,OAAAA,GAGA/S,OAAAgF,OAAAkS,IAAA,CACAC,SAAA,CACApB,SAAA,CACAqB,eAAA,KAAAA,kBAIA,EAEA7Z,QAAA,CACAgB,EAAA,KAEA8Y,eAAAA,GACA,KAAAja,OAAA8S,OAAA,iBACAlR,IAAA,kBACAf,OAAA,GAEA,EAUAmZ,cAAAA,CAAAlN,EAAAC,EAAAF,GAMA,OALA,KAAAI,gBAAAlQ,KAAA,CACA+P,OACAC,OACAF,WAEA,KAAAI,eACA,EAKA,iBAAAzD,GACA,KAAAwP,kBAAA,EACA,MAAAkB,EAAA,KAAArB,aAAAtY,OACA,QAAA2Z,EAAA,CAKA,KAAApB,gBAAA,EACA,KAAAC,iBAAA,EACA,UACA,KAAA/Y,OAAAc,SAAA,WAAAoZ,SACA,KAAAzD,QAAA1Z,KAAA,CACAG,KAAA,QACA2E,OAAA,CACAC,cAAAC,mBAAAmY,MAGA,KAAArB,aAAA,EACA,QACA3X,EAAAA,EAAAA,KAAAC,EAAAA,EAAAA,IAAA,qCACA,CACA,KAAA4X,iBAAA,CAhBA,MAFA,KAAAC,kBAAA,CAmBA,EAQAS,eAAAA,CAAArY,GACA,MAAAyE,EAAA,GACA,gBAAAzE,EACA,IAGAyE,EAAA5I,GAAAmE,EAAAnE,GACA4I,EAAAxI,MAAA+D,EAAAlE,KACA2I,EAAA2Q,UAAApV,EAAAoV,UAGApV,EAAAoV,UAAApV,EAAAoL,SAAA,IACA3G,EAAApG,MAAA2B,EAAAoV,UAAApV,EAAAoL,UAGA3G,EACA,I,gBE1WI,GAAU,CAAC,EAEf,GAAQvE,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,I1DTW,WAAkB,IAAI/D,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,WAAW,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,WAAW,aAAa,CAACJ,EAAG,kBAAkB,CAACI,MAAM,CAAC,aAAaN,EAAIuD,EAAE,WAAY,oBAAoBa,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,sBAAsB,CAACI,MAAM,CAAC,GAAK,WAAW,OAAQ,EAAK,KAAON,EAAIuD,EAAE,WAAY,gBAAgB,GAAK,CAAEjE,KAAM,UAAW8E,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,GAAM,CAACP,IAAI,UAAUM,GAAG,WAAW,MAAO,CAAEtE,EAAIiO,UAAW/N,EAAG,kBAAkB,CAACI,MAAM,CAAC,KAAQN,EAAIub,0BAAuC/W,EAAhB,gBAA4B,CAACxE,EAAIW,GAAG,mBAAmBX,EAAIY,GAAGZ,EAAIiO,WAAW,oBAAoBjO,EAAIa,KAAK,EAAE0D,OAAM,OAAUvE,EAAIW,GAAG,KAAMX,EAAImC,SAASsC,QAASvE,EAAG,sBAAsB,CAACI,MAAM,CAAC,GAAK,QAAQ,OAAQ,EAAK,KAAON,EAAIuD,EAAE,WAAY,UAAU,GAAK,CAAEjE,KAAM,QAAS2E,OAAQ,CAAEC,cAAe,WAAaE,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,gBAAgB,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,GAAOvE,EAAI8b,eAAeja,MAAQ,EAAG,CAACmC,IAAI,UAAUM,GAAG,WAAW,MAAO,CAACpE,EAAG,kBAAkB,CAACI,MAAM,CAAC,KAAoC,UAA7BN,EAAIub,qBAAmC,mBAAgB/W,IAAY,CAACxE,EAAIW,GAAG,mBAAmBX,EAAIY,GAAGZ,EAAI8b,eAAeja,OAAO,oBAAoB,EAAE0C,OAAM,GAAM,MAAM,MAAK,KAAQvE,EAAIa,KAAKb,EAAIW,GAAG,KAAMX,EAAI+b,kBAAkBnD,UAAY,IAA0C,IAArC5Y,EAAI+b,kBAAkBnD,UAAkB1Y,EAAG,sBAAsB,CAACI,MAAM,CAAC,GAAK,WAAW,OAAQ,EAAK,KAAON,EAAIuD,EAAE,WAAY,kBAAkB,GAAK,CAAEjE,KAAM,QAAS2E,OAAQ,CAAEC,cAAe,cAAgBE,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,GAAOvE,EAAI+b,kBAAkBnD,UAAY,EAAG,CAAC5U,IAAI,UAAUM,GAAG,WAAW,MAAO,CAACpE,EAAG,kBAAkB,CAACI,MAAM,CAAC,KAAoC,aAA7BN,EAAIub,qBAAsC,mBAAgB/W,IAAY,CAACxE,EAAIW,GAAG,mBAAmBX,EAAIY,GAAGZ,EAAI+b,kBAAkBnD,WAAW,oBAAoB,EAAErU,OAAM,GAAM,MAAM,MAAK,KAAQvE,EAAIa,KAAKb,EAAIW,GAAG,KAAKT,EAAG,yBAAyB,CAACI,MAAM,CAAC,KAAON,EAAIuD,EAAE,WAAY,UAAU,SAAWvD,EAAImb,gBAAgB,aAAanb,EAAImb,gBAAkBnb,EAAIuD,EAAE,WAAY,oBAAsBvD,EAAIuD,EAAE,WAAY,gBAAgB,aAAa,GAAG,KAAOvD,EAAIkb,gBAAgB3a,GAAG,CAAC,cAAc,SAASC,GAAQR,EAAIkb,eAAe1a,CAAM,GAAG4D,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,qBAAqBM,GAAG,WAAW,MAAO,CAAEtE,EAAImb,gBAAiBjb,EAAG,iBAAiBA,EAAG,OAAO,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,GAAM,CAACP,IAAI,UAAUM,GAAG,WAAW,MAAO,CAACpE,EAAG,eAAe,CAACkE,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,MAAS,CAACvE,EAAIW,GAAG,mBAAmBX,EAAIY,GAAGZ,EAAIuD,EAAE,WAAY,iBAAiB,oBAAoBvD,EAAIW,GAAG,KAAKT,EAAG,gBAAgB,CAACI,MAAM,CAAC,MAAQN,EAAIuD,EAAE,WAAY,cAAc,kCAAkC,GAAG,iBAAgB,EAAM,SAAWvD,EAAImb,gBAAgB,MAAQnb,EAAIib,aAAa,MAAQjb,EAAIob,iBAAiB,cAAcpb,EAAIob,iBAAmBpb,EAAIuD,EAAE,WAAY,mCAAqC,IAAIhD,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIib,aAAaza,CAAM,EAAE,OAASR,EAAI4L,eAAe,EAAErH,OAAM,OAAUvE,EAAIW,GAAG,KAAKX,EAAIgI,GAAIhI,EAAI2b,WAAW,SAASnY,GAAO,OAAOtD,EAAG,gBAAgB,CAAC8D,IAAIR,EAAMnE,GAAGiB,MAAM,CAAC,GAAKkD,EAAMnE,GAAG,OAASW,EAAIub,uBAAyB/X,EAAMnE,GAAG,KAAOmE,EAAM/D,MAAM,MAAQ+D,EAAM3B,QAAQ,IAAG,EAAE0C,OAAM,GAAM,CAACP,IAAI,SAASM,GAAG,WAAW,MAAO,CAACpE,EAAG,KAAK,CAACG,YAAY,kCAAkC,CAACH,EAAG,sBAAsB,CAACI,MAAM,CAAC,KAAON,EAAIuD,EAAE,WAAY,6BAA6BhD,GAAG,CAAC,MAAQ,SAASC,GAAQR,EAAIqb,cAAe,CAAI,GAAGjX,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,MAAM,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,QAAW,GAAG,EAAEA,OAAM,MAAS,CAACrE,EAAG,qBAAqB,CAACI,MAAM,CAAC,YAAY,kBAAkB,KAAON,EAAIuD,EAAE,WAAW,aAAahD,GAAG,CAAC,MAAQP,EAAIqc,gBAAgB,MAAQ,CAAC,SAAS7b,GAAQ,OAAIA,EAAOd,KAAK6c,QAAQ,QAAQvc,EAAIwc,GAAGhc,EAAOic,QAAQ,QAAQ,GAAGjc,EAAOwD,IAAI,SAAgB,KAAYhE,EAAIqc,gBAAgB/O,MAAM,KAAMC,UAAU,EAAE,SAAS/M,GAAQ,OAAIA,EAAOd,KAAK6c,QAAQ,QAAQvc,EAAIwc,GAAGhc,EAAOic,QAAQ,QAAQ,GAAGjc,EAAOwD,IAAI,CAAC,IAAI,aAAoB,KAAYhE,EAAIqc,gBAAgB/O,MAAM,KAAMC,UAAU,IAAInJ,YAAYpE,EAAIqE,GAAG,CAAC,CAACL,IAAI,OAAOM,GAAG,WAAW,MAAO,CAACpE,EAAG,OAAO,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEiE,OAAM,QAAW,GAAGvE,EAAIW,GAAG,KAAKT,EAAG,eAAe,CAACI,MAAM,CAAC,eAAeN,EAAIsb,cAAc,CAACpb,EAAG,WAAW,CAACI,MAAM,CAAC,iBAAiBN,EAAIub,qBAAqB,mBAAmBvb,EAAIqP,oBAAoB,IAAI,GAAGrP,EAAIW,GAAG,KAAKT,EAAG,qBAAqB,CAACI,MAAM,CAAC,KAAON,EAAIqb,cAAc9a,GAAG,CAAC,cAAc,SAASC,GAAQR,EAAIqb,aAAa7a,CAAM,MAAM,EAC3iJ,GACsB,I0DUpB,EACA,KACA,WACA,MAI8B,O,kDCbgCpB,EAAOsd,QAG/D,WAAe,aAEvB,IAAIvC,EAAkB,WACpBla,KAAK0c,YAAc,CAAC,EACpB1c,KAAK2c,WAAa,GAClB3c,KAAK4c,cAAe,CACtB,EAEIC,EAAqB,CAAEC,UAAW,CAAC,GAOvCD,EAAmBC,UAAUxJ,IAAM,WACjC,OAAOtT,KAAK2c,UACd,EAOAE,EAAmBC,UAAUvJ,IAAM,SAAUvQ,GAC3ChD,KAAK2c,WAAa3Z,EAASA,EAAQ,IAAO,EAC5C,EASAkX,EAAgB6C,UAAUC,UAAY,SAAoBC,GACxD,MAAQ,GAAMjd,KAAe,WAAIid,CACnC,EAUA/C,EAAgB6C,UAAUG,OAAS,SAAiBD,EAAOE,EAAU1d,GACnE,IAAIsE,EAAM/D,KAAKgd,UAAUC,GACrBja,EAAQvD,GAAQ,CAAC0F,MAAOJ,QAAQ4H,SAASlN,GACzC2d,KAAKC,UAAUF,GACfA,EAEJG,OAAOC,aAAaC,QAAQzZ,EAAKf,EACnC,EASAkX,EAAgB6C,UAAUU,OAAS,SAAiBR,GAClD,IAAIlZ,EAAM/D,KAAKgd,UAAUC,GAEzB,OAAOK,OAAOC,aAAaxZ,EAC7B,EAUAmW,EAAgB6C,UAAUzJ,IAAM,SAAc2J,EAAOS,EAAcC,GAKjE,QAHwB,IAAjBD,IAA0BA,EAAe,WACzB,IAAhBC,IAAyBA,EAAcje,SAEzCM,KAAK4c,aACR,OAAO,KAGT,GAAI5c,KAAKyd,OAAOR,GAAQ,CACtB,IAAIxd,EAAOke,EAEX,IAAK,IAAI5Z,KAXI/D,KAWU0c,YACrB,GAAI3Y,IAAQkZ,EAAO,CACjBxd,EAbSO,KAaK0c,YAAY3Y,GAAKtE,KAC/B,KACF,CAGF,OAAOO,KAAK4d,SAASne,EAAMO,KAAKyd,OAAOR,GACzC,CAEA,OAAwB,OAAjBS,EAAwBA,EAAe,IAChD,EASAxD,EAAgB6C,UAAUxJ,IAAM,SAAc0J,EAAOja,GACjD,IAAI6a,EAAS7d,KAEf,IAAKA,KAAK4c,aACR,OAAO,KAGT,IAAK,IAAI7Y,KAAO8Z,EAAOnB,YAAa,CAClC,IAAIjd,EAAOoe,EAAOnB,YAAY3Y,GAAKtE,KAEnC,GAAKsE,IAAQkZ,EAGX,OAFAY,EAAOX,OAAOD,EAAOja,EAAOvD,GAErBuD,CAEX,CAIA,OAFAhD,KAAKkd,OAAOD,EAAOja,GAEZA,CACT,EAOAkX,EAAgB6C,UAAUe,OAAS,SAAiBb,GAClD,OAAKjd,KAAK4c,aAIHU,OAAOC,aAAaQ,WAAWd,GAH7B,IAIX,EASA/C,EAAgB6C,UAAUiB,YAAc,SAAsBja,EAAKtE,EAAMie,QAC/C,IAAjBA,IAA0BA,OAAenZ,GAEhD9E,EAAOA,GAAQC,OAEfM,KAAK0c,YAAY3Y,GAAO,CAAEtE,KAAMA,GAE3BO,KAAKyd,OAAO1Z,IAAyB,OAAjB2Z,GACvB1d,KAAKkd,OAAOnZ,EAAK2Z,EAAcje,EAEnC,EAUAya,EAAgB6C,UAAUa,SAAW,SAAmBne,EAAMuD,GAC5D,OAAQvD,GACN,KAAKiC,QACH,MAAiB,SAAVsB,EACT,KAAKlD,OACH,OAAOme,WAAWjb,GACpB,KAAKmC,MACH,IACE,IAAI+Y,EAAQd,KAAKe,MAAMnb,GAEvB,OAAOmC,MAAMwW,QAAQuC,GAASA,EAAQ,EACxC,CAAE,MAAOvE,GACP,MAAO,EACT,CACF,KAAK5U,OACH,IACE,OAAOqY,KAAKe,MAAMnb,EACpB,CAAE,MAAO2W,GACP,MAAO,CAAC,CACV,CACF,QACE,OAAO3W,EAEb,EAEA+B,OAAOqZ,iBAAkBlE,EAAgB6C,UAAWF,GAEpD,IAAIwB,EAAkB,IAAInE,EA+F1B,MA7FY,CAOVoE,QAAS,SAAU5Z,EAAKlB,GAGtB,QAFiB,IAAZA,IAAqBA,EAAU,CAAC,QAEd,IAAZ+a,KAEPA,EAAQC,QACRD,EAAQE,cACPF,EAAQG,KAA+B,WAAxBH,EAAQG,IAAIC,SAJhC,CAUA,IAAIC,GAAc,EAElB,IACE,IAAIC,EAAO,4BAEXvB,OAAOC,aAAaC,QAAQqB,EAAMA,GAClCvB,OAAOC,aAAaQ,WAAWc,EACjC,CAAE,MAAOlF,GACPiF,GAAc,EACdP,EAAgBzB,cAAe,EAE/BnI,EAAQrR,MAAM,iCAChB,CAEA,IAAI/D,EAAOmE,EAAQnE,MAAQ,eACvByf,EAAOtb,EAAQsb,KAEftb,EAAQsZ,YACVuB,EAAgBvB,UAAYtZ,EAAQsZ,WAGtCpY,EAAIqa,MAAM,CACRC,aAAc,WACZ,IAAInB,EAAS7d,KAER4e,GAID5e,KAAKif,SAAS5f,IAChB0F,OAAO8L,KAAK7Q,KAAKif,SAAS5f,IAAO6f,SAAQ,SAAUnb,GACjD,IAAIob,EAAStB,EAAOoB,SAAS5f,GAAM0E,GAC/BU,EAAM,CAAC0a,EAAO1f,KAAM0f,EAAOvf,SAC3BH,EAAOgF,EAAI,GACXiZ,EAAejZ,EAAI,GAMvB,GAJA4Z,EAAgBL,YAAYja,EAAKtE,EAAMie,GAEpB3Y,OAAOqa,yBAAyBf,EAAiBta,GAWxDW,EAAIya,OAAOE,QACrB5K,EAAQ6K,IAAKvb,EAAM,+CAVF,CACjB,IAAIwb,EAAO,CACTjM,IAAK,WAAc,OAAO5O,EAAI6Y,aAAajK,IAAIvP,EAAK2Z,EAAe,EACnEnK,IAAK,SAAUkE,GAAO,OAAO/S,EAAI6Y,aAAahK,IAAIxP,EAAK0T,EAAM,EAC7D+H,cAAc,GAGhBza,OAAO0a,eAAepB,EAAiBta,EAAKwb,GAC5C7a,EAAIgb,KAAKC,eAAetB,EAAiBta,EAAK2Z,EAChD,EAIKoB,GAAQK,EAAOL,QAAyB,IAAhBK,EAAOL,OAClCjB,EAAOoB,SAAShd,SAAW4b,EAAOoB,SAAShd,UAAY,CAAC,EAEnD4b,EAAOoB,SAAShd,SAAS8B,KAC5B8Z,EAAOoB,SAAShd,SAAS8B,GAAO,CAC9BuP,IAAK,WAAc,OAAO5O,EAAI6Y,aAAaxZ,EAAM,EACjDwP,IAAK,SAAUkE,GAAO/S,EAAI6Y,aAAaxZ,GAAO0T,CAAK,IAI3D,GAEJ,IAGF/S,EAAIrF,GAAQgf,EACZ3Z,EAAIqY,UAAW,IAAM1d,GAASgf,CAvE9B,CAwEF,EAKD,CA1SgFuB,E","sources":["webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true","webpack://nextcloud/./apps/settings/src/views/Users.vue?962b","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountOff.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountOff.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountOff.vue?800f","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountOff.vue?vue&type=template&id=4a2e1178","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Cog.vue?4d6d","webpack:///nextcloud/node_modules/vue-material-design-icons/Cog.vue?vue&type=template&id=bcf30078","webpack:///nextcloud/node_modules/vue-material-design-icons/ShieldAccount.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ShieldAccount.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ShieldAccount.vue?d5b2","webpack:///nextcloud/node_modules/vue-material-design-icons/ShieldAccount.vue?vue&type=template&id=3937f138","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?0348","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?544e","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?6ea8","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?eac5","webpack://nextcloud/./apps/settings/src/components/Users/NewUserModal.vue?0748","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?2405","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?b533","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?91be","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?afcf","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?2e1a","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack:///nextcloud/apps/settings/src/views/Users.vue","webpack:///nextcloud/apps/settings/src/views/Users.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/views/Users.vue?2e4a","webpack://nextcloud/./apps/settings/src/views/Users.vue?cf86","webpack:///nextcloud/node_modules/vue-localstorage/dist/vue-local-storage.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__header[data-v-36dd2d08]{margin:0}.modal__content[data-v-36dd2d08]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-36dd2d08]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.empty[data-v-220321a2] .icon-vue{width:64px;height:64px}.empty[data-v-220321a2] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@import './Users/shared/styles.scss';\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal__form[data-v-0634d81b]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__form #new-user-groups-input[data-v-0634d81b]{position:absolute;opacity:0;width:0}.modal__item[data-v-0634d81b]{width:100%}.modal__item[data-v-0634d81b]:not(:focus):not(:active){border-color:var(--color-border-dark)}.modal__hint[data-v-0634d81b]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.modal__label[data-v-0634d81b]{display:block;padding:4px 0}.modal__select[data-v-0634d81b]{width:100%}.modal__submit[data-v-0634d81b]{margin-top:20px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserModal.vue\"],\"names\":[],\"mappings\":\"AAEC,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGA,qDACC,iBAAA,CACA,SAAA,CAMA,OAAA,CAIF,8BACC,UAAA,CAEA,uDACC,qCAAA,CAIF,8BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,+BACC,aAAA,CACA,aAAA,CAGD,gCACC,UAAA,CAGD,gCACC,eAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\n\\t\\t/* fake input for groups validation */\\n\\t\\t#new-user-groups-input {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\topacity: 0;\\n\\t\\t\\t/* The \\\"hidden\\\" input is behind the NcSelect, so in general it does\\n\\t\\t\\t* not receives clicks. However, with Firefox, after the validation\\n\\t\\t\\t* fails, it will receive the first click done on it, so its width needs\\n\\t\\t\\t* to be set to 0 to prevent that (\\\"pointer-events: none\\\" does not\\n\\t\\t\\t* prevent it). */\\n\\t\\t\\twidth: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.footer[data-v-3ec0b16a]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-3ec0b16a]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-3ec0b16a],.footer__cell span[data-v-3ec0b16a],.footer__cell label[data-v-3ec0b16a]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-3ec0b16a],.footer__cell--displayname[data-v-3ec0b16a]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-3ec0b16a]{left:0}.footer__cell--displayname[data-v-3ec0b16a]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.footer__cell--avatar[data-v-3ec0b16a]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-3ec0b16a]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-3ec0b16a]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-3ec0b16a]{min-width:400px;width:400px}.footer__cell--fill[data-v-3ec0b16a]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-3ec0b16a]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.footer__subtitle[data-v-3ec0b16a]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-3ec0b16a]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-3ec0b16a]{left:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-3ec0b16a]{left:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA,CDjHD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,MAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,6BAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.footer {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.header[data-v-69afa821]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background);border-bottom:1px solid var(--color-border)}.header__cell[data-v-69afa821]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-69afa821],.header__cell span[data-v-69afa821],.header__cell label[data-v-69afa821]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-69afa821],.header__cell--displayname[data-v-69afa821]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-69afa821]{left:0}.header__cell--displayname[data-v-69afa821]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.header__cell--avatar[data-v-69afa821]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-69afa821]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-69afa821]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-69afa821]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-69afa821]{min-width:400px;width:400px}.header__cell--fill[data-v-69afa821]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-69afa821]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.header__subtitle[data-v-69afa821]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDrBA,2CAAA,CCyBA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,MAAA,CAGD,4CACC,6BAAA,CACA,0CAAA,CAAA,CAIF,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.header {\\n\\t@include row;\\n\\t@include cell;\\n\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list__row[data-v-79fe702d]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-79fe702d]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-79fe702d]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-79fe702d]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-79fe702d]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-79fe702d],.row__cell span[data-v-79fe702d],.row__cell label[data-v-79fe702d]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-79fe702d],.row__cell--displayname[data-v-79fe702d]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-79fe702d]{left:0}.row__cell--displayname[data-v-79fe702d]{left:var(--avatar-cell-width);border-right:1px solid var(--color-border)}}.row__cell--avatar[data-v-79fe702d]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-79fe702d]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-79fe702d]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-79fe702d]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-79fe702d]{min-width:400px;width:400px}.row__cell--fill[data-v-79fe702d]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-79fe702d]{position:sticky;right:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-left:1px solid var(--color-border)}.row__subtitle[data-v-79fe702d]{color:var(--color-text-maxcontrast)}.row__cell[data-v-79fe702d]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-79fe702d] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-79fe702d]{margin-top:4px}.row__progress--warn[data-v-79fe702d]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-79fe702d]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCoBC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDtBA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCgBD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,MAAA,CAGD,yCACC,6BAAA,CACA,0CAAA,CAAA,CAIF,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,OAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,yCAAA,CAIF,gCACC,mCAAA,CDjGD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@import './shared/styles.scss';\\n\\n.user-list__row {\\n\\t@include row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright 2023 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tleft: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tleft: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-right: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-left: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `label[for=default-quota-select][data-v-0a250c55]{display:block;padding:4px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AACA,iDACC,aAAA,CACA,aAAA\",\"sourcesContent\":[\"\\nlabel[for=\\\"default-quota-select\\\"] {\\n\\tdisplay: block;\\n\\tpadding: 4px 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-list[data-v-4377829d]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%}.user-list__header[data-v-4377829d],.user-list__footer[data-v-4377829d]{position:sticky;display:block}.user-list__header[data-v-4377829d]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-4377829d]{left:0}.user-list__body[data-v-4377829d]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,MAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tleft: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-content[data-v-68b27594]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-navigation-entry__settings[data-v-68b27594]{height:auto !important;flex:0 0 auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/Users.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAGD,iDACC,sBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[_c('NcContent',{attrs:{\"app-name\":\"settings\"}},[_c('NcAppNavigation',{attrs:{\"aria-label\":_vm.t('settings', 'User management')},scopedSlots:_vm._u([{key:\"list\",fn:function(){return [_c('NcAppNavigationItem',{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_vm.t('settings', 'Active users'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.userCount)?_c('NcCounterBubble',{attrs:{\"type\":!_vm.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.userCount)+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.settings.isAdmin)?_c('NcAppNavigationItem',{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_vm.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ShieldAccount',{attrs:{\"size\":20}})]},proxy:true},(_vm.adminGroupMenu.count > 0)?{key:\"counter\",fn:function(){return [_c('NcCounterBubble',{attrs:{\"type\":_vm.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.adminGroupMenu.count)+\"\\n\\t\\t\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e(),_vm._v(\" \"),(_vm.disabledGroupMenu.usercount > 0 || _vm.disabledGroupMenu.usercount === -1)?_c('NcAppNavigationItem',{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_vm.t('settings', 'Disabled users'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountOff',{attrs:{\"size\":20}})]},proxy:true},(_vm.disabledGroupMenu.usercount > 0)?{key:\"counter\",fn:function(){return [_c('NcCounterBubble',{attrs:{\"type\":_vm.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.disabledGroupMenu.usercount)+\"\\n\\t\\t\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationCaption',{attrs:{\"name\":_vm.t('settings', 'Groups'),\"disabled\":_vm.loadingAddGroup,\"aria-label\":_vm.loadingAddGroup ? _vm.t('settings', 'Creating group …') : _vm.t('settings', 'Create group'),\"force-menu\":\"\",\"open\":_vm.isAddGroupOpen},on:{\"update:open\":function($event){_vm.isAddGroupOpen=$event}},scopedSlots:_vm._u([{key:\"actionsTriggerIcon\",fn:function(){return [(_vm.loadingAddGroup)?_c('NcLoadingIcon'):_c('Plus',{attrs:{\"size\":20}})]},proxy:true},{key:\"actions\",fn:function(){return [_c('NcActionText',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Create group'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionInput',{attrs:{\"label\":_vm.t('settings', 'Group name'),\"data-cy-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_vm.loadingAddGroup,\"value\":_vm.newGroupName,\"error\":_vm.hasAddGroupError,\"helper-text\":_vm.hasAddGroupError ? _vm.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_vm.newGroupName=$event},\"submit\":_vm.createGroup}})]},proxy:true}])}),_vm._v(\" \"),_vm._l((_vm.groupList),function(group){return _c('GroupListItem',{key:group.id,attrs:{\"id\":group.id,\"active\":_vm.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NcAppNavigationItem',{attrs:{\"name\":_vm.t('settings', 'User management settings')},on:{\"click\":function($event){_vm.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Cog',{attrs:{\"size\":20}})]},proxy:true}])})],1)]},proxy:true}])},[_c('NcAppNavigationNew',{attrs:{\"button-id\":\"new-user-button\",\"text\":_vm.t('settings','New user')},on:{\"click\":_vm.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _vm.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}])})],1),_vm._v(\" \"),_c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)],1),_vm._v(\" \"),_c('UserSettingsDialog',{attrs:{\"open\":_vm.isDialogOpen},on:{\"update:open\":function($event){_vm.isDialogOpen=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountOff.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountOff.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountOff.vue?vue&type=template&id=4a2e1178\"\nimport script from \"./AccountOff.vue?vue&type=script&lang=js\"\nexport * from \"./AccountOff.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-off-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,4A4,4 0 0,1 16,8C16,9.95 14.6,11.58 12.75,11.93L8.07,7.25C8.42,5.4 10.05,4 12,4M12.28,14L18.28,20L20,21.72L18.73,23L15.73,20H4V18C4,16.16 6.5,14.61 9.87,14.14L2.78,7.05L4.05,5.78L12.28,14M20,18V19.18L15.14,14.32C18,14.93 20,16.35 20,18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Cog.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Cog.vue?vue&type=template&id=bcf30078\"\nimport script from \"./Cog.vue?vue&type=script&lang=js\"\nexport * from \"./Cog.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShieldAccount.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ShieldAccount.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShieldAccount.vue?vue&type=template&id=3937f138\"\nimport script from \"./ShieldAccount.vue?vue&type=script&lang=js\"\nexport * from \"./ShieldAccount.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon shield-account-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M17.13,17C15.92,18.85 14.11,20.24 12,20.92C9.89,20.24 8.08,18.85 6.87,17C6.53,16.5 6.24,16 6,15.47C6,13.82 8.71,12.47 12,12.47C15.29,12.47 18,13.79 18,15.47C17.76,16 17.47,16.5 17.13,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The users will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && _vm.settings.isAdmin)?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=36dd2d08&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=36dd2d08&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36dd2d08\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserModal',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"close\":_vm.closeModal}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No users')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading users …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.usersSvg}})]},proxy:true}],null,false,934871631)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tgroups: _vm.groups,\n\t\t\tsubAdminsGroups: _vm.subAdminsGroups,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of users. This list is not fully rendered for performance reasons. The users will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=4377829d&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=4377829d&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4377829d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',_vm._g({staticClass:\"modal\",attrs:{\"size\":\"small\"}},_vm.$listeners),[_c('form',{staticClass:\"modal__form\",attrs:{\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'New user')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"username\",staticClass:\"modal__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"modal__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"modal__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"modal__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[(!_vm.settings.isAdmin)?_c('NcTextField',{class:{ 'icon-loading-small': _vm.loading.groups },attrs:{\"id\":\"new-user-groups-input\",\"tabindex\":\"-1\",\"value\":_vm.newUser.groups,\"required\":!_vm.settings.isAdmin}}):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-groups\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(!_vm.settings.isAdmin ? _vm.t('settings', 'Groups (required)') : _vm.t('settings', 'Groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-groups\",\"placeholder\":_vm.t('settings', 'Set user groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.canAddGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":true},on:{\"input\":_vm.handleGroupInput,\"option:created\":_vm.createGroup}})],1),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-sub-admin\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Administered groups'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-sub-admin\",\"placeholder\":_vm.t('settings', 'Set user as admin for …'),\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-quota\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-quota\",\"placeholder\":_vm.t('settings', 'Set user quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"modal__item\"},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-language\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-language\",\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['modal__item managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('label',{staticClass:\"modal__label\",attrs:{\"for\":\"new-user-manager\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manager'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"modal__select\",attrs:{\"input-id\":\"new-user-manager\",\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1),_vm._v(\" \"),_c('NcButton',{staticClass:\"modal__submit\",attrs:{\"data-test\":\"submit\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new user'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserModal.vue?vue&type=template&id=0634d81b&scoped=true\"\nimport script from \"./NewUserModal.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserModal.vue?vue&type=style&index=0&id=0634d81b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0634d81b\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading users …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=3ec0b16a&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=3ec0b16a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ec0b16a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Username'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'User actions'))+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=69afa821&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=69afa821&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"69afa821\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading user …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:[(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this user'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add user to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add user to group'),\"taggable\":_vm.settings.isAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ name: value, isCreating: true })},on:{\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && _vm.settings.isAdmin && _vm.subAdminsGroups.length > 0)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set user as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"value\":_vm.userSubAdminsGroups},on:{\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminsGroupsLabels?.length > 40 ? _vm.userSubAdminsGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminsGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select user quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select user quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowActions.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle user actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.actions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon},on:{\"click\":(event) => action(event, { ..._vm.user })}},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\")])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=348ae063\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author Greta Doci \n * @author John Molakvoæ \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tgroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tsubAdminsGroups: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tconst userGroups = this.groups.filter(group => this.user.groups.includes(group.id))\n\t\t\treturn userGroups\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tconst userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id))\n\t\t\treturn userSubAdminsGroups\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tconst groupClone = Object.assign({}, group)\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled\n\t\t\t\t\t= (group.canAdd === false\n\t\t\t\t\t\t&& !this.user.groups.includes(group.id))\n\t\t\t\t\t|| (group.canRemove === false\n\t\t\t\t\t\t&& this.user.groups.includes(group.id))\n\t\t\t\treturn groupClone\n\t\t\t})\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(this.user.quota.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: OC.Util.humanFileSize(0) })\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = OC.Util.humanFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLogin > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLogin)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user\n * @param user.id\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=79fe702d&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=79fe702d&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79fe702d\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=220321a2&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=220321a2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"220321a2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'User management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show user backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new users'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('label',{attrs:{\"for\":\"default-quota-select\"}},[_vm._v(_vm._s(_vm.t('settings', 'Default quota')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"input-id\":\"default-quota-select\",\"placement\":\"top\",\"taggable\":true,\"options\":_vm.quotaOptions,\"create-option\":_vm.validateQuota,\"placeholder\":_vm.t('settings', 'Select default quota'),\"clearable\":false},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=0a250c55&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=0a250c55&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a250c55\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=68b27594&scoped=true\"\nimport script from \"./Users.vue?vue&type=script&lang=js\"\nexport * from \"./Users.vue?vue&type=script&lang=js\"\nimport style0 from \"./Users.vue?vue&type=style&index=0&id=68b27594&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b27594\",\n null\n \n)\n\nexport default component.exports","/**\n * vue-local-storage v0.6.0\n * (c) 2017 Alexander Avakov\n * @license MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.VueLocalStorage = factory());\n}(this, (function () { 'use strict';\n\nvar VueLocalStorage = function VueLocalStorage () {\n this._properties = {};\n this._namespace = '';\n this._isSupported = true;\n};\n\nvar prototypeAccessors = { namespace: {} };\n\n/**\n * Namespace getter.\n *\n * @returns {string}\n */\nprototypeAccessors.namespace.get = function () {\n return this._namespace\n};\n\n/**\n * Namespace setter.\n *\n * @param {string} value\n */\nprototypeAccessors.namespace.set = function (value) {\n this._namespace = value ? (value + \".\") : '';\n};\n\n/**\n * Concatenates localStorage key with namespace prefix.\n *\n * @param {string} lsKey\n * @returns {string}\n * @private\n */\nVueLocalStorage.prototype._getLsKey = function _getLsKey (lsKey) {\n return (\"\" + (this._namespace) + lsKey)\n};\n\n/**\n * Set a value to localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @param {*} rawValue\n * @param {*} type\n * @private\n */\nVueLocalStorage.prototype._lsSet = function _lsSet (lsKey, rawValue, type) {\n var key = this._getLsKey(lsKey);\n var value = type && [Array, Object].includes(type)\n ? JSON.stringify(rawValue)\n : rawValue;\n\n window.localStorage.setItem(key, value);\n};\n\n/**\n * Get value from localStorage giving respect to the namespace.\n *\n * @param {string} lsKey\n * @returns {any}\n * @private\n */\nVueLocalStorage.prototype._lsGet = function _lsGet (lsKey) {\n var key = this._getLsKey(lsKey);\n\n return window.localStorage[key]\n};\n\n/**\n * Get value from localStorage\n *\n * @param {String} lsKey\n * @param {*} defaultValue\n * @param {*} defaultType\n * @returns {*}\n */\nVueLocalStorage.prototype.get = function get (lsKey, defaultValue, defaultType) {\n var this$1 = this;\n if ( defaultValue === void 0 ) defaultValue = null;\n if ( defaultType === void 0 ) defaultType = String;\n\n if (!this._isSupported) {\n return null\n }\n\n if (this._lsGet(lsKey)) {\n var type = defaultType;\n\n for (var key in this$1._properties) {\n if (key === lsKey) {\n type = this$1._properties[key].type;\n break\n }\n }\n\n return this._process(type, this._lsGet(lsKey))\n }\n\n return defaultValue !== null ? defaultValue : null\n};\n\n/**\n * Set localStorage value\n *\n * @param {String} lsKey\n * @param {*} value\n * @returns {*}\n */\nVueLocalStorage.prototype.set = function set (lsKey, value) {\n var this$1 = this;\n\n if (!this._isSupported) {\n return null\n }\n\n for (var key in this$1._properties) {\n var type = this$1._properties[key].type;\n\n if ((key === lsKey)) {\n this$1._lsSet(lsKey, value, type);\n\n return value\n }\n }\n\n this._lsSet(lsKey, value);\n\n return value\n};\n\n/**\n * Remove value from localStorage\n *\n * @param {String} lsKey\n */\nVueLocalStorage.prototype.remove = function remove (lsKey) {\n if (!this._isSupported) {\n return null\n }\n\n return window.localStorage.removeItem(lsKey)\n};\n\n/**\n * Add new property to localStorage\n *\n * @param {String} key\n * @param {function} type\n * @param {*} defaultValue\n */\nVueLocalStorage.prototype.addProperty = function addProperty (key, type, defaultValue) {\n if ( defaultValue === void 0 ) defaultValue = undefined;\n\n type = type || String;\n\n this._properties[key] = { type: type };\n\n if (!this._lsGet(key) && defaultValue !== null) {\n this._lsSet(key, defaultValue, type);\n }\n};\n\n/**\n * Process the value before return it from localStorage\n *\n * @param {String} type\n * @param {*} value\n * @returns {*}\n * @private\n */\nVueLocalStorage.prototype._process = function _process (type, value) {\n switch (type) {\n case Boolean:\n return value === 'true'\n case Number:\n return parseFloat(value)\n case Array:\n try {\n var array = JSON.parse(value);\n\n return Array.isArray(array) ? array : []\n } catch (e) {\n return []\n }\n case Object:\n try {\n return JSON.parse(value)\n } catch (e) {\n return {}\n }\n default:\n return value\n }\n};\n\nObject.defineProperties( VueLocalStorage.prototype, prototypeAccessors );\n\nvar vueLocalStorage = new VueLocalStorage();\n\nvar index = {\n /**\n * Install vue-local-storage plugin\n *\n * @param {Vue} Vue\n * @param {Object} options\n */\n install: function (Vue, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof process !== 'undefined' &&\n (\n process.server ||\n process.SERVER_BUILD ||\n (process.env && process.env.VUE_ENV === 'server')\n )\n ) {\n return\n }\n\n var isSupported = true;\n\n try {\n var test = '__vue-localstorage-test__';\n\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n } catch (e) {\n isSupported = false;\n vueLocalStorage._isSupported = false;\n\n console.error('Local storage is not supported');\n }\n\n var name = options.name || 'localStorage';\n var bind = options.bind;\n\n if (options.namespace) {\n vueLocalStorage.namespace = options.namespace;\n }\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n var this$1 = this;\n\n if (!isSupported) {\n return\n }\n\n if (this.$options[name]) {\n Object.keys(this.$options[name]).forEach(function (key) {\n var config = this$1.$options[name][key];\n var ref = [config.type, config.default];\n var type = ref[0];\n var defaultValue = ref[1];\n\n vueLocalStorage.addProperty(key, type, defaultValue);\n\n var existingProp = Object.getOwnPropertyDescriptor(vueLocalStorage, key);\n\n if (!existingProp) {\n var prop = {\n get: function () { return Vue.localStorage.get(key, defaultValue); },\n set: function (val) { return Vue.localStorage.set(key, val); },\n configurable: true\n };\n\n Object.defineProperty(vueLocalStorage, key, prop);\n Vue.util.defineReactive(vueLocalStorage, key, defaultValue);\n } else if (!Vue.config.silent) {\n console.log((key + \": is already defined and will be reused\"));\n }\n\n if ((bind || config.bind) && config.bind !== false) {\n this$1.$options.computed = this$1.$options.computed || {};\n\n if (!this$1.$options.computed[key]) {\n this$1.$options.computed[key] = {\n get: function () { return Vue.localStorage[key]; },\n set: function (val) { Vue.localStorage[key] = val; }\n };\n }\n }\n });\n }\n }\n });\n\n Vue[name] = vueLocalStorage;\n Vue.prototype[(\"$\" + name)] = vueLocalStorage;\n }\n};\n\nreturn index;\n\n})));\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","AccountGroup","Delete","Fragment","NcActionButton","NcActionInput","NcAppNavigationItem","NcButton","NcCounterBubble","NcModal","NcNoteCard","Pencil","active","Boolean","required","count","data","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","computed","settings","$store","getters","getServerData","methods","handleGroupMenuOpen","renameGroup","gid","trim","displayName","$refs","displayNameInput","$el","querySelector","value","dispatch","groupid","removeGroup","error","showError","t","group","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","key","params","selectedGroup","encodeURIComponent","scopedSlots","_u","fn","proxy","undefined","isAdmin","ref","Vue","directive","vElementVisibility","extend","dataComponent","Object","Function","dataKey","dataSources","Array","itemHeight","extraProps","bufferItems","index","headerHeight","tableHeight","resizeObserver","startIndex","Math","max","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","length","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","tfoot","thead","ResizeObserver","debounce","clientHeight","logger","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","handleFooterVisibility","visible","round","scrollTop","_setupProxy","_t","style","_l","item","i","tag","directives","rawName","expression","NcPasswordField","NcSelect","NcTextField","loading","newUser","quotaOptions","possibleManagers","managerLabel","showConfig","getShowConfig","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","groups","getGroups","filter","sort","a","b","localeCompare","subAdminsGroups","getSubadminGroups","canAddGroups","map","assign","$isDisabled","canAdd","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","createUser","all","userid","password","email","mailAddress","subadmin","quota","language","code","manager","username","inputField","input","focus","response","ocs","meta","statuscode","handleGroupInput","createGroup","_ref","find","validateQuota","validQuota","OC","Util","computerFileSize","humanFileSize","label","languageFilterBy","option","search","some","_ref2","toLocaleLowerCase","includes","query","offset","limit","then","users","values","_g","$listeners","preventDefault","apply","arguments","$set","newUserRequireEmail","class","model","callback","$$v","showLanguages","NcLoadingIcon","filteredUsers","userCount","n","hasObfuscated","passwordLabel","showUserBackend","showStoragePath","showLastLogin","defineComponent","NcActions","NcIconSvgWrapper","actions","disabled","edit","user","editSvg","toggleEdit","action","icon","text","event","externalActions","userGroups","userSubAdminsGroups","availableGroups","groupClone","canRemove","usedSpace","used","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","concat","lang","userLastLoginTooltip","lastLogin","formatDate","userLastLogin","relativeModifiedDate","unlimitedQuota","defaultQuota","isObfuscated","keys","at","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","selectedQuota","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","subadmins","delete","disable","wipe","editedDisplayName","displayname","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","userGroupsLabels","join","userSubAdminsGroupsLabels","formatFileSize","canEdit","getCurrentUser","uid","parseFileSize","userActions","deleteUser","wipeUserDevices","enabled","enableDisableUser","sendWelcomeMail","editedUserQuota","get","set","availableLanguages","initManager","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","result","showSuccess","timeout","finally","filterManagers","managers","userId","searchInitialUserManager","updateUserManager","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","isCreating","removeUserGroup","$route","commit","addUserSubAdmin","removeUserSubAdmin","setUserQuota","setUserLanguage","$nextTick","displayNameField","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","NcEmptyContent","NewUserModal","UserListFooter","UserListHeader","VirtualList","UserRow","isInitialLoad","rowHeight","usersSvg","searchQuery","getUsers","quotaPreset","reduce","acc","cur","allowUnlimitedQuota","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","watch","val","old","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeModal","defaultLanguage","currentGroup","allGroups","findIndex","usercount","$router","showNewUserForm","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","open","loadingSendMail","isModalOpen","getLocalstorage","status","setLocalStorage","newUserSendEmail","axios","post","generateUrl","e","message","localConfig","$localStorage","setDefaultQuota","app","use","VueLocalStorage","AccountOff","Cog","GroupListItem","NcActionText","NcAppContent","NcAppNavigation","NcAppNavigationCaption","NcAppNavigationNew","NcContent","Plus","ShieldAccount","UserList","UserSettingsDialog","newGroupName","isAddGroupOpen","loadingAddGroup","hasAddGroupError","isDialogOpen","pageHeading","selectedGroupDecoded","admin","decodeURIComponent","getUserCount","groupList","isArray","formatGroupMenu","adminGroupMenu","disabledGroupMenu","orderBy","sortGroups","OCA","Settings","registerAction","showNewUserMenu","groupId","indexOf","_k","keyCode","exports","_properties","_namespace","_isSupported","prototypeAccessors","namespace","prototype","_getLsKey","lsKey","_lsSet","rawValue","JSON","stringify","window","localStorage","setItem","_lsGet","defaultValue","defaultType","_process","this$1","remove","removeItem","addProperty","parseFloat","array","parse","defineProperties","vueLocalStorage","install","process","server","SERVER_BUILD","env","VUE_ENV","isSupported","test","bind","mixin","beforeCreate","$options","forEach","config","getOwnPropertyDescriptor","silent","log","prop","configurable","defineProperty","util","defineReactive","factory"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js index a46cff8c141f5..af44e1189e446 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,3 +1,3 @@ /*! For license information please see settings-vue-settings-apps-users-management.js.LICENSE.txt */ -(()=>{var e,r,o,i={92652:(t,e,r)=>{"use strict";r.d(e,{J:()=>o});var n=r(31352);const o=Object.freeze({installed:(0,n.Iu)("settings","Your apps"),enabled:(0,n.Iu)("settings","Active apps"),disabled:(0,n.Iu)("settings","Disabled apps"),updates:(0,n.Iu)("settings","Updates"),"app-bundles":(0,n.Iu)("settings","App bundles"),featured:(0,n.Iu)("settings","Featured apps"),supported:(0,n.Iu)("settings","Supported apps")})},38605:(t,e,r)=>{"use strict";r.d(e,{Z:()=>n});const n=(0,r(17499).IY)().setApp("settings").detectUser().build()},40491:(e,r,o)=>{"use strict";var i=o(20144),s=o(2324),a=o(83678);const u={name:"App",beforeMount(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(u,(function(){return(0,this._self._c)("router-view")}),[],!1,null,null,null).exports;var p=o(25108);function d(t,e){for(var r in e)t[r]=e[r];return t}var l=/[!'()*]/g,h=function(t){return"%"+t.charCodeAt(0).toString(16)},f=/%2C/g,m=function(t){return encodeURIComponent(t).replace(l,h).replace(f,",")};function g(t){try{return decodeURIComponent(t)}catch(t){}return t}var y=function(t){return null==t||"object"==typeof t?t:String(t)};function v(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var r=t.replace(/\+/g," ").split("="),n=g(r.shift()),o=r.length>0?g(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]})),e):e}function b(t){var e=t?Object.keys(t).map((function(e){var r=t[e];if(void 0===r)return"";if(null===r)return m(e);if(Array.isArray(r)){var n=[];return r.forEach((function(t){void 0!==t&&(null===t?n.push(m(e)):n.push(m(e)+"="+m(t)))})),n.join("&")}return m(e)+"="+m(r)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var w=/\/?$/;function A(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=E(i)}catch(t){}var s={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:U(e,o),matched:t?P(t):[]};return r&&(s.redirectedFrom=U(r,o)),Object.freeze(s)}function E(t){if(Array.isArray(t))return t.map(E);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=E(t[r]);return e}return t}var x=A(null,{path:"/"});function P(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function U(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||b)(n)+o}function I(t,e,r){return e===x?t===e:!!e&&(t.path&&e.path?t.path.replace(w,"")===e.path.replace(w,"")&&(r||t.hash===e.hash&&O(t.query,e.query)):!(!t.name||!e.name)&&t.name===e.name&&(r||t.hash===e.hash&&O(t.query,e.query)&&O(t.params,e.params)))}function O(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length===n.length&&r.every((function(r,o){var i=t[r];if(n[o]!==r)return!1;var s=e[r];return null==i||null==s?i===s:"object"==typeof i&&"object"==typeof s?O(i,s):String(i)===String(s)}))}function L(t){for(var e=0;e=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(o.path||""),c=e&&e.path||"/",p=u.path?R(u.path,c,r||o.append):c,l=function(t,e,r){void 0===e&&(e={});var n,o=r||v;try{n=o(t||"")}catch(t){n={}}for(var i in e){var s=e[i];n[i]=Array.isArray(s)?s.map(y):y(s)}return n}(u.query,o.query,n&&n.options.parseQuery),h=o.hash||u.hash;return h&&"#"!==h.charAt(0)&&(h="#"+h),{_normalized:!0,path:p,query:l,hash:h}}var J,K=function(){},X={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,r=this.$router,n=this.$route,o=r.resolve(this.to,n,this.append),i=o.location,s=o.route,a=o.href,u={},c=r.options.linkActiveClass,p=r.options.linkExactActiveClass,l=null==c?"router-link-active":c,h=null==p?"router-link-exact-active":p,f=null==this.activeClass?l:this.activeClass,m=null==this.exactActiveClass?h:this.exactActiveClass,g=s.redirectedFrom?A(null,Y(s.redirectedFrom),null,r):s;u[m]=I(n,g,this.exactPath),u[f]=this.exact||this.exactPath?u[m]:function(t,e){return 0===t.path.replace(w,"/").indexOf(e.path.replace(w,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(n,g);var y=u[m]?this.ariaCurrentValue:null,v=function(t){Q(t)&&(e.replace?r.replace(i,K):r.push(i,K))},b={click:Q};Array.isArray(this.event)?this.event.forEach((function(t){b[t]=v})):b[this.event]=v;var E={class:u},x=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:a,route:s,navigate:v,isActive:u[f],isExactActive:u[m]});if(x){if(1===x.length)return x[0];if(x.length>1||!x.length)return 0===x.length?t():t("span",{},x)}if("a"===this.tag)E.on=b,E.attrs={href:a,"aria-current":y};else{var P=tt(this.$slots.default);if(P){P.isStatic=!1;var U=P.data=d({},P.data);for(var O in U.on=U.on||{},U.on){var L=U.on[O];O in b&&(U.on[O]=Array.isArray(L)?L:[L])}for(var _ in b)_ in U.on?U.on[_].push(b[_]):U.on[_]=v;var C=P.data.attrs=d({},P.data.attrs);C.href=a,C["aria-current"]=y}else E.on=b}return t(this.tag,E,this.$slots.default)}};function Q(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function tt(t){if(t)for(var e,r=0;r-1&&(u.params[l]=r.params[l]);return u.path=W(p.path,u.params),a(p,u,s)}if(u.path){u.params={};for(var h=0;h-1}function Rt(t,e){return Ct(t)&&t._isRouter&&(null==e||t.type===e)}function Nt(t,e,r){var n=function(o){o>=t.length?r():t[o]?e(t[o],(function(){n(o+1)})):n(o+1)};n(0)}function kt(t,e){return St(t.map((function(t){return Object.keys(t.components).map((function(r){return e(t.components[r],t.instances[r],t,r)}))})))}function St(t){return Array.prototype.concat.apply([],t)}var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function jt(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var Ft=function(t,e){this.router=t,this.base=function(t){if(!t)if(et){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=x,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function $t(t,e,r,n){var o=kt(t,(function(t,n,o,i){var s=function(t,e){return"function"!=typeof t&&(t=J.extend(t)),t.options[e]}(t,e);if(s)return Array.isArray(s)?s.map((function(t){return r(t,n,o,i)})):r(s,n,o,i)}));return St(n?o.reverse():o)}function Dt(t,e){if(e)return function(){return t.apply(e,arguments)}}Ft.prototype.listen=function(t){this.cb=t},Ft.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Ft.prototype.onError=function(t){this.errorCbs.push(t)},Ft.prototype.transitionTo=function(t,e,r){var n,o=this;try{n=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(n,(function(){o.updateRoute(n),e&&e(n),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(n,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(n)})))}),(function(t){r&&r(t),t&&!o.ready&&(Rt(t,It.redirected)&&i===x||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Ft.prototype.confirmTransition=function(t,e,r){var n=this,o=this.current;this.pending=t;var i,s,a=function(t){!Rt(t)&&Ct(t)&&(n.errorCbs.length?n.errorCbs.forEach((function(e){e(t)})):p.error(t)),r&&r(t)},u=t.matched.length-1,c=o.matched.length-1;if(I(t,o)&&u===c&&t.matched[u]===o.matched[c])return this.ensureURL(),t.hash&&ft(this.router,o,t,!1),a(((s=Lt(i=o,t,It.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",s));var d,l=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r0)){var e=this.router,r=e.options.scrollBehavior,n=xt&&r;n&&this.listeners.push(ht());var o=function(){var r=t.current,o=qt(t.base);t.current===x&&o===t._startLocation||t.transitionTo(o,(function(t){n&&ft(e,t,r,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Pt(N(n.base+t.fullPath)),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Ut(N(n.base+t.fullPath)),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.ensureURL=function(t){if(qt(this.base)!==this.current.fullPath){var e=N(this.base+this.current.fullPath);t?Pt(e):Ut(e)}},e.prototype.getCurrentLocation=function(){return qt(this.base)},e}(Ft);function qt(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return!t||r!==n&&0!==r.indexOf(N(n+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Mt=function(t){function e(e,r,n){t.call(this,e,r),n&&function(t){var e=qt(t);if(!/^\/#/.test(e))return window.location.replace(N(t+"/#"+e)),!0}(this.base)||Gt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,r=xt&&e;r&&this.listeners.push(ht());var n=function(){var e=t.current;Gt()&&t.transitionTo(Vt(),(function(n){r&&ft(t.router,n,e,!0),xt||Ht(n.fullPath)}))},o=xt?"popstate":"hashchange";window.addEventListener(o,n),this.listeners.push((function(){window.removeEventListener(o,n)}))}},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){zt(t.fullPath),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Ht(t.fullPath),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Vt()!==e&&(t?zt(e):Ht(e))},e.prototype.getCurrentLocation=function(){return Vt()},e}(Ft);function Gt(){var t=Vt();return"/"===t.charAt(0)||(Ht("/"+t),!1)}function Vt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Zt(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function zt(t){xt?Pt(Zt(t)):window.location.hash=t}function Ht(t){xt?Ut(Zt(t)):window.location.replace(Zt(t))}var Wt=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)}),r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,(function(){var t=e.current;e.index=r,e.updateRoute(n),e.router.afterHooks.forEach((function(e){e&&e(n,t)}))}),(function(t){Rt(t,It.duplicated)&&(e.index=r)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Ft),Yt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=it(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!xt&&!1!==t.fallback,this.fallback&&(e="hash"),et||(e="abstract"),this.mode=e,e){case"history":this.history=new Bt(this,t.base);break;case"hash":this.history=new Mt(this,t.base,this.fallback);break;case"abstract":this.history=new Wt(this,t.base)}},Jt={currentRoute:{configurable:!0}};Yt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Jt.currentRoute.get=function(){return this.history&&this.history.current},Yt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var r=this.history;if(r instanceof Bt||r instanceof Mt){var n=function(t){r.setupListeners(),function(t){var n=r.current,o=e.options.scrollBehavior;xt&&o&&"fullPath"in t&&ft(e,t,n,!1)}(t)};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Yt.prototype.beforeEach=function(t){return Xt(this.beforeHooks,t)},Yt.prototype.beforeResolve=function(t){return Xt(this.resolveHooks,t)},Yt.prototype.afterEach=function(t){return Xt(this.afterHooks,t)},Yt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Yt.prototype.onError=function(t){this.history.onError(t)},Yt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.push(t,e,r)}));this.history.push(t,e,r)},Yt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.replace(t,e,r)}));this.history.replace(t,e,r)},Yt.prototype.go=function(t){this.history.go(t)},Yt.prototype.back=function(){this.go(-1)},Yt.prototype.forward=function(){this.go(1)},Yt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Yt.prototype.resolve=function(t,e,r){var n=Y(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath,s=function(t,e,r){var n="hash"===r?"#"+e:e;return t?N(t+"/"+n):n}(this.history.base,i,this.mode);return{location:n,route:o,href:s,normalizedTo:n,resolved:o}},Yt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Yt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==x&&this.history.transitionTo(this.history.getCurrentLocation())},Yt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==x&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Yt.prototype,Jt);var Kt=Yt;function Xt(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}Yt.install=function t(e){if(!t.installed||J!==e){t.installed=!0,J=e;var r=function(t){return void 0!==t},n=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",_),e.component("RouterLink",X);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Yt.version="3.6.5",Yt.isNavigationFailure=Rt,Yt.NavigationFailureType=It,Yt.START_LOCATION=x,et&&window.Vue&&window.Vue.use(Yt);var Qt=o(79753),te=o(92652),ee=o(20629),re=o(93664),ne=o(7820);o(65509);const oe=function(t){return t.replace(/\/$/,"")},ie=()=>(0,ne.Z)(),se=(t,e)=>re.Z.get(oe(t),e),ae=(t,e)=>re.Z.post(oe(t),e),ue=(t,e)=>re.Z.put(oe(t),e),ce=(t,e)=>re.Z.delete(oe(t),{params:e});var pe=o(42515),de=o(38605),le=o(5656),he=o(25108);const fe=function(t,e){return 1===e?t.sort(((t,e)=>t.usercount-t.disabledt.name.localeCompare(e.name)))},me={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},ge={appendUsers(t,e){const r=t.users.map((t=>{let{id:e}=t;return e})),n=Object.values(e).filter((t=>{let{id:e}=t;return!r.includes(e)})),o=t.users.concat(n);t.usersOffset+=t.usersLimit,t.users=o},updateDisabledUsers(t,e){t.disabledUsersOffset+=t.disabledUsersLimit},setPasswordPolicyMinLength(t,e){t.minPasswordLength=""!==e?e:0},initGroups(t,e){let{groups:r,orderBy:n,userCount:o}=e;t.groups=r.map((t=>Object.assign({},me,t))),t.orderBy=n,t.userCount=o,t.groups=fe(t.groups,t.orderBy)},addGroup(t,e){let{gid:r,displayName:n}=e;try{if(void 0!==t.groups.find((t=>t.id===r)))return;const e=Object.assign({},me,{id:r,name:n});t.groups.unshift(e),t.groups=fe(t.groups,t.orderBy)}catch(t){he.error("Can't create group",t)}},renameGroup(t,e){let{gid:r,displayName:n}=e;const o=t.groups.findIndex((t=>t.id===r));if(o>=0){const e=t.groups[o];e.name=n,t.groups.splice(o,1,e),t.groups=fe(t.groups,t.orderBy)}},removeGroup(t,e){const r=t.groups.findIndex((t=>t.id===e));r>=0&&t.groups.splice(r,1)},addUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount++,i.groups.push(n),t.groups=fe(t.groups,t.orderBy)},removeUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount--;const s=i.groups;s.splice(s.indexOf(n),1),t.groups=fe(t.groups,t.orderBy)},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;t.users.find((t=>t.id===r)).subadmin.push(n)},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;const o=t.users.find((t=>t.id===r)).subadmin;o.splice(o.indexOf(n),1)},deleteUser(t,e){const r=t.users.findIndex((t=>t.id===e));this.commit("updateUserCounts",{user:t.users[r],actionType:"remove"}),t.users.splice(r,1)},addUserData(t,e){const r=e.data.ocs.data;t.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(t,e){let{userid:r,enabled:n}=e;const o=t.users.find((t=>t.id===r));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts(t,e){let{user:r,actionType:n}=e;if(0===t.userCount)return;const o=t.groups.find((t=>"disabled"===t.id));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,t.userCount+=r.enabled?1:-1,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled+=r.enabled?-1:1}));break;case"create":t.userCount++,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).usercount++}));break;case"remove":r.enabled?(t.userCount--,r.groups.forEach((e=>{const r=t.groups.find((t=>t.id===e));r?r.usercount--:he.warn("User group "+e+" does not exist during user removal")}))):(o.usercount--,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled--})));break;default:de.Z.error(`Unknown action type in updateUserCounts: '${n}'`)}},setUserData(t,e){let{userid:r,key:n,value:o}=e;if("quota"===n){const e=(0,le.jA)(o,!0);t.users.find((t=>t.id===r))[n][n]=null!==e?e:o}else t.users.find((t=>t.id===r))[n]=o},resetUsers(t){t.users=[],t.usersOffset=0,t.disabledUsersOffset=0},setShowConfig(t,e){let{key:r,value:n}=e;t.showConfig[r]=n}},ye=re.Z.CancelToken;let ve=null;const be={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:!1,showUserBackend:!1,showLastLogin:!1,showNewUserForm:!1,showLanguages:!1}},mutations:ge,getters:{getUsers:t=>t.users,getGroups:t=>t.groups,getSubadminGroups:t=>t.groups.filter((t=>"admin"!==t.id&&"disabled"!==t.id)),getPasswordPolicyMinLength:t=>t.minPasswordLength,getUsersOffset:t=>t.usersOffset,getUsersLimit:t=>t.usersLimit,getDisabledUsersOffset:t=>t.disabledUsersOffset,getDisabledUsersLimit:t=>t.disabledUsersLimit,getUserCount:t=>t.userCount,getShowConfig:t=>t.showConfig},actions:{searchUsers(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",se((0,Qt.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)}))},getUser:(t,e)=>se((0,Qt.generateOcsUrl)(`cloud/users/${e}`)).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)})),getUsers(t,e){let{offset:r,limit:n,search:o,group:i}=e;return ve&&ve.cancel("Operation canceled by another search request."),ve=ye.source(),o="string"==typeof o?o:"",o=o.replace(/in:[^\s]+/g,"").trim(),i="string"==typeof i?i:"",""!==i?se((0,Qt.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:ve.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)})):se((0,Qt.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:ve.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)}))},async getDisabledUsers(t,e){let{offset:r,limit:n}=e;const o=(0,Qt.generateOcsUrl)("cloud/users/disabled?offset={offset}&limit={limit}",{offset:r,limit:n});try{const e=await se(o),r=Object.keys(e.data.ocs.data.users).length;return r>0&&(t.commit("appendUsers",e.data.ocs.data.users),t.commit("updateDisabledUsers",e.data.ocs.data.users)),r}catch(e){t.commit("API_FAILURE",e)}},getGroups(t,e){let{offset:r,limit:n,search:o}=e;o="string"==typeof o?o:"";const i=-1===n?"":`&limit=${n}`;return se((0,Qt.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((e=>Object.keys(e.data.ocs.data.groups).length>0&&(e.data.ocs.data.groups.forEach((function(e){t.commit("addGroup",{gid:e,displayName:e})})),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromList(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",se((0,Qt.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((e=>Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromGroup(t,e){let{groupid:r,offset:n,limit:o}=e;return se((0,Qt.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((e=>t.commit("getUsersFromList",e.data.ocs.data.users))).catch((e=>t.commit("API_FAILURE",e)))},getPasswordPolicyMinLength:t=>!(!(0,pe.F)().password_policy||!(0,pe.F)().password_policy.minLength)&&(t.commit("setPasswordPolicyMinLength",(0,pe.F)().password_policy.minLength),(0,pe.F)().password_policy.minLength),addGroup:(t,e)=>ie().then((r=>ae((0,Qt.generateOcsUrl)("cloud/groups"),{groupid:e}).then((r=>(t.commit("addGroup",{gid:e,displayName:e}),{gid:e,displayName:e}))).catch((t=>{throw t})))).catch((r=>{throw t.commit("API_FAILURE",{gid:e,error:r}),r})),renameGroup(t,e){let{groupid:r,displayName:n}=e;return ie().then((e=>ue((0,Qt.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((e=>(t.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{groupid:r,error:e}),e}))},removeGroup:(t,e)=>ie().then((r=>ce((0,Qt.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(e)})).then((r=>t.commit("removeGroup",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{gid:e,error:r}))),addUserGroup(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("addUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserGroup(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ce((0,Qt.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{userid:r,error:e}),e}))},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("addUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ce((0,Qt.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},wipeUserDevices:(t,e)=>ie().then((t=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:e})).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),deleteUser:(t,e)=>ie().then((r=>ce((0,Qt.generateOcsUrl)("cloud/users/{userid}",{userid:e})).then((r=>t.commit("deleteUser",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),addUser(t,e){let{commit:r,dispatch:n}=t,{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:p,language:d,manager:l}=e;return ie().then((t=>ae((0,Qt.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:p,language:d,manager:l}).then((t=>n("addUserData",o||t.data.ocs.data.id))).catch((t=>{throw t})))).catch((t=>{throw r("API_FAILURE",{userid:o,error:t}),t}))},addUserData:(t,e)=>ie().then((r=>se((0,Qt.generateOcsUrl)("cloud/users/{userid}",{userid:e})).then((e=>t.commit("addUserData",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),enableDisableUser(t,e){let{userid:r,enabled:n=!0}=e;const o=n?"enable":"disable";return ie().then((e=>ue((0,Qt.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:o})).then((e=>t.commit("enableDisableUser",{userid:r,enabled:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},setUserData(t,e){let{userid:r,key:n,value:o}=e;const i=["email","displayname","manager"];return-1!==["email","language","quota","displayname","password","manager"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?ie().then((e=>ue((0,Qt.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((e=>t.commit("setUserData",{userid:r,key:n,value:o}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e}))):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(t,e)=>ie().then((t=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:e})).then((t=>!0)).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r})))}};var we=o(64024),Ae=o(25108);const Ee={APPS_API_FAILURE(e,r){(0,we.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+r.error.response.data.data.message,{isHTML:!0}),Ae.error(e,r)},initCategories(t,e){let{categories:r,updateCount:n}=e;t.categories=r,t.updateCount=n},updateCategories(t,e){t.gettingCategoriesPromise=e},setUpdateCount(t,e){t.updateCount=e},addCategory(t,e){t.categories.push(e)},appendCategories(t,e){t.categories=e},setAllApps(t,e){t.apps=e},setError(t,e){let{appId:r,error:n}=e;Array.isArray(r)||(r=[r]),r.forEach((e=>{t.apps.find((t=>t.id===e)).error=n}))},clearError(t,e){let{appId:r,error:n}=e;t.apps.find((t=>t.id===r)).error=null},enableApp(t,e){let{appId:r,groups:n}=e;const o=t.apps.find((t=>t.id===r));o.active=!0,o.groups=n},setInstallState(t,e){let{appId:r,canInstall:n}=e;const o=t.apps.find((t=>t.id===r));o&&(o.canInstall=!0===n)},disableApp(t,e){const r=t.apps.find((t=>t.id===e));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp(t,e){t.apps.find((t=>t.id===e)).active=!1,t.apps.find((t=>t.id===e)).groups=[],t.apps.find((t=>t.id===e)).needsDownload=!0,t.apps.find((t=>t.id===e)).installed=!1,t.apps.find((t=>t.id===e)).canUnInstall=!1,t.apps.find((t=>t.id===e)).canInstall=!0},updateApp(t,e){const r=t.apps.find((t=>t.id===e)),n=r.update;r.update=null,r.version=n,t.updateCount--},resetApps(t){t.apps=[]},reset(t){t.apps=[],t.categories=[],t.updateCount=0},startLoading(t,e){Array.isArray(e)?e.forEach((e=>{i.ZP.set(t.loading,e,!0)})):i.ZP.set(t.loading,e,!0)},stopLoading(t,e){Array.isArray(e)?e.forEach((e=>{i.ZP.set(t.loading,e,!1)})):i.ZP.set(t.loading,e,!1)}},xe={enableApp(e,r){let n,{appId:o,groups:i}=r;return n=Array.isArray(o)?o:[o],ie().then((r=>(e.commit("startLoading",n),e.commit("startLoading","install"),ae((0,Qt.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((r=>(e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((t=>{e.commit("enableApp",{appId:t,groups:i})})),se((0,Qt.generateUrl)("apps/files")).then((()=>{r.data.update_required&&((0,we.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))))).catch((t=>{e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:o,error:t})))},forceEnableApp(t,e){let r,{appId:n,groups:o}=e;return r=Array.isArray(n)?n:[n],ie().then((()=>(t.commit("startLoading",r),t.commit("startLoading","install"),ae((0,Qt.generateUrl)("settings/apps/force"),{appId:n}).then((e=>{t.commit("setInstallState",{appId:n,canInstall:!0})})).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("setError",{appId:r,error:e.response.data.data.message}),t.commit("APPS_API_FAILURE",{appId:n,error:e})})).finally((()=>{t.commit("stopLoading",r),t.commit("stopLoading","install")}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},disableApp(t,e){let r,{appId:n}=e;return r=Array.isArray(n)?n:[n],ie().then((e=>(t.commit("startLoading",r),ae((0,Qt.generateUrl)("settings/apps/disable"),{appIds:r}).then((e=>(t.commit("stopLoading",r),r.forEach((e=>{t.commit("disableApp",e)})),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:n,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},uninstallApp(t,e){let{appId:r}=e;return ie().then((e=>(t.commit("startLoading",r),se((0,Qt.generateUrl)(`settings/apps/uninstall/${r}`)).then((e=>(t.commit("stopLoading",r),t.commit("uninstallApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},updateApp(t,e){let{appId:r}=e;return ie().then((e=>(t.commit("startLoading",r),t.commit("startLoading","install"),se((0,Qt.generateUrl)(`settings/apps/update/${r}`)).then((e=>(t.commit("stopLoading","install"),t.commit("stopLoading",r),t.commit("updateApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},getAllApps:t=>(t.commit("startLoading","list"),se((0,Qt.generateUrl)("settings/apps/list")).then((e=>(t.commit("setAllApps",e.data.apps),t.commit("stopLoading","list"),!0))).catch((e=>t.commit("API_FAILURE",e)))),async getCategories(t){let{shouldRefetchCategories:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e||!t.state.gettingCategoriesPromise){t.commit("startLoading","categories");try{const e=se((0,Qt.generateUrl)("settings/apps/categories"));t.commit("updateCategories",e);const r=await e;return r.data.length>0?(t.commit("appendCategories",r.data),t.commit("stopLoading","categories"),!0):(t.commit("stopLoading","categories"),!1)}catch(e){t.commit("API_FAILURE",e)}}return t.state.gettingCategoriesPromise}},Pe={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1,gettingCategoriesPromise:null},mutations:Ee,getters:{loading:t=>function(e){return t.loading[e]},getCategories:t=>t.categories,getAllApps:t=>t.apps,getUpdateCount:t=>t.updateCount,getCategoryById:t=>e=>t.categories.find((t=>t.id===e))},actions:xe},Ue={state:{serverData:{}},mutations:{setServerData(t,e){t.serverData=e}},getters:{getServerData:t=>t.serverData},actions:{}},Ie={state:{},mutations:{},getters:{},actions:{setAppConfig(t,e){let{app:r,key:n,value:o}=e;return ie().then((t=>ae((0,Qt.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{app:r,key:n,value:o,error:e})))}}};var Oe=o(25108);i.ZP.use(ee.ZP);const Le={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,we.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,we.x2)(t("settings","An error occurred during the request. Unable to proceed."))}Oe.error(e,r)}},_e=new ee.yh({modules:{users:be,apps:Pe,settings:Ue,oc:Ie},strict:!1,mutations:Le});o(43554);const Ce=()=>Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,27476)),Re=()=>Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,72767));i.ZP.use(Kt);const Ne=document.title,ke=new Kt({mode:"history",base:(0,Qt.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:Ce,props:!0,name:"users",meta:{title:()=>t("settings","Active users")},children:[{path:":selectedGroup",name:"group",meta:{title:e=>"admin"===e.params.selectedGroup?t("settings","Admins"):"disabled"===e.params.selectedGroup?t("settings","Disabled users"):decodeURIComponent(e.params.selectedGroup)},component:Ce}]},{path:"/:index(index.php/)?settings/apps",component:Re,props:!0,name:"apps",meta:{title:()=>t("settings","Your apps")},children:[{path:":category",name:"apps-category",meta:{title:async e=>{if("apps"===e.name)return t("settings","Your apps");if(te.J[e.params.category])return te.J[e.params.category];await _e.dispatch("getCategories");const r=_e.getters.getCategoryById(e.params.category);return r.displayName?r.displayName:void 0}},component:Re,children:[{path:":id",name:"apps-details",component:Re}]}]}]});ke.afterEach((async t=>{const e=await(t.meta.title?.(t));e?(document.title=`${e} - ${Ne}`,function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}(e)):document.title=Ne}));const Se=ke;i.ZP.use(s.ZP,{defaultHtml:!1}),(0,a.Z)(_e,Se),o.nc=btoa(OC.requestToken),i.ZP.prototype.t=t,i.ZP.prototype.n=n,i.ZP.prototype.OC=OC,i.ZP.prototype.OCA=OCA,i.ZP.prototype.oc_userconfig=oc_userconfig,new i.ZP({router:Se,store:_e,render:t=>t(c)}).$mount("#content")},83678:(t,e)=>{function r(t,e){var n={name:t.name,path:t.path,hash:t.hash,query:t.query,params:t.params,fullPath:t.fullPath,meta:t.meta};return e&&(n.from=r(e)),Object.freeze(n)}e.Z=function(t,e,n){var o=(n||{}).moduleName||"route";t.registerModule(o,{namespaced:!0,state:r(e.currentRoute),mutations:{ROUTE_CHANGED:function(e,n){t.state[o]=r(n.to,n.from)}}});var i,s=!1,a=t.watch((function(t){return t[o]}),(function(t){var r=t.fullPath;r!==i&&(null!=i&&(s=!0,e.push(t)),i=r)}),{sync:!0}),u=e.afterEach((function(e,r){s?s=!1:(i=e.fullPath,t.commit(o+"/ROUTE_CHANGED",{to:e,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),t.unregisterModule(o)}}},5656:(t,e,r)=>{"use strict";r.d(e,{RL:()=>k,Tv:()=>E,_o:()=>_,h7:()=>w,jA:()=>f,pC:()=>N,rp:()=>R,sS:()=>h,tB:()=>A});var n,o=r(77958),i=r(17499),s=r(31352),a=r(62520),u=r(65358),c=r(79753),p=r(14596);null===(n=(0,o.ts)())?(0,i.IY)().setApp("files").build():(0,i.IY)().setApp("files").setUid(n.uid).build();const d=["B","KB","MB","GB","TB","PB"],l=["B","KiB","MiB","GiB","TiB","PiB"];function h(t,e=!1,r=!1,n=!1){r=r&&!n,"string"==typeof t&&(t=Number(t));let o=t>0?Math.floor(Math.log(t)/Math.log(n?1e3:1024)):0;o=Math.min((r?l.length:d.length)-1,o);const i=r?l[o]:d[o];let a=(t/Math.pow(n?1e3:1024,o)).toFixed(1);return!0===e&&0===o?("0.0"!==a?"< 1 ":"0 ")+(r?l[1]:d[1]):(a=o<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,s.aj)()),a+" "+i)}function f(t,e=!1){try{t=`${t}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch{return null}const r=t.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const n=`${r[1]}`,o="i"===r[4]||e?1024:1e3;return Math.round(Number.parseFloat(n)*o**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}var m=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(m||{});const g=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","nc:share-attributes","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:share-types","oc:size","ocs:share-permissions"],y={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},v=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...g]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},b=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...y}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},w=function(){return`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t`},A=function(t){return`\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${(0,o.ts)()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${t}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`};var E=(t=>(t.Folder="folder",t.File="file",t))(E||{});const x=function(t,e){return null!==t.match(e)},P=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=m.NONE&&t.permissions<=m.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&x(t.source,e)){const r=t.source.match(e)[0];if(!t.source.includes((0,a.join)(r,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(U).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var U=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(U||{});class I{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){P(t,e||this._knownDavService),this._data=t;const r={set:(t,e,r)=>(this.updateMtime(),Reflect.set(t,e,r)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},r),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,u.Ec)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+r.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:m.NONE:m.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return x(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return t.slice(e+r.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){P({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class O extends I{get type(){return E.File}}class L extends I{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return E.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const _=`/files/${(0,o.ts)()?.uid}`,C=(0,c.generateRemoteUrl)("dav"),R=function(t=C,e={}){const r=(0,p.eI)(t,{headers:e});function n(t){r.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,o._S)(n),n((0,o.IH)()),(0,p.lD)().patch("fetch",((t,e)=>{const r=e.headers;return r?.method&&(e.method=r.method,delete r.method),fetch(t,e)})),r},N=async(t,e="/",r=_)=>(await t.getDirectoryContents(`${r}${e}`,{details:!0,data:`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>k(t,r))),k=function(t,e=_,r=C){const n=t.props,i=function(t=""){let e=m.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=m.CREATE),t.includes("G")&&(e|=m.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=m.UPDATE),t.includes("D")&&(e|=m.DELETE),t.includes("R")&&(e|=m.SHARE)),e}(n?.permissions),s=n?.["owner-id"]||(0,o.ts)()?.uid,a={id:n?.fileid||0,source:`${r}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime,size:n?.size||Number.parseInt(n.getcontentlength||"0"),permissions:i,owner:s,root:e,attributes:{...t,...n,hasPreview:n?.["has-preview"]}};return delete a.attributes?.props,"file"===t.type?new O(a):new L(a)};var S={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",n=new RegExp("^"+r+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,r){if(e){const n=Object.keys(e),o=n.length;for(let i=0;i"u")},t.getAllMatches=function(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;t!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t}};T.buildOptions=function(t){return Object.assign({},j,t)},T.defaultOptions=j,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,S.nameRegexp),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var F={};function $(t,e,r){let n;const o={};for(let i=0;i0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function D(t){const e=Object.keys(t);for(let t=0;t`,i=!1;continue}if(u===e.commentPropName){o+=n+`\x3c!--${a[u][0][e.textNodeName]}--\x3e`,i=!0;continue}if("?"===u[0]){const t=z(a[":@"],e),r="?xml"===u?"":n;let s=a[u][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=r+`<${u}${s}${t}?>`,i=!0;continue}let p=n;""!==p&&(p+=e.indentBy);const d=n+`<${u}${z(a[":@"],e)}`,l=V(a[u],e,c,p);-1!==e.unpairedTags.indexOf(u)?e.suppressUnpairedNode?o+=d+">":o+=d+"/>":l&&0!==l.length||!e.suppressEmptyNode?l&&l.endsWith(">")?o+=d+`>${l}${n}`:(o+=d+">",l&&""!==n&&(l.includes("/>")||l.includes("`):o+=d+"/>",i=!0}return o}function Z(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r0&&(r="\n"),V(t,e,"",r)},J={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function K(t){this.options=Object.assign({},J,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=tt),this.processTextOrObjNode=X,this.options.format?(this.indentate=Q,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function X(t,e,r){const n=this.j2x(t,r+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,r):this.buildObjectNode(n.val,e,n.attrStr,r)}function Q(t){return this.options.indentBy.repeat(t)}function tt(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}K.prototype.build=function(t){return this.options.preserveOrder?Y(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},K.prototype.j2x=function(t,e){let r="",n="";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(typeof t[o]>"u")this.isAttribute(o)&&(n+="");else if(null===t[o])this.isAttribute(o)?n+="":"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)n+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const i=this.isAttribute(o);if(i)r+=this.buildAttrPairStr(i,""+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const r=t[o].length;let i="";for(let s=0;s"u"||(null===r?"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar:"object"==typeof r?this.options.oneListGroup?i+=this.j2x(r,e+1).val:i+=this.processTextOrObjNode(r,o,e):i+=this.buildTextValNode(r,o,"",e))}this.options.oneListGroup&&(i=this.buildObjectNode(i,o,"",e)),n+=i}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),n=e.length;for(let i=0;i"+t+o}},K.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e{if(!r){var i=1/0;for(p=0;p=o)&&Object.keys(a.O).every((t=>a.O[t](r[u])))?r.splice(u--,1):(s=!1,o0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[r,n,o]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var r in e)a.o(e,r)&&!a.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce(((e,r)=>(a.f[r](t,e),e)),[])),a.u=t=>(({7418:"settings-apps-view",8351:"settings-users"}[t]||t)+"-"+t+".js?v="+{4720:"67ff1816113751e83e78",6512:"930a9f0a458cd206d9d1",7418:"c563724cb8f8ded85c20",8351:"729e37d4bf6f456e841b"}[t]),a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},o="nextcloud:",a.l=(t,e,n,i)=>{if(r[t])r[t].push(e);else{var s,u;if(void 0!==n)for(var c=document.getElementsByTagName("script"),p=0;p{s.onerror=s.onload=null,clearTimeout(h);var o=r[t];if(delete r[t],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((t=>t(n))),e)return e(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),u&&document.head.appendChild(s)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=8562,(()=>{var t;a.g.importScripts&&(t=a.g.location+"");var e=a.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!t;)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b=document.baseURI||self.location.href;var t={8562:0};a.f.j=(e,r)=>{var n=a.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=t[e]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(e),s=new Error;a.l(i,(r=>{if(a.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;s.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",s.name="ChunkLoadError",s.type=o,s.request=i,n[1](s)}}),"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,i=r[0],s=r[1],u=r[2],c=0;if(i.some((e=>0!==t[e]))){for(n in s)a.o(s,n)&&(a.m[n]=s[n]);if(u)var p=u(a)}for(e&&e(r);ca(40491)));u=a.O(u)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=6b7d58973197ed90ce7f \ No newline at end of file +(()=>{var e,r,o,i={92652:(t,e,r)=>{"use strict";r.d(e,{J:()=>o});var n=r(31352);const o=Object.freeze({installed:(0,n.Iu)("settings","Your apps"),enabled:(0,n.Iu)("settings","Active apps"),disabled:(0,n.Iu)("settings","Disabled apps"),updates:(0,n.Iu)("settings","Updates"),"app-bundles":(0,n.Iu)("settings","App bundles"),featured:(0,n.Iu)("settings","Featured apps"),supported:(0,n.Iu)("settings","Supported apps")})},38605:(t,e,r)=>{"use strict";r.d(e,{Z:()=>n});const n=(0,r(17499).IY)().setApp("settings").detectUser().build()},40491:(e,r,o)=>{"use strict";var i=o(20144),s=o(2324),a=o(83678);const u={name:"App",beforeMount(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(u,(function(){return(0,this._self._c)("router-view")}),[],!1,null,null,null).exports;var p=o(25108);function d(t,e){for(var r in e)t[r]=e[r];return t}var l=/[!'()*]/g,h=function(t){return"%"+t.charCodeAt(0).toString(16)},f=/%2C/g,m=function(t){return encodeURIComponent(t).replace(l,h).replace(f,",")};function g(t){try{return decodeURIComponent(t)}catch(t){}return t}var y=function(t){return null==t||"object"==typeof t?t:String(t)};function v(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var r=t.replace(/\+/g," ").split("="),n=g(r.shift()),o=r.length>0?g(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]})),e):e}function b(t){var e=t?Object.keys(t).map((function(e){var r=t[e];if(void 0===r)return"";if(null===r)return m(e);if(Array.isArray(r)){var n=[];return r.forEach((function(t){void 0!==t&&(null===t?n.push(m(e)):n.push(m(e)+"="+m(t)))})),n.join("&")}return m(e)+"="+m(r)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var w=/\/?$/;function A(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=E(i)}catch(t){}var s={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:U(e,o),matched:t?P(t):[]};return r&&(s.redirectedFrom=U(r,o)),Object.freeze(s)}function E(t){if(Array.isArray(t))return t.map(E);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=E(t[r]);return e}return t}var x=A(null,{path:"/"});function P(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function U(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||b)(n)+o}function I(t,e,r){return e===x?t===e:!!e&&(t.path&&e.path?t.path.replace(w,"")===e.path.replace(w,"")&&(r||t.hash===e.hash&&O(t.query,e.query)):!(!t.name||!e.name)&&t.name===e.name&&(r||t.hash===e.hash&&O(t.query,e.query)&&O(t.params,e.params)))}function O(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length===n.length&&r.every((function(r,o){var i=t[r];if(n[o]!==r)return!1;var s=e[r];return null==i||null==s?i===s:"object"==typeof i&&"object"==typeof s?O(i,s):String(i)===String(s)}))}function L(t){for(var e=0;e=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(o.path||""),c=e&&e.path||"/",p=u.path?R(u.path,c,r||o.append):c,l=function(t,e,r){void 0===e&&(e={});var n,o=r||v;try{n=o(t||"")}catch(t){n={}}for(var i in e){var s=e[i];n[i]=Array.isArray(s)?s.map(y):y(s)}return n}(u.query,o.query,n&&n.options.parseQuery),h=o.hash||u.hash;return h&&"#"!==h.charAt(0)&&(h="#"+h),{_normalized:!0,path:p,query:l,hash:h}}var J,K=function(){},X={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,r=this.$router,n=this.$route,o=r.resolve(this.to,n,this.append),i=o.location,s=o.route,a=o.href,u={},c=r.options.linkActiveClass,p=r.options.linkExactActiveClass,l=null==c?"router-link-active":c,h=null==p?"router-link-exact-active":p,f=null==this.activeClass?l:this.activeClass,m=null==this.exactActiveClass?h:this.exactActiveClass,g=s.redirectedFrom?A(null,Y(s.redirectedFrom),null,r):s;u[m]=I(n,g,this.exactPath),u[f]=this.exact||this.exactPath?u[m]:function(t,e){return 0===t.path.replace(w,"/").indexOf(e.path.replace(w,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(n,g);var y=u[m]?this.ariaCurrentValue:null,v=function(t){Q(t)&&(e.replace?r.replace(i,K):r.push(i,K))},b={click:Q};Array.isArray(this.event)?this.event.forEach((function(t){b[t]=v})):b[this.event]=v;var E={class:u},x=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:a,route:s,navigate:v,isActive:u[f],isExactActive:u[m]});if(x){if(1===x.length)return x[0];if(x.length>1||!x.length)return 0===x.length?t():t("span",{},x)}if("a"===this.tag)E.on=b,E.attrs={href:a,"aria-current":y};else{var P=tt(this.$slots.default);if(P){P.isStatic=!1;var U=P.data=d({},P.data);for(var O in U.on=U.on||{},U.on){var L=U.on[O];O in b&&(U.on[O]=Array.isArray(L)?L:[L])}for(var _ in b)_ in U.on?U.on[_].push(b[_]):U.on[_]=v;var C=P.data.attrs=d({},P.data.attrs);C.href=a,C["aria-current"]=y}else E.on=b}return t(this.tag,E,this.$slots.default)}};function Q(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function tt(t){if(t)for(var e,r=0;r-1&&(u.params[l]=r.params[l]);return u.path=W(p.path,u.params),a(p,u,s)}if(u.path){u.params={};for(var h=0;h-1}function Rt(t,e){return Ct(t)&&t._isRouter&&(null==e||t.type===e)}function Nt(t,e,r){var n=function(o){o>=t.length?r():t[o]?e(t[o],(function(){n(o+1)})):n(o+1)};n(0)}function kt(t,e){return St(t.map((function(t){return Object.keys(t.components).map((function(r){return e(t.components[r],t.instances[r],t,r)}))})))}function St(t){return Array.prototype.concat.apply([],t)}var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function jt(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var Ft=function(t,e){this.router=t,this.base=function(t){if(!t)if(et){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=x,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function $t(t,e,r,n){var o=kt(t,(function(t,n,o,i){var s=function(t,e){return"function"!=typeof t&&(t=J.extend(t)),t.options[e]}(t,e);if(s)return Array.isArray(s)?s.map((function(t){return r(t,n,o,i)})):r(s,n,o,i)}));return St(n?o.reverse():o)}function Dt(t,e){if(e)return function(){return t.apply(e,arguments)}}Ft.prototype.listen=function(t){this.cb=t},Ft.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Ft.prototype.onError=function(t){this.errorCbs.push(t)},Ft.prototype.transitionTo=function(t,e,r){var n,o=this;try{n=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(n,(function(){o.updateRoute(n),e&&e(n),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(n,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(n)})))}),(function(t){r&&r(t),t&&!o.ready&&(Rt(t,It.redirected)&&i===x||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},Ft.prototype.confirmTransition=function(t,e,r){var n=this,o=this.current;this.pending=t;var i,s,a=function(t){!Rt(t)&&Ct(t)&&(n.errorCbs.length?n.errorCbs.forEach((function(e){e(t)})):p.error(t)),r&&r(t)},u=t.matched.length-1,c=o.matched.length-1;if(I(t,o)&&u===c&&t.matched[u]===o.matched[c])return this.ensureURL(),t.hash&&ft(this.router,o,t,!1),a(((s=Lt(i=o,t,It.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",s));var d,l=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r0)){var e=this.router,r=e.options.scrollBehavior,n=xt&&r;n&&this.listeners.push(ht());var o=function(){var r=t.current,o=qt(t.base);t.current===x&&o===t._startLocation||t.transitionTo(o,(function(t){n&&ft(e,t,r,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Pt(N(n.base+t.fullPath)),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Ut(N(n.base+t.fullPath)),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.ensureURL=function(t){if(qt(this.base)!==this.current.fullPath){var e=N(this.base+this.current.fullPath);t?Pt(e):Ut(e)}},e.prototype.getCurrentLocation=function(){return qt(this.base)},e}(Ft);function qt(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return!t||r!==n&&0!==r.indexOf(N(n+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Mt=function(t){function e(e,r,n){t.call(this,e,r),n&&function(t){var e=qt(t);if(!/^\/#/.test(e))return window.location.replace(N(t+"/#"+e)),!0}(this.base)||Gt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,r=xt&&e;r&&this.listeners.push(ht());var n=function(){var e=t.current;Gt()&&t.transitionTo(Vt(),(function(n){r&&ft(t.router,n,e,!0),xt||Ht(n.fullPath)}))},o=xt?"popstate":"hashchange";window.addEventListener(o,n),this.listeners.push((function(){window.removeEventListener(o,n)}))}},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){zt(t.fullPath),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Ht(t.fullPath),ft(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Vt()!==e&&(t?zt(e):Ht(e))},e.prototype.getCurrentLocation=function(){return Vt()},e}(Ft);function Gt(){var t=Vt();return"/"===t.charAt(0)||(Ht("/"+t),!1)}function Vt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Zt(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function zt(t){xt?Pt(Zt(t)):window.location.hash=t}function Ht(t){xt?Ut(Zt(t)):window.location.replace(Zt(t))}var Wt=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)}),r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,(function(){var t=e.current;e.index=r,e.updateRoute(n),e.router.afterHooks.forEach((function(e){e&&e(n,t)}))}),(function(t){Rt(t,It.duplicated)&&(e.index=r)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Ft),Yt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=it(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!xt&&!1!==t.fallback,this.fallback&&(e="hash"),et||(e="abstract"),this.mode=e,e){case"history":this.history=new Bt(this,t.base);break;case"hash":this.history=new Mt(this,t.base,this.fallback);break;case"abstract":this.history=new Wt(this,t.base)}},Jt={currentRoute:{configurable:!0}};Yt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Jt.currentRoute.get=function(){return this.history&&this.history.current},Yt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var r=this.history;if(r instanceof Bt||r instanceof Mt){var n=function(t){r.setupListeners(),function(t){var n=r.current,o=e.options.scrollBehavior;xt&&o&&"fullPath"in t&&ft(e,t,n,!1)}(t)};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Yt.prototype.beforeEach=function(t){return Xt(this.beforeHooks,t)},Yt.prototype.beforeResolve=function(t){return Xt(this.resolveHooks,t)},Yt.prototype.afterEach=function(t){return Xt(this.afterHooks,t)},Yt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Yt.prototype.onError=function(t){this.history.onError(t)},Yt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.push(t,e,r)}));this.history.push(t,e,r)},Yt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.replace(t,e,r)}));this.history.replace(t,e,r)},Yt.prototype.go=function(t){this.history.go(t)},Yt.prototype.back=function(){this.go(-1)},Yt.prototype.forward=function(){this.go(1)},Yt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Yt.prototype.resolve=function(t,e,r){var n=Y(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath,s=function(t,e,r){var n="hash"===r?"#"+e:e;return t?N(t+"/"+n):n}(this.history.base,i,this.mode);return{location:n,route:o,href:s,normalizedTo:n,resolved:o}},Yt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Yt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==x&&this.history.transitionTo(this.history.getCurrentLocation())},Yt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==x&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Yt.prototype,Jt);var Kt=Yt;function Xt(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}Yt.install=function t(e){if(!t.installed||J!==e){t.installed=!0,J=e;var r=function(t){return void 0!==t},n=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",_),e.component("RouterLink",X);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Yt.version="3.6.5",Yt.isNavigationFailure=Rt,Yt.NavigationFailureType=It,Yt.START_LOCATION=x,et&&window.Vue&&window.Vue.use(Yt);var Qt=o(79753),te=o(92652),ee=o(20629),re=o(93664),ne=o(7820);o(65509);const oe=function(t){return t.replace(/\/$/,"")},ie=()=>(0,ne.Z)(),se=(t,e)=>re.Z.get(oe(t),e),ae=(t,e)=>re.Z.post(oe(t),e),ue=(t,e)=>re.Z.put(oe(t),e),ce=(t,e)=>re.Z.delete(oe(t),{params:e});var pe=o(42515),de=o(38605),le=o(5656),he=o(25108);const fe=function(t,e){return 1===e?t.sort(((t,e)=>t.usercount-t.disabledt.name.localeCompare(e.name)))},me={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},ge={appendUsers(t,e){const r=t.users.map((t=>{let{id:e}=t;return e})),n=Object.values(e).filter((t=>{let{id:e}=t;return!r.includes(e)})),o=t.users.concat(n);t.usersOffset+=t.usersLimit,t.users=o},updateDisabledUsers(t,e){t.disabledUsersOffset+=t.disabledUsersLimit},setPasswordPolicyMinLength(t,e){t.minPasswordLength=""!==e?e:0},initGroups(t,e){let{groups:r,orderBy:n,userCount:o}=e;t.groups=r.map((t=>Object.assign({},me,t))),t.orderBy=n,t.userCount=o,t.groups=fe(t.groups,t.orderBy)},addGroup(t,e){let{gid:r,displayName:n}=e;try{if(void 0!==t.groups.find((t=>t.id===r)))return;const e=Object.assign({},me,{id:r,name:n});t.groups.unshift(e),t.groups=fe(t.groups,t.orderBy)}catch(t){he.error("Can't create group",t)}},renameGroup(t,e){let{gid:r,displayName:n}=e;const o=t.groups.findIndex((t=>t.id===r));if(o>=0){const e=t.groups[o];e.name=n,t.groups.splice(o,1,e),t.groups=fe(t.groups,t.orderBy)}},removeGroup(t,e){const r=t.groups.findIndex((t=>t.id===e));r>=0&&t.groups.splice(r,1)},addUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount++,i.groups.push(n),t.groups=fe(t.groups,t.orderBy)},removeUserGroup(t,e){let{userid:r,gid:n}=e;const o=t.groups.find((t=>t.id===n)),i=t.users.find((t=>t.id===r));o&&i.enabled&&t.userCount>0&&o.usercount--;const s=i.groups;s.splice(s.indexOf(n),1),t.groups=fe(t.groups,t.orderBy)},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;t.users.find((t=>t.id===r)).subadmin.push(n)},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;const o=t.users.find((t=>t.id===r)).subadmin;o.splice(o.indexOf(n),1)},deleteUser(t,e){const r=t.users.findIndex((t=>t.id===e));this.commit("updateUserCounts",{user:t.users[r],actionType:"remove"}),t.users.splice(r,1)},addUserData(t,e){const r=e.data.ocs.data;t.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(t,e){let{userid:r,enabled:n}=e;const o=t.users.find((t=>t.id===r));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts(t,e){let{user:r,actionType:n}=e;if(0===t.userCount)return;const o=t.groups.find((t=>"disabled"===t.id));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,t.userCount+=r.enabled?1:-1,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled+=r.enabled?-1:1}));break;case"create":t.userCount++,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).usercount++}));break;case"remove":r.enabled?(t.userCount--,r.groups.forEach((e=>{const r=t.groups.find((t=>t.id===e));r?r.usercount--:he.warn("User group "+e+" does not exist during user removal")}))):(o.usercount--,r.groups.forEach((e=>{t.groups.find((t=>t.id===e)).disabled--})));break;default:de.Z.error(`Unknown action type in updateUserCounts: '${n}'`)}},setUserData(t,e){let{userid:r,key:n,value:o}=e;if("quota"===n){const e=(0,le.jA)(o,!0);t.users.find((t=>t.id===r))[n][n]=null!==e?e:o}else t.users.find((t=>t.id===r))[n]=o},resetUsers(t){t.users=[],t.usersOffset=0,t.disabledUsersOffset=0},setShowConfig(t,e){let{key:r,value:n}=e;t.showConfig[r]=n}},ye=re.Z.CancelToken;let ve=null;const be={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:0,showConfig:{showStoragePath:!1,showUserBackend:!1,showLastLogin:!1,showNewUserForm:!1,showLanguages:!1}},mutations:ge,getters:{getUsers:t=>t.users,getGroups:t=>t.groups,getSubadminGroups:t=>t.groups.filter((t=>"admin"!==t.id&&"disabled"!==t.id)),getPasswordPolicyMinLength:t=>t.minPasswordLength,getUsersOffset:t=>t.usersOffset,getUsersLimit:t=>t.usersLimit,getDisabledUsersOffset:t=>t.disabledUsersOffset,getDisabledUsersLimit:t=>t.disabledUsersLimit,getUserCount:t=>t.userCount,getShowConfig:t=>t.showConfig},actions:{searchUsers(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",se((0,Qt.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)}))},getUser:(t,e)=>se((0,Qt.generateOcsUrl)(`cloud/users/${e}`)).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)})),getUsers(t,e){let{offset:r,limit:n,search:o,group:i}=e;return ve&&ve.cancel("Operation canceled by another search request."),ve=ye.source(),o="string"==typeof o?o:"",o=o.replace(/in:[^\s]+/g,"").trim(),i="string"==typeof i?i:"",""!==i?se((0,Qt.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:ve.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)})):se((0,Qt.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:ve.token}).then((e=>{const r=Object.keys(e.data.ocs.data.users).length;return r>0&&t.commit("appendUsers",e.data.ocs.data.users),r})).catch((e=>{re.Z.isCancel(e)||t.commit("API_FAILURE",e)}))},async getDisabledUsers(t,e){let{offset:r,limit:n}=e;const o=(0,Qt.generateOcsUrl)("cloud/users/disabled?offset={offset}&limit={limit}",{offset:r,limit:n});try{const e=await se(o),r=Object.keys(e.data.ocs.data.users).length;return r>0&&(t.commit("appendUsers",e.data.ocs.data.users),t.commit("updateDisabledUsers",e.data.ocs.data.users)),r}catch(e){t.commit("API_FAILURE",e)}},getGroups(t,e){let{offset:r,limit:n,search:o}=e;o="string"==typeof o?o:"";const i=-1===n?"":`&limit=${n}`;return se((0,Qt.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((e=>Object.keys(e.data.ocs.data.groups).length>0&&(e.data.ocs.data.groups.forEach((function(e){t.commit("addGroup",{gid:e,displayName:e})})),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromList(t,e){let{offset:r,limit:n,search:o}=e;return o="string"==typeof o?o:"",se((0,Qt.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((e=>Object.keys(e.data.ocs.data.users).length>0&&(t.commit("appendUsers",e.data.ocs.data.users),!0))).catch((e=>t.commit("API_FAILURE",e)))},getUsersFromGroup(t,e){let{groupid:r,offset:n,limit:o}=e;return se((0,Qt.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((e=>t.commit("getUsersFromList",e.data.ocs.data.users))).catch((e=>t.commit("API_FAILURE",e)))},getPasswordPolicyMinLength:t=>!(!(0,pe.F)().password_policy||!(0,pe.F)().password_policy.minLength)&&(t.commit("setPasswordPolicyMinLength",(0,pe.F)().password_policy.minLength),(0,pe.F)().password_policy.minLength),addGroup:(t,e)=>ie().then((r=>ae((0,Qt.generateOcsUrl)("cloud/groups"),{groupid:e}).then((r=>(t.commit("addGroup",{gid:e,displayName:e}),{gid:e,displayName:e}))).catch((t=>{throw t})))).catch((r=>{throw t.commit("API_FAILURE",{gid:e,error:r}),r})),renameGroup(t,e){let{groupid:r,displayName:n}=e;return ie().then((e=>ue((0,Qt.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((e=>(t.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{groupid:r,error:e}),e}))},removeGroup:(t,e)=>ie().then((r=>ce((0,Qt.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(e)})).then((r=>t.commit("removeGroup",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{gid:e,error:r}))),addUserGroup(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("addUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserGroup(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ce((0,Qt.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserGroup",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>{throw t.commit("API_FAILURE",{userid:r,error:e}),e}))},addUserSubAdmin(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("addUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},removeUserSubAdmin(t,e){let{userid:r,gid:n}=e;return ie().then((e=>ce((0,Qt.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((e=>t.commit("removeUserSubAdmin",{userid:r,gid:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},wipeUserDevices:(t,e)=>ie().then((t=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:e})).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),deleteUser:(t,e)=>ie().then((r=>ce((0,Qt.generateOcsUrl)("cloud/users/{userid}",{userid:e})).then((r=>t.commit("deleteUser",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),addUser(t,e){let{commit:r,dispatch:n}=t,{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:p,language:d,manager:l}=e;return ie().then((t=>ae((0,Qt.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:s,email:a,groups:u,subadmin:c,quota:p,language:d,manager:l}).then((t=>n("addUserData",o||t.data.ocs.data.id))).catch((t=>{throw t})))).catch((t=>{throw r("API_FAILURE",{userid:o,error:t}),t}))},addUserData:(t,e)=>ie().then((r=>se((0,Qt.generateOcsUrl)("cloud/users/{userid}",{userid:e})).then((e=>t.commit("addUserData",e))).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r}))),enableDisableUser(t,e){let{userid:r,enabled:n=!0}=e;const o=n?"enable":"disable";return ie().then((e=>ue((0,Qt.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:o})).then((e=>t.commit("enableDisableUser",{userid:r,enabled:n}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e})))},setUserData(t,e){let{userid:r,key:n,value:o}=e;const i=["email","displayname","manager"];return-1!==["email","language","quota","displayname","password","manager"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?ie().then((e=>ue((0,Qt.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((e=>t.commit("setUserData",{userid:r,key:n,value:o}))).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{userid:r,error:e}))):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(t,e)=>ie().then((t=>ae((0,Qt.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:e})).then((t=>!0)).catch((t=>{throw t})))).catch((r=>t.commit("API_FAILURE",{userid:e,error:r})))}};var we=o(64024),Ae=o(25108);const Ee={APPS_API_FAILURE(e,r){(0,we.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+r.error.response.data.data.message,{isHTML:!0}),Ae.error(e,r)},initCategories(t,e){let{categories:r,updateCount:n}=e;t.categories=r,t.updateCount=n},updateCategories(t,e){t.gettingCategoriesPromise=e},setUpdateCount(t,e){t.updateCount=e},addCategory(t,e){t.categories.push(e)},appendCategories(t,e){t.categories=e},setAllApps(t,e){t.apps=e},setError(t,e){let{appId:r,error:n}=e;Array.isArray(r)||(r=[r]),r.forEach((e=>{t.apps.find((t=>t.id===e)).error=n}))},clearError(t,e){let{appId:r,error:n}=e;t.apps.find((t=>t.id===r)).error=null},enableApp(t,e){let{appId:r,groups:n}=e;const o=t.apps.find((t=>t.id===r));o.active=!0,o.groups=n},setInstallState(t,e){let{appId:r,canInstall:n}=e;const o=t.apps.find((t=>t.id===r));o&&(o.canInstall=!0===n)},disableApp(t,e){const r=t.apps.find((t=>t.id===e));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp(t,e){t.apps.find((t=>t.id===e)).active=!1,t.apps.find((t=>t.id===e)).groups=[],t.apps.find((t=>t.id===e)).needsDownload=!0,t.apps.find((t=>t.id===e)).installed=!1,t.apps.find((t=>t.id===e)).canUnInstall=!1,t.apps.find((t=>t.id===e)).canInstall=!0},updateApp(t,e){const r=t.apps.find((t=>t.id===e)),n=r.update;r.update=null,r.version=n,t.updateCount--},resetApps(t){t.apps=[]},reset(t){t.apps=[],t.categories=[],t.updateCount=0},startLoading(t,e){Array.isArray(e)?e.forEach((e=>{i.ZP.set(t.loading,e,!0)})):i.ZP.set(t.loading,e,!0)},stopLoading(t,e){Array.isArray(e)?e.forEach((e=>{i.ZP.set(t.loading,e,!1)})):i.ZP.set(t.loading,e,!1)}},xe={enableApp(e,r){let n,{appId:o,groups:i}=r;return n=Array.isArray(o)?o:[o],ie().then((r=>(e.commit("startLoading",n),e.commit("startLoading","install"),ae((0,Qt.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((r=>(e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((t=>{e.commit("enableApp",{appId:t,groups:i})})),se((0,Qt.generateUrl)("apps/files")).then((()=>{r.data.update_required&&((0,we.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))))).catch((t=>{e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:o,error:t})))},forceEnableApp(t,e){let r,{appId:n,groups:o}=e;return r=Array.isArray(n)?n:[n],ie().then((()=>(t.commit("startLoading",r),t.commit("startLoading","install"),ae((0,Qt.generateUrl)("settings/apps/force"),{appId:n}).then((e=>{t.commit("setInstallState",{appId:n,canInstall:!0})})).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("setError",{appId:r,error:e.response.data.data.message}),t.commit("APPS_API_FAILURE",{appId:n,error:e})})).finally((()=>{t.commit("stopLoading",r),t.commit("stopLoading","install")}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},disableApp(t,e){let r,{appId:n}=e;return r=Array.isArray(n)?n:[n],ie().then((e=>(t.commit("startLoading",r),ae((0,Qt.generateUrl)("settings/apps/disable"),{appIds:r}).then((e=>(t.commit("stopLoading",r),r.forEach((e=>{t.commit("disableApp",e)})),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:n,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:n,error:e})))},uninstallApp(t,e){let{appId:r}=e;return ie().then((e=>(t.commit("startLoading",r),se((0,Qt.generateUrl)(`settings/apps/uninstall/${r}`)).then((e=>(t.commit("stopLoading",r),t.commit("uninstallApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},updateApp(t,e){let{appId:r}=e;return ie().then((e=>(t.commit("startLoading",r),t.commit("startLoading","install"),se((0,Qt.generateUrl)(`settings/apps/update/${r}`)).then((e=>(t.commit("stopLoading","install"),t.commit("stopLoading",r),t.commit("updateApp",r),!0))).catch((e=>{t.commit("stopLoading",r),t.commit("stopLoading","install"),t.commit("APPS_API_FAILURE",{appId:r,error:e})}))))).catch((e=>t.commit("API_FAILURE",{appId:r,error:e})))},getAllApps:t=>(t.commit("startLoading","list"),se((0,Qt.generateUrl)("settings/apps/list")).then((e=>(t.commit("setAllApps",e.data.apps),t.commit("stopLoading","list"),!0))).catch((e=>t.commit("API_FAILURE",e)))),async getCategories(t){let{shouldRefetchCategories:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e||!t.state.gettingCategoriesPromise){t.commit("startLoading","categories");try{const e=se((0,Qt.generateUrl)("settings/apps/categories"));t.commit("updateCategories",e);const r=await e;return r.data.length>0?(t.commit("appendCategories",r.data),t.commit("stopLoading","categories"),!0):(t.commit("stopLoading","categories"),!1)}catch(e){t.commit("API_FAILURE",e)}}return t.state.gettingCategoriesPromise}},Pe={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1,gettingCategoriesPromise:null},mutations:Ee,getters:{loading:t=>function(e){return t.loading[e]},getCategories:t=>t.categories,getAllApps:t=>t.apps,getUpdateCount:t=>t.updateCount,getCategoryById:t=>e=>t.categories.find((t=>t.id===e))},actions:xe},Ue={state:{serverData:{}},mutations:{setServerData(t,e){t.serverData=e}},getters:{getServerData:t=>t.serverData},actions:{}},Ie={state:{},mutations:{},getters:{},actions:{setAppConfig(t,e){let{app:r,key:n,value:o}=e;return ie().then((t=>ae((0,Qt.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((t=>{throw t})))).catch((e=>t.commit("API_FAILURE",{app:r,key:n,value:o,error:e})))}}};var Oe=o(25108);i.ZP.use(ee.ZP);const Le={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,we.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,we.x2)(t("settings","An error occurred during the request. Unable to proceed."))}Oe.error(e,r)}},_e=new ee.yh({modules:{users:be,apps:Pe,settings:Ue,oc:Ie},strict:!1,mutations:Le});o(43554);const Ce=()=>Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,33422)),Re=()=>Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,72767));i.ZP.use(Kt);const Ne=document.title,ke=new Kt({mode:"history",base:(0,Qt.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:Ce,props:!0,name:"users",meta:{title:()=>t("settings","Active users")},children:[{path:":selectedGroup",name:"group",meta:{title:e=>"admin"===e.params.selectedGroup?t("settings","Admins"):"disabled"===e.params.selectedGroup?t("settings","Disabled users"):decodeURIComponent(e.params.selectedGroup)},component:Ce}]},{path:"/:index(index.php/)?settings/apps",component:Re,props:!0,name:"apps",meta:{title:()=>t("settings","Your apps")},children:[{path:":category",name:"apps-category",meta:{title:async e=>{if("apps"===e.name)return t("settings","Your apps");if(te.J[e.params.category])return te.J[e.params.category];await _e.dispatch("getCategories");const r=_e.getters.getCategoryById(e.params.category);return r.displayName?r.displayName:void 0}},component:Re,children:[{path:":id",name:"apps-details",component:Re}]}]}]});ke.afterEach((async t=>{const e=await(t.meta.title?.(t));e?(document.title=`${e} - ${Ne}`,function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}(e)):document.title=Ne}));const Se=ke;i.ZP.use(s.ZP,{defaultHtml:!1}),(0,a.Z)(_e,Se),o.nc=btoa(OC.requestToken),i.ZP.prototype.t=t,i.ZP.prototype.n=n,i.ZP.prototype.OC=OC,i.ZP.prototype.OCA=OCA,i.ZP.prototype.oc_userconfig=oc_userconfig,new i.ZP({router:Se,store:_e,render:t=>t(c)}).$mount("#content")},83678:(t,e)=>{function r(t,e){var n={name:t.name,path:t.path,hash:t.hash,query:t.query,params:t.params,fullPath:t.fullPath,meta:t.meta};return e&&(n.from=r(e)),Object.freeze(n)}e.Z=function(t,e,n){var o=(n||{}).moduleName||"route";t.registerModule(o,{namespaced:!0,state:r(e.currentRoute),mutations:{ROUTE_CHANGED:function(e,n){t.state[o]=r(n.to,n.from)}}});var i,s=!1,a=t.watch((function(t){return t[o]}),(function(t){var r=t.fullPath;r!==i&&(null!=i&&(s=!0,e.push(t)),i=r)}),{sync:!0}),u=e.afterEach((function(e,r){s?s=!1:(i=e.fullPath,t.commit(o+"/ROUTE_CHANGED",{to:e,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),t.unregisterModule(o)}}},5656:(t,e,r)=>{"use strict";r.d(e,{RL:()=>k,Tv:()=>E,_o:()=>_,h7:()=>w,jA:()=>f,pC:()=>N,rp:()=>R,sS:()=>h,tB:()=>A});var n,o=r(77958),i=r(17499),s=r(31352),a=r(62520),u=r(65358),c=r(79753),p=r(14596);null===(n=(0,o.ts)())?(0,i.IY)().setApp("files").build():(0,i.IY)().setApp("files").setUid(n.uid).build();const d=["B","KB","MB","GB","TB","PB"],l=["B","KiB","MiB","GiB","TiB","PiB"];function h(t,e=!1,r=!1,n=!1){r=r&&!n,"string"==typeof t&&(t=Number(t));let o=t>0?Math.floor(Math.log(t)/Math.log(n?1e3:1024)):0;o=Math.min((r?l.length:d.length)-1,o);const i=r?l[o]:d[o];let a=(t/Math.pow(n?1e3:1024,o)).toFixed(1);return!0===e&&0===o?("0.0"!==a?"< 1 ":"0 ")+(r?l[1]:d[1]):(a=o<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,s.aj)()),a+" "+i)}function f(t,e=!1){try{t=`${t}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch{return null}const r=t.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const n=`${r[1]}`,o="i"===r[4]||e?1024:1e3;return Math.round(Number.parseFloat(n)*o**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}var m=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(m||{});const g=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","nc:share-attributes","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:share-types","oc:size","ocs:share-permissions"],y={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},v=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...g]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},b=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...y}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},w=function(){return`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t`},A=function(t){return`\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${(0,o.ts)()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${t}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`};var E=(t=>(t.Folder="folder",t.File="file",t))(E||{});const x=function(t,e){return null!==t.match(e)},P=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=m.NONE&&t.permissions<=m.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&x(t.source,e)){const r=t.source.match(e)[0];if(!t.source.includes((0,a.join)(r,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(U).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var U=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(U||{});class I{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){P(t,e||this._knownDavService),this._data=t;const r={set:(t,e,r)=>(this.updateMtime(),Reflect.set(t,e,r)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},r),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,u.Ec)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+r.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:m.NONE:m.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return x(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),r=this.root.replace(/\/$/,"");return t.slice(e+r.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){P({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class O extends I{get type(){return E.File}}class L extends I{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return E.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const _=`/files/${(0,o.ts)()?.uid}`,C=(0,c.generateRemoteUrl)("dav"),R=function(t=C,e={}){const r=(0,p.eI)(t,{headers:e});function n(t){r.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,o._S)(n),n((0,o.IH)()),(0,p.lD)().patch("fetch",((t,e)=>{const r=e.headers;return r?.method&&(e.method=r.method,delete r.method),fetch(t,e)})),r},N=async(t,e="/",r=_)=>(await t.getDirectoryContents(`${r}${e}`,{details:!0,data:`\n\t\t\n\t\t\t\n\t\t\t\t${v()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>k(t,r))),k=function(t,e=_,r=C){const n=t.props,i=function(t=""){let e=m.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=m.CREATE),t.includes("G")&&(e|=m.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=m.UPDATE),t.includes("D")&&(e|=m.DELETE),t.includes("R")&&(e|=m.SHARE)),e}(n?.permissions),s=n?.["owner-id"]||(0,o.ts)()?.uid,a={id:n?.fileid||0,source:`${r}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime,size:n?.size||Number.parseInt(n.getcontentlength||"0"),permissions:i,owner:s,root:e,attributes:{...t,...n,hasPreview:n?.["has-preview"]}};return delete a.attributes?.props,"file"===t.type?new O(a):new L(a)};var S={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",n=new RegExp("^"+r+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,r){if(e){const n=Object.keys(e),o=n.length;for(let i=0;i"u")},t.getAllMatches=function(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;t!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t}};T.buildOptions=function(t){return Object.assign({},j,t)},T.defaultOptions=j,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,S.nameRegexp),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var F={};function $(t,e,r){let n;const o={};for(let i=0;i0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function D(t){const e=Object.keys(t);for(let t=0;t`,i=!1;continue}if(u===e.commentPropName){o+=n+`\x3c!--${a[u][0][e.textNodeName]}--\x3e`,i=!0;continue}if("?"===u[0]){const t=z(a[":@"],e),r="?xml"===u?"":n;let s=a[u][0][e.textNodeName];s=0!==s.length?" "+s:"",o+=r+`<${u}${s}${t}?>`,i=!0;continue}let p=n;""!==p&&(p+=e.indentBy);const d=n+`<${u}${z(a[":@"],e)}`,l=V(a[u],e,c,p);-1!==e.unpairedTags.indexOf(u)?e.suppressUnpairedNode?o+=d+">":o+=d+"/>":l&&0!==l.length||!e.suppressEmptyNode?l&&l.endsWith(">")?o+=d+`>${l}${n}`:(o+=d+">",l&&""!==n&&(l.includes("/>")||l.includes("`):o+=d+"/>",i=!0}return o}function Z(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r0&&(r="\n"),V(t,e,"",r)},J={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function K(t){this.options=Object.assign({},J,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=tt),this.processTextOrObjNode=X,this.options.format?(this.indentate=Q,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function X(t,e,r){const n=this.j2x(t,r+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,r):this.buildObjectNode(n.val,e,n.attrStr,r)}function Q(t){return this.options.indentBy.repeat(t)}function tt(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}K.prototype.build=function(t){return this.options.preserveOrder?Y(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},K.prototype.j2x=function(t,e){let r="",n="";for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(typeof t[o]>"u")this.isAttribute(o)&&(n+="");else if(null===t[o])this.isAttribute(o)?n+="":"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)n+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const i=this.isAttribute(o);if(i)r+=this.buildAttrPairStr(i,""+t[o]);else if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const r=t[o].length;let i="";for(let s=0;s"u"||(null===r?"?"===o[0]?n+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+o+"/"+this.tagEndChar:"object"==typeof r?this.options.oneListGroup?i+=this.j2x(r,e+1).val:i+=this.processTextOrObjNode(r,o,e):i+=this.buildTextValNode(r,o,"",e))}this.options.oneListGroup&&(i=this.buildObjectNode(i,o,"",e)),n+=i}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),n=e.length;for(let i=0;i"+t+o}},K.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e{if(!r){var i=1/0;for(p=0;p=o)&&Object.keys(a.O).every((t=>a.O[t](r[u])))?r.splice(u--,1):(s=!1,o0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[r,n,o]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var r in e)a.o(e,r)&&!a.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce(((e,r)=>(a.f[r](t,e),e)),[])),a.u=t=>(({7418:"settings-apps-view",8351:"settings-users"}[t]||t)+"-"+t+".js?v="+{4720:"67ff1816113751e83e78",6512:"930a9f0a458cd206d9d1",7418:"c563724cb8f8ded85c20",8351:"8ba037e94aafca61870f"}[t]),a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},o="nextcloud:",a.l=(t,e,n,i)=>{if(r[t])r[t].push(e);else{var s,u;if(void 0!==n)for(var c=document.getElementsByTagName("script"),p=0;p{s.onerror=s.onload=null,clearTimeout(h);var o=r[t];if(delete r[t],s.parentNode&&s.parentNode.removeChild(s),o&&o.forEach((t=>t(n))),e)return e(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),u&&document.head.appendChild(s)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=8562,(()=>{var t;a.g.importScripts&&(t=a.g.location+"");var e=a.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!t;)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b=document.baseURI||self.location.href;var t={8562:0};a.f.j=(e,r)=>{var n=a.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=t[e]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(e),s=new Error;a.l(i,(r=>{if(a.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;s.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",s.name="ChunkLoadError",s.type=o,s.request=i,n[1](s)}}),"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,i=r[0],s=r[1],u=r[2],c=0;if(i.some((e=>0!==t[e]))){for(n in s)a.o(s,n)&&(a.m[n]=s[n]);if(u)var p=u(a)}for(e&&e(r);ca(40491)));u=a.O(u)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=5f14fbf9608eeaa2e3c3 \ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map index a9e31449121f7..1e657813b53b8 100644 --- a/dist/settings-vue-settings-apps-users-management.js.map +++ b/dist/settings-vue-settings-apps-users-management.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=6b7d58973197ed90ce7f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/App.vue","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack://nextcloud/./apps/settings/src/App.vue?4d15","webpack:///nextcloud/node_modules/vue-router/dist/vue-router.esm.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022, Julia Kirschenheuter \n *\n * @author Julia Kirschenheuter \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","/**\n * @copyright 2020 Christoph Wurst \n *\n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-view')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Sujith Haridasan \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author Arthur Schiwon \n * @author Christoph Wurst \n * @author Daniel Calviño Sánchez \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Vincent Petry \n * @author Stephan Orbaugh \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport api from './api.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\nimport { parseFileSize } from \"@nextcloud/files\"\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: false,\n\t\tshowUserBackend: false,\n\t\tshowLastLogin: false,\n\t\tshowNewUserForm: false,\n\t\tshowLanguages: false,\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.unshift(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tstate.showConfig[key] = value\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}', { offset, limit })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\nimport { setPageHeading } from '../../../core/src/OCP/accessibility.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users.vue')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps.vue')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\nconst baseTitle = document.title\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Active users')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: (to) => {\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'admin') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Admins')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'disabled') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Disabled users')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn decodeURIComponent(to.params.selectedGroup)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\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\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\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})\n\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t\tsetPageHeading(metaTitle)\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author rakekniven \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router.js'\nimport store from './store/index.js'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as q } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst me = (e) => e === null ? q().setApp(\"files\").build() : q().setApp(\"files\").setUid(e.uid).build(), m = me(A());\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Ne {\n _entries = [];\n registerEntry(t) {\n this.validateEntry(t), this._entries.push(t);\n }\n unregisterEntry(t) {\n const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n if (r === -1) {\n m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n return;\n }\n this._entries.splice(r, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(t) {\n return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n }\n getEntryIndex(t) {\n return this._entries.findIndex((r) => r.id === t);\n }\n validateEntry(t) {\n if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n throw new Error(\"Invalid entry\");\n if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n throw new Error(\"Invalid id or displayName property\");\n if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n throw new Error(\"Invalid icon provided\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (typeof t.handler != \"function\")\n throw new Error(\"Invalid handler property\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order property\");\n if (this.getEntryIndex(t.id) !== -1)\n throw new Error(\"Duplicate entry\");\n }\n}\nconst F = function() {\n return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ne(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst C = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Yt(e, t = !1, r = !1, s = !1) {\n r = r && !s, typeof e == \"string\" && (e = Number(e));\n let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n n = Math.min((r ? P.length : C.length) - 1, n);\n const i = r ? P[n] : C[n];\n let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : C[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Jt(e, t = !1) {\n try {\n e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch {\n return null;\n }\n const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (r === null || r[1] === \".\" || r[1] === \"\")\n return null;\n const s = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Z = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(Z || {});\nclass Qt {\n _action;\n constructor(t) {\n this.validateAction(t), this._action = t;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(t) {\n if (!t.id || typeof t.id != \"string\")\n throw new Error(\"Invalid id\");\n if (!t.displayName || typeof t.displayName != \"function\")\n throw new Error(\"Invalid displayName function\");\n if (\"title\" in t && typeof t.title != \"function\")\n throw new Error(\"Invalid title function\");\n if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n throw new Error(\"Invalid iconSvgInline function\");\n if (!t.exec || typeof t.exec != \"function\")\n throw new Error(\"Invalid exec function\");\n if (\"enabled\" in t && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled function\");\n if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n throw new Error(\"Invalid execBatch function\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order\");\n if (\"parent\" in t && typeof t.parent != \"string\")\n throw new Error(\"Invalid parent\");\n if (t.default && !Object.values(Z).includes(t.default))\n throw new Error(\"Invalid default\");\n if (\"inline\" in t && typeof t.inline != \"function\")\n throw new Error(\"Invalid inline function\");\n if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n throw new Error(\"Invalid renderInline function\");\n }\n}\nconst Dt = function(e) {\n if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n m.error(`FileAction ${e.id} already registered`, { action: e });\n return;\n }\n window._nc_fileactions.push(e);\n}, er = function() {\n return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass tr {\n _header;\n constructor(t) {\n this.validateHeader(t), this._header = t;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(t) {\n if (!t.id || !t.render || !t.updated)\n throw new Error(\"Invalid header: id, render and updated are required\");\n if (typeof t.id != \"string\")\n throw new Error(\"Invalid id property\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (t.render && typeof t.render != \"function\")\n throw new Error(\"Invalid render property\");\n if (t.updated && typeof t.updated != \"function\")\n throw new Error(\"Invalid updated property\");\n }\n}\nconst rr = function(e) {\n if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n m.error(`Header ${e.id} already registered`, { header: e });\n return;\n }\n window._nc_filelistheader.push(e);\n}, nr = function() {\n return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst j = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"nc:share-attributes\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:share-types\",\n \"oc:size\",\n \"ocs:share-permissions\"\n], Y = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n}, ir = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j], window._nc_dav_namespaces = { ...Y });\n const r = { ...window._nc_dav_namespaces, ...t };\n if (window._nc_dav_properties.find((n) => n === e))\n return m.error(`${e} already registered`, { prop: e }), !1;\n if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n const s = e.split(\":\")[0];\n return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, L = function() {\n return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...Y }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, sr = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${V()}\n\t\t\t\n\t\t`;\n}, Ee = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${V()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}, or = function(e) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${V()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${A()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${e}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst be = function(e = \"\") {\n let t = N.NONE;\n return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar R = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(R || {});\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst J = function(e, t) {\n return e.match(t) !== null;\n}, X = (e, t) => {\n if (e.id && typeof e.id != \"number\")\n throw new Error(\"Invalid id type of value\");\n if (!e.source)\n throw new Error(\"Missing mandatory source\");\n try {\n new URL(e.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!e.source.startsWith(\"http\"))\n throw new Error(\"Invalid source format, only http(s) is supported\");\n if (e.mtime && !(e.mtime instanceof Date))\n throw new Error(\"Invalid mtime type\");\n if (e.crtime && !(e.crtime instanceof Date))\n throw new Error(\"Invalid crtime type\");\n if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n throw new Error(\"Missing or invalid mandatory mime\");\n if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n throw new Error(\"Invalid size type\");\n if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n throw new Error(\"Invalid permissions\");\n if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n throw new Error(\"Invalid owner type\");\n if (e.attributes && typeof e.attributes != \"object\")\n throw new Error(\"Invalid attributes type\");\n if (e.root && typeof e.root != \"string\")\n throw new Error(\"Invalid root type\");\n if (e.root && !e.root.startsWith(\"/\"))\n throw new Error(\"Root must start with a leading slash\");\n if (e.root && !e.source.includes(e.root))\n throw new Error(\"Root must be part of the source\");\n if (e.root && J(e.source, t)) {\n const r = e.source.match(t)[0];\n if (!e.source.includes(le(r, e.root)))\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n if (e.status && !Object.values(Q).includes(e.status))\n throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Q = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(Q || {});\nclass D {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(t, r) {\n X(t, r || this._knownDavService), this._data = t;\n const s = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n }\n /**\n * Get the source url to this object\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin: t } = new URL(this.source);\n return t + he(this.source.slice(t.length));\n }\n /**\n * Get this object name\n */\n get basename() {\n return fe(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return ce(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n let r = this.source;\n this.isDavRessource && (r = r.split(this._knownDavService).pop());\n const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n return I(r.slice(s + n.length) || \"/\");\n }\n const t = new URL(this.source);\n return I(t.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n return this.isDavRessource ? this._data.owner : null;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return J(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let t = this.source;\n this.isDavRessource && (t = t.split(this._knownDavService).pop());\n const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n return t.slice(r + s.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(t) {\n this._data.status = t;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(t) {\n X({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(t) {\n if (t.includes(\"/\"))\n throw new Error(\"Invalid basename\");\n this.move(I(this.source) + \"/\" + t);\n }\n /**\n * Update the mtime if exists.\n */\n updateMtime() {\n this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass ye extends D {\n get type() {\n return R.File;\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass _e extends D {\n constructor(t) {\n super({\n ...t,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return R.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst ee = `/files/${A()?.uid}`, te = pe(\"dav\"), ur = function(e = te, t = {}) {\n const r = ge(e, { headers: t });\n function s(i) {\n r.setHeaders({\n ...t,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: i ?? \"\"\n });\n }\n return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n const u = d.headers;\n return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n }), r;\n}, dr = async (e, t = \"/\", r = ee) => (await e.getDirectoryContents(`${r}${t}`, {\n details: !0,\n data: Ee(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: !0\n})).data.filter((n) => n.filename !== t).map((n) => ve(n, r)), ve = function(e, t = ee, r = te) {\n const s = e.props, n = be(s?.permissions), i = s?.[\"owner-id\"] || A()?.uid, d = {\n id: s?.fileid || 0,\n source: `${r}${e.filename}`,\n mtime: new Date(Date.parse(e.lastmod)),\n mime: e.mime,\n size: s?.size || Number.parseInt(s.getcontentlength || \"0\"),\n permissions: n,\n owner: i,\n root: t,\n attributes: {\n ...e,\n ...s,\n hasPreview: s?.[\"has-preview\"]\n }\n };\n return delete d.attributes?.props, e.type === \"file\" ? new ye(d) : new _e(d);\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Te {\n _views = [];\n _currentView = null;\n register(t) {\n if (this._views.find((r) => r.id === t.id))\n throw new Error(`View id ${t.id} is already registered`);\n this._views.push(t);\n }\n remove(t) {\n const r = this._views.findIndex((s) => s.id === t);\n r !== -1 && this._views.splice(r, 1);\n }\n get views() {\n return this._views;\n }\n setActive(t) {\n this._currentView = t;\n }\n get active() {\n return this._currentView;\n }\n}\nconst ar = function() {\n return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Te(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Ie {\n _column;\n constructor(t) {\n Ae(t), this._column = t;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst Ae = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"A column id is required\");\n if (!e.title || typeof e.title != \"string\")\n throw new Error(\"A column title is required\");\n if (!e.render || typeof e.render != \"function\")\n throw new Error(\"A render function is required\");\n if (e.sort && typeof e.sort != \"function\")\n throw new Error(\"Column sortFunction must be a function\");\n if (e.summary && typeof e.summary != \"function\")\n throw new Error(\"Column summary must be a function\");\n return !0;\n};\nvar S = {}, O = {};\n(function(e) {\n const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n const a = [];\n let l = o.exec(u);\n for (; l; ) {\n const f = [];\n f.startIndex = o.lastIndex - l[0].length;\n const c = l.length;\n for (let g = 0; g < c; g++)\n f.push(l[g]);\n a.push(f), l = o.exec(u);\n }\n return a;\n }, d = function(u) {\n const o = n.exec(u);\n return !(o === null || typeof o > \"u\");\n };\n e.isExist = function(u) {\n return typeof u < \"u\";\n }, e.isEmptyObject = function(u) {\n return Object.keys(u).length === 0;\n }, e.merge = function(u, o, a) {\n if (o) {\n const l = Object.keys(o), f = l.length;\n for (let c = 0; c < f; c++)\n a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n }\n }, e.getValue = function(u) {\n return e.isExist(u) ? u : \"\";\n }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(O);\nconst M = O, Oe = {\n allowBooleanAttributes: !1,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nS.validate = function(e, t) {\n t = Object.assign({}, Oe, t);\n const r = [];\n let s = !1, n = !1;\n e[0] === \"\\uFEFF\" && (e = e.substr(1));\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\" && e[i + 1] === \"?\") {\n if (i += 2, i = G(e, i), i.err)\n return i;\n } else if (e[i] === \"<\") {\n let d = i;\n if (i++, e[i] === \"!\") {\n i = z(e, i);\n continue;\n } else {\n let u = !1;\n e[i] === \"/\" && (u = !0, i++);\n let o = \"\";\n for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n o += e[i];\n if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n let f;\n return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n }\n const a = xe(e, i);\n if (a === !1)\n return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n let l = a.value;\n if (i = a.index, l[l.length - 1] === \"/\") {\n const f = i - l.length;\n l = l.substring(0, l.length - 1);\n const c = H(l, t);\n if (c === !0)\n s = !0;\n else\n return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n } else if (u)\n if (a.tagClosed) {\n if (l.trim().length > 0)\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n {\n const f = r.pop();\n if (o !== f.tagName) {\n let c = w(e, f.tagStartPos);\n return p(\n \"InvalidTag\",\n \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n w(e, d)\n );\n }\n r.length == 0 && (n = !0);\n }\n } else\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n else {\n const f = H(l, t);\n if (f !== !0)\n return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n if (n === !0)\n return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n }\n for (i++; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"!\") {\n i++, i = z(e, i);\n continue;\n } else if (e[i + 1] === \"?\") {\n if (i = G(e, ++i), i.err)\n return i;\n } else\n break;\n else if (e[i] === \"&\") {\n const f = Ve(e, i);\n if (f == -1)\n return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n i = f;\n } else if (n === !0 && !U(e[i]))\n return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n e[i] === \"<\" && i--;\n }\n } else {\n if (U(e[i]))\n continue;\n return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n }\n if (s) {\n if (r.length == 1)\n return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n if (r.length > 0)\n return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n } else\n return p(\"InvalidXml\", \"Start tag expected.\", 1);\n return !0;\n};\nfunction U(e) {\n return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction G(e, t) {\n const r = t;\n for (; t < e.length; t++)\n if (e[t] == \"?\" || e[t] == \" \") {\n const s = e.substr(r, t - r);\n if (t > 5 && s === \"xml\")\n return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n if (e[t] == \"?\" && e[t + 1] == \">\") {\n t++;\n break;\n } else\n continue;\n }\n return t;\n}\nfunction z(e, t) {\n if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n for (t += 3; t < e.length; t++)\n if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n let r = 1;\n for (t += 8; t < e.length; t++)\n if (e[t] === \"<\")\n r++;\n else if (e[t] === \">\" && (r--, r === 0))\n break;\n } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n for (t += 8; t < e.length; t++)\n if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n }\n return t;\n}\nconst Ce = '\"', Pe = \"'\";\nfunction xe(e, t) {\n let r = \"\", s = \"\", n = !1;\n for (; t < e.length; t++) {\n if (e[t] === Ce || e[t] === Pe)\n s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n else if (e[t] === \">\" && s === \"\") {\n n = !0;\n break;\n }\n r += e[t];\n }\n return s !== \"\" ? !1 : {\n value: r,\n index: t,\n tagClosed: n\n };\n}\nconst $e = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction H(e, t) {\n const r = M.getAllMatches(e, $e), s = {};\n for (let n = 0; n < r.length; n++) {\n if (r[n][1].length === 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n if (r[n][3] !== void 0 && r[n][4] === void 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n const i = r[n][2];\n if (!Le(i))\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n if (!s.hasOwnProperty(i))\n s[i] = 1;\n else\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n }\n return !0;\n}\nfunction Fe(e, t) {\n let r = /\\d/;\n for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n if (e[t] === \";\")\n return t;\n if (!e[t].match(r))\n break;\n }\n return -1;\n}\nfunction Ve(e, t) {\n if (t++, e[t] === \";\")\n return -1;\n if (e[t] === \"#\")\n return t++, Fe(e, t);\n let r = 0;\n for (; t < e.length; t++, r++)\n if (!(e[t].match(/\\w/) && r < 20)) {\n if (e[t] === \";\")\n break;\n return -1;\n }\n return t;\n}\nfunction p(e, t, r) {\n return {\n err: {\n code: e,\n msg: t,\n line: r.line || r,\n col: r.col\n }\n };\n}\nfunction Le(e) {\n return M.isName(e);\n}\nfunction Re(e) {\n return M.isName(e);\n}\nfunction w(e, t) {\n const r = e.substring(0, t).split(/\\r?\\n/);\n return {\n line: r.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: r[r.length - 1].length + 1\n };\n}\nfunction v(e) {\n return e.startIndex + e[1].length;\n}\nvar k = {};\nconst re = {\n preserveOrder: !1,\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n removeNSPrefix: !1,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: !1,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: !0,\n parseAttributeValue: !1,\n trimValues: !0,\n //Trim string values of tag and attributes\n cdataPropName: !1,\n numberParseOptions: {\n hex: !0,\n leadingZeros: !0,\n eNotation: !0\n },\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: !1,\n isArray: () => !1,\n commentPropName: !1,\n unpairedTags: [],\n processEntities: !0,\n htmlEntities: !1,\n ignoreDeclaration: !1,\n ignorePiTags: !1,\n transformTagName: !1,\n transformAttributeName: !1,\n updateTag: function(e, t, r) {\n return e;\n }\n // skipEmptyListItem: false\n}, Se = function(e) {\n return Object.assign({}, re, e);\n};\nk.buildOptions = Se;\nk.defaultOptions = re;\nclass Me {\n constructor(t) {\n this.tagname = t, this.child = [], this[\":@\"] = {};\n }\n add(t, r) {\n t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n }\n addChild(t) {\n t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n }\n}\nvar ke = Me;\nconst Be = O;\nfunction qe(e, t) {\n const r = {};\n if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n t = t + 9;\n let s = 1, n = !1, i = !1, d = \"\";\n for (; t < e.length; t++)\n if (e[t] === \"<\" && !i) {\n if (n && Ge(e, t))\n t += 7, [entityName, val, t] = Xe(e, t + 1), val.indexOf(\"&\") === -1 && (r[We(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n });\n else if (n && ze(e, t))\n t += 8;\n else if (n && He(e, t))\n t += 8;\n else if (n && Ke(e, t))\n t += 9;\n else if (Ue)\n i = !0;\n else\n throw new Error(\"Invalid DOCTYPE\");\n s++, d = \"\";\n } else if (e[t] === \">\") {\n if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n break;\n } else\n e[t] === \"[\" ? n = !0 : d += e[t];\n if (s !== 0)\n throw new Error(\"Unclosed DOCTYPE\");\n } else\n throw new Error(\"Invalid Tag instead of DOCTYPE\");\n return { entities: r, i: t };\n}\nfunction Xe(e, t) {\n let r = \"\";\n for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n r += e[t];\n if (r = r.trim(), r.indexOf(\" \") !== -1)\n throw new Error(\"External entites are not supported\");\n const s = e[t++];\n let n = \"\";\n for (; t < e.length && e[t] !== s; t++)\n n += e[t];\n return [r, n, t];\n}\nfunction Ue(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction Ge(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction ze(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction He(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction We(e) {\n if (Be.isName(e))\n return e;\n throw new Error(`Invalid entity name ${e}`);\n}\nvar Ze = qe;\nconst je = /^[-+]?0x[a-fA-F0-9]+$/, Ye = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Je = {\n hex: !0,\n leadingZeros: !0,\n decimalPoint: \".\",\n eNotation: !0\n //skipLike: /regex/\n};\nfunction Qe(e, t = {}) {\n if (t = Object.assign({}, Je, t), !e || typeof e != \"string\")\n return e;\n let r = e.trim();\n if (t.skipLike !== void 0 && t.skipLike.test(r))\n return e;\n if (t.hex && je.test(r))\n return Number.parseInt(r, 16);\n {\n const s = Ye.exec(r);\n if (s) {\n const n = s[1], i = s[2];\n let d = De(s[3]);\n const u = s[4] || s[6];\n if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n return e;\n if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n return e;\n {\n const o = Number(r), a = \"\" + o;\n return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n }\n } else\n return e;\n }\n}\nfunction De(e) {\n return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar et = Qe;\nconst B = O, T = ke, tt = Ze, rt = et;\n\"<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)\".replace(/NAME/g, B.nameRegexp);\nlet nt = class {\n constructor(t) {\n this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n space: { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n pound: { regex: /&(pound|#163);/g, val: \"£\" },\n yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n reg: { regex: /&(reg|#174);/g, val: \"®\" },\n inr: { regex: /&(inr|#8377);/g, val: \"₹\" }\n }, this.addExternalEntities = it, this.parseXml = at, this.parseTextData = st, this.resolveNameSpace = ot, this.buildAttributesMap = dt, this.isItStopNode = ht, this.replaceEntitiesValue = ft, this.readStopNodeData = gt, this.saveTextToParentTag = ct, this.addChild = lt;\n }\n};\nfunction it(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n this.lastEntities[s] = {\n regex: new RegExp(\"&\" + s + \";\", \"g\"),\n val: e[s]\n };\n }\n}\nfunction st(e, t, r, s, n, i, d) {\n if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n d || (e = this.replaceEntitiesValue(e));\n const u = this.options.tagValueProcessor(t, e, r, n, i);\n return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n }\n}\nfunction ot(e) {\n if (this.options.removeNSPrefix) {\n const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n if (t[0] === \"xmlns\")\n return \"\";\n t.length === 2 && (e = r + t[1]);\n }\n return e;\n}\nconst ut = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction dt(e, t, r) {\n if (!this.options.ignoreAttributes && typeof e == \"string\") {\n const s = B.getAllMatches(e, ut), n = s.length, i = {};\n for (let d = 0; d < n; d++) {\n const u = this.resolveNameSpace(s[d][1]);\n let o = s[d][4], a = this.options.attributeNamePrefix + u;\n if (u.length)\n if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n const l = this.options.attributeValueProcessor(u, o, t);\n l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n o,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n } else\n this.options.allowBooleanAttributes && (i[a] = !0);\n }\n if (!Object.keys(i).length)\n return;\n if (this.options.attributesGroupName) {\n const d = {};\n return d[this.options.attributesGroupName] = i, d;\n }\n return i;\n }\n}\nconst at = function(e) {\n e = e.replace(/\\r\\n?/g, `\n`);\n const t = new T(\"!xml\");\n let r = t, s = \"\", n = \"\";\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"/\") {\n const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n let o = e.substring(i + 2, u).trim();\n if (this.options.removeNSPrefix) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1));\n }\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n const a = n.substring(n.lastIndexOf(\".\") + 1);\n if (o && this.options.unpairedTags.indexOf(o) !== -1)\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n let l = 0;\n a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n } else if (e[i + 1] === \"?\") {\n let u = x(e, i, !1, \"?>\");\n if (!u)\n throw new Error(\"Pi Tag is not closed.\");\n if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n const o = new T(u.tagName);\n o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n }\n i = u.closeIndex + 1;\n } else if (e.substr(i + 1, 3) === \"!--\") {\n const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const o = e.substring(i + 4, u - 2);\n s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n }\n i = u;\n } else if (e.substr(i + 1, 2) === \"!D\") {\n const u = tt(e, i);\n this.docTypeEntities = u.entities, i = u.i;\n } else if (e.substr(i + 1, 2) === \"![\") {\n const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n if (s = this.saveTextToParentTag(s, r, n), this.options.cdataPropName)\n r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]);\n else {\n let a = this.parseTextData(o, r.tagname, n, !0, !1, !0);\n a == null && (a = \"\"), r.add(this.options.textNodeName, a);\n }\n i = u + 2;\n } else {\n let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n const a = u.rawTagName;\n let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n const g = r;\n if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n let h = \"\";\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n i = u.closeIndex;\n else if (this.options.unpairedTags.indexOf(o) !== -1)\n i = u.closeIndex;\n else {\n const E = this.readStopNodeData(e, a, c + 1);\n if (!E)\n throw new Error(`Unexpected end of ${a}`);\n i = E.i, h = E.tagContent;\n }\n const _ = new T(o);\n o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n } else {\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n const h = new T(o);\n o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n } else {\n const h = new T(o);\n this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n }\n s = \"\", i = c;\n }\n }\n else\n s += e[i];\n return t.child;\n};\nfunction lt(e, t, r) {\n const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ft = function(e) {\n if (this.options.processEntities) {\n for (let t in this.docTypeEntities) {\n const r = this.docTypeEntities[t];\n e = e.replace(r.regx, r.val);\n }\n for (let t in this.lastEntities) {\n const r = this.lastEntities[t];\n e = e.replace(r.regex, r.val);\n }\n if (this.options.htmlEntities)\n for (let t in this.htmlEntities) {\n const r = this.htmlEntities[t];\n e = e.replace(r.regex, r.val);\n }\n e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return e;\n};\nfunction ct(e, t, r, s) {\n return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n e,\n t.tagname,\n r,\n !1,\n t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n s\n ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction ht(e, t, r) {\n const s = \"*.\" + r;\n for (const n in e) {\n const i = e[n];\n if (s === i || t === i)\n return !0;\n }\n return !1;\n}\nfunction pt(e, t, r = \">\") {\n let s, n = \"\";\n for (let i = t; i < e.length; i++) {\n let d = e[i];\n if (s)\n d === s && (s = \"\");\n else if (d === '\"' || d === \"'\")\n s = d;\n else if (d === r[0])\n if (r[1]) {\n if (e[i + 1] === r[1])\n return {\n data: n,\n index: i\n };\n } else\n return {\n data: n,\n index: i\n };\n else\n d === \"\t\" && (d = \" \");\n n += d;\n }\n}\nfunction y(e, t, r, s) {\n const n = e.indexOf(t, r);\n if (n === -1)\n throw new Error(s);\n return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n const n = pt(e, t + 1, s);\n if (!n)\n return;\n let i = n.data;\n const d = n.index, u = i.search(/\\s/);\n let o = i, a = !0;\n u !== -1 && (o = i.substr(0, u).replace(/\\s\\s*$/, \"\"), i = i.substr(u + 1));\n const l = o;\n if (r) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n }\n return {\n tagName: o,\n tagExp: i,\n closeIndex: d,\n attrExpPresent: a,\n rawTagName: l\n };\n}\nfunction gt(e, t, r) {\n const s = r;\n let n = 1;\n for (; r < e.length; r++)\n if (e[r] === \"<\")\n if (e[r + 1] === \"/\") {\n const i = y(e, \">\", r, `${t} is not closed`);\n if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n return {\n tagContent: e.substring(s, r),\n i\n };\n r = i;\n } else if (e[r + 1] === \"?\")\n r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 3) === \"!--\")\n r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 2) === \"![\")\n r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n else {\n const i = x(e, r, \">\");\n i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n }\n}\nfunction $(e, t, r) {\n if (t && typeof e == \"string\") {\n const s = e.trim();\n return s === \"true\" ? !0 : s === \"false\" ? !1 : rt(e, r);\n } else\n return B.isExist(e) ? e : \"\";\n}\nvar wt = nt, ne = {};\nfunction mt(e, t) {\n return ie(e, t);\n}\nfunction ie(e, t, r) {\n let s;\n const n = {};\n for (let i = 0; i < e.length; i++) {\n const d = e[i], u = Nt(d);\n let o = \"\";\n if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n s === void 0 ? s = d[u] : s += \"\" + d[u];\n else {\n if (u === void 0)\n continue;\n if (d[u]) {\n let a = ie(d[u], t, o);\n const l = bt(a, t);\n d[\":@\"] ? Et(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n }\n }\n }\n return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Nt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (s !== \":@\")\n return s;\n }\n}\nfunction Et(e, t, r, s) {\n if (t) {\n const n = Object.keys(t), i = n.length;\n for (let d = 0; d < i; d++) {\n const u = n[d];\n s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n }\n }\n}\nfunction bt(e, t) {\n const { textNodeName: r } = t, s = Object.keys(e).length;\n return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = mt;\nconst { buildOptions: yt } = k, _t = wt, { prettify: vt } = ne, Tt = S;\nlet It = class {\n constructor(t) {\n this.externalEntities = {}, this.options = yt(t);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(t, r) {\n if (typeof t != \"string\")\n if (t.toString)\n t = t.toString();\n else\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n if (r) {\n r === !0 && (r = {});\n const i = Tt.validate(t, r);\n if (i !== !0)\n throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n }\n const s = new _t(this.options);\n s.addExternalEntities(this.externalEntities);\n const n = s.parseXml(t);\n return this.options.preserveOrder || n === void 0 ? n : vt(n, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(t, r) {\n if (r.indexOf(\"&\") !== -1)\n throw new Error(\"Entity value can't have '&'\");\n if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n if (r === \"&\")\n throw new Error(\"An entity with value '&' is not permitted\");\n this.externalEntities[t] = r;\n }\n};\nvar At = It;\nconst Ot = `\n`;\nfunction Ct(e, t) {\n let r = \"\";\n return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n let n = \"\", i = !1;\n for (let d = 0; d < e.length; d++) {\n const u = e[d], o = Pt(u);\n if (o === void 0)\n continue;\n let a = \"\";\n if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n let h = u[o];\n xt(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n continue;\n } else if (o === t.cdataPropName) {\n i && (n += s), n += ``, i = !1;\n continue;\n } else if (o === t.commentPropName) {\n n += s + ``, i = !0;\n continue;\n } else if (o[0] === \"?\") {\n const h = K(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n let E = u[o][0][t.textNodeName];\n E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n continue;\n }\n let l = s;\n l !== \"\" && (l += t.indentBy);\n const f = K(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"`), i = !0;\n }\n return n;\n}\nfunction Pt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (e.hasOwnProperty(s) && s !== \":@\")\n return s;\n }\n}\nfunction K(e, t) {\n let r = \"\";\n if (e && !t.ignoreAttributes)\n for (let s in e) {\n if (!e.hasOwnProperty(s))\n continue;\n let n = t.attributeValueProcessor(s, e[s]);\n n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n }\n return r;\n}\nfunction xt(e, t) {\n e = e.substr(0, e.length - t.textNodeName.length - 1);\n let r = e.substr(e.lastIndexOf(\".\") + 1);\n for (let s in t.stopNodes)\n if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n return !0;\n return !1;\n}\nfunction oe(e, t) {\n if (e && e.length > 0 && t.processEntities)\n for (let r = 0; r < t.entities.length; r++) {\n const s = t.entities[r];\n e = e.replace(s.regex, s.val);\n }\n return e;\n}\nvar $t = Ct;\nconst Ft = $t, Vt = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n cdataPropName: !1,\n format: !1,\n indentBy: \" \",\n suppressEmptyNode: !1,\n suppressUnpairedNode: !0,\n suppressBooleanAttributes: !0,\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n preserveOrder: !1,\n commentPropName: !1,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: !0,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: !1\n};\nfunction b(e) {\n this.options = Object.assign({}, Vt, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n return !1;\n } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = St), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n return \"\";\n }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n return this.options.preserveOrder ? Ft(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n [this.options.arrayNodeName]: e\n }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n let r = \"\", s = \"\";\n for (let n in e)\n if (Object.prototype.hasOwnProperty.call(e, n))\n if (typeof e[n] > \"u\")\n this.isAttribute(n) && (s += \"\");\n else if (e[n] === null)\n this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n else if (e[n] instanceof Date)\n s += this.buildTextValNode(e[n], n, \"\", t);\n else if (typeof e[n] != \"object\") {\n const i = this.isAttribute(n);\n if (i)\n r += this.buildAttrPairStr(i, \"\" + e[n]);\n else if (n === this.options.textNodeName) {\n let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n s += this.replaceEntitiesValue(d);\n } else\n s += this.buildTextValNode(e[n], n, \"\", t);\n } else if (Array.isArray(e[n])) {\n const i = e[n].length;\n let d = \"\";\n for (let u = 0; u < i; u++) {\n const o = e[n][u];\n typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n }\n this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n const i = Object.keys(e[n]), d = i.length;\n for (let u = 0; u < d; u++)\n r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n } else\n s += this.processTextOrObjNode(e[n], n, t);\n return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n const s = this.j2x(e, r + 1);\n return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n if (e === \"\")\n return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n {\n let n = \"\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n }\n};\nb.prototype.closeTag = function(e) {\n let t = \"\";\n return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `>` + this.newLine;\n if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n return this.indentate(s) + `` + this.newLine;\n if (t[0] === \"?\")\n return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n {\n let n = this.options.tagValueProcessor(t, e);\n return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \" 0 && this.options.processEntities)\n for (let t = 0; t < this.options.entities.length; t++) {\n const r = this.options.entities[t];\n e = e.replace(r.regex, r.val);\n }\n return e;\n};\nfunction Rt(e) {\n return this.options.indentBy.repeat(e);\n}\nfunction St(e) {\n return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar Mt = b;\nconst kt = S, Bt = At, qt = Mt;\nvar W = {\n XMLParser: Bt,\n XMLValidator: kt,\n XMLBuilder: qt\n};\nfunction Xt(e) {\n if (typeof e != \"string\")\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n if (e = e.trim(), e.length === 0 || W.XMLValidator.validate(e) !== !0)\n return !1;\n let t;\n const r = new W.XMLParser();\n try {\n t = r.parse(e);\n } catch {\n return !1;\n }\n return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass cr {\n _view;\n constructor(t) {\n Ut(t), this._view = t;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(t) {\n this._view.icon = t;\n }\n get order() {\n return this._view.order;\n }\n set order(t) {\n this._view.order = t;\n }\n get params() {\n return this._view.params;\n }\n set params(t) {\n this._view.params = t;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(t) {\n this._view.expanded = t;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n}\nconst Ut = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"View id is required and must be a string\");\n if (!e.name || typeof e.name != \"string\")\n throw new Error(\"View name is required and must be a string\");\n if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n throw new Error(\"View caption is required for top-level views and must be a string\");\n if (!e.getContents || typeof e.getContents != \"function\")\n throw new Error(\"View getContents is required and must be a function\");\n if (!e.icon || typeof e.icon != \"string\" || !Xt(e.icon))\n throw new Error(\"View icon is required and must be a valid svg string\");\n if (!(\"order\" in e) || typeof e.order != \"number\")\n throw new Error(\"View order is required and must be a number\");\n if (e.columns && e.columns.forEach((t) => {\n if (!(t instanceof Ie))\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }), e.emptyView && typeof e.emptyView != \"function\")\n throw new Error(\"View emptyView must be a function\");\n if (e.parent && typeof e.parent != \"string\")\n throw new Error(\"View parent must be a string\");\n if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n throw new Error(\"View sticky must be a boolean\");\n if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n throw new Error(\"View expanded must be a boolean\");\n if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n throw new Error(\"View defaultSortKey must be a string\");\n return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst hr = function(e) {\n return F().registerEntry(e);\n}, pr = function(e) {\n return F().unregisterEntry(e);\n}, gr = function(e) {\n return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n Ie as Column,\n Z as DefaultType,\n ye as File,\n Qt as FileAction,\n R as FileType,\n _e as Folder,\n tr as Header,\n Te as Navigation,\n D as Node,\n Q as NodeStatus,\n N as Permission,\n cr as View,\n hr as addNewFileMenuEntry,\n ur as davGetClient,\n sr as davGetDefaultPropfind,\n Ee as davGetFavoritesReport,\n or as davGetRecentSearch,\n be as davParsePermissions,\n te as davRemoteURL,\n ve as davResultToNode,\n ee as davRootPath,\n Y as defaultDavNamespaces,\n j as defaultDavProperties,\n Yt as formatFileSize,\n L as getDavNameSpaces,\n V as getDavProperties,\n dr as getFavoriteNodes,\n er as getFileActions,\n nr as getFileListHeaders,\n ar as getNavigation,\n gr as getNewFileMenuEntries,\n Jt as parseFileSize,\n ir as registerDavProperty,\n Dt as registerFileAction,\n rr as registerFileListHeaders,\n pr as removeNewFileMenuEntry\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"930a9f0a458cd206d9d1\",\"7418\":\"c563724cb8f8ded85c20\",\"8351\":\"729e37d4bf6f456e841b\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(40491)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","installed","t","enabled","disabled","updates","featured","supported","getLoggerBuilder","setApp","detectUser","build","name","beforeMount","document","getElementById","$store","commit","JSON","parse","dataset","server","_c","this","_self","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","castQueryParamValue","value","String","parseQuery","query","res","trim","split","forEach","param","parts","shift","val","length","join","undefined","Array","isArray","push","stringifyQuery","obj","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","options","clone","e","route","meta","path","hash","params","fullPath","getFullPath","matched","formatMatch","START","unshift","parent","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","props","type","default","render","_","children","data","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","current","hook","prepatch","vnode","componentInstance","init","propsToPass","config","resolveProps","attrs","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","arr","prototype","call","pathToRegexp_1","pathToRegexp","RegExp","groups","source","match","prefix","delimiter","optional","repeat","partial","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","tokens","index","defaultDelimiter","exec","m","escaped","offset","slice","next","capture","group","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","opts","pretty","token","TypeError","stringify","j","test","re","sensitive","strict","end","endsWithDelimiter","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","indexOf","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","noop","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","target","queryIncludes","isIncludedRoute","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","saveScrollPosition","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","hashStartsWithNumberRE","isObject","selector","el","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","style","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","url","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationCancelledError","createRouterError","message","error","Error","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","flatMapComponents","flatten","concat","apply","hasSymbol","Symbol","toStringTag","once","called","args","arguments","History","baseEl","normalizeBase","pending","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","bind","reverse","guards","def","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","console","lastRouteIndex","lastCurrentIndex","max","Math","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","cid","resolvedDef","__esModule","resolved","reject","reason","msg","comp","iterator","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","n","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","get","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","install","Vue","isDef","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","version","START_LOCATION","use","sanitize","requireAdmin","confirmPassword","axios","post","put","delete","orderGroups","orderBy","usercount","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","usersObj","existingUsers","users","_ref","newUsers","values","_ref2","includes","usersOffset","usersLimit","updateDisabledUsers","_usersObj","disabledUsersOffset","disabledUsersLimit","setPasswordPolicyMinLength","minPasswordLength","initGroups","_ref3","userCount","assign","addGroup","_ref4","gid","displayName","find","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","removeGroup","addUserGroup","_ref6","userid","user","removeUserGroup","_ref7","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","userGroup","warn","logger","setUserData","_ref12","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","showConfig","CancelToken","searchRequestCancelSource","showStoragePath","showUserBackend","showLastLogin","showNewUserForm","showLanguages","getters","getUsers","getGroups","getSubadminGroups","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","actions","searchUsers","context","_ref14","limit","api","generateOcsUrl","isCancel","getUser","userId","_ref15","cancel","cancelToken","usersCount","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","sendWelcomeMail","APPS_API_FAILURE","showError","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","_id","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","updateApp","update","resetApps","reset","startLoading","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","Vuex","API_FAILURE","Store","modules","settings","oc","process","Users","Apps","Router","baseTitle","title","selectedGroup","async","store","metaTitle","heading","headingEl","textContent","setPageHeading","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","OC","requestToken","OCA","oc_userconfig","App","$mount","cloneRoute","exports","moduleName","registerModule","namespaced","transition","currentPath","isTimeTraveling","storeUnwatch","watch","afterEachUnHook","unregisterModule","setUid","uid","C","P","Yt","r","s","Number","floor","log","min","d","pow","parseFloat","toLocaleString","Jt","toLocaleLowerCase","replaceAll","round","k","g","p","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","Y","nc","V","_nc_dav_properties","L","_nc_dav_namespaces","sr","or","R","Folder","File","J","X","URL","startsWith","mtime","crtime","mime","size","permissions","owner","attributes","root","status","Q","NEW","FAILED","LOADING","LOCKED","D","_data","_attributes","_knownDavService","set","updateMtime","Reflect","deleteProperty","Proxy","encodedSource","origin","basename","extension","dirname","isDavRessource","fileid","move","rename","ye","_e","super","ee","te","ur","headers","setHeaders","requesttoken","patch","u","method","fetch","dr","getDirectoryContents","details","includeSelf","filename","ve","be","lastmod","parseInt","getcontentlength","hasPreview","O","isExist","isEmptyObject","merge","o","f","getValue","isName","getAllMatches","startIndex","lastIndex","nameRegexp","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","ne","ie","Nt","bt","Et","prettify","yt","vt","se","Pt","xt","oe","K","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","lastIndexOf","entities","Ft","format","Vt","oneListGroup","isAttribute","attrPrefixLen","St","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","Infinity","fulfilled","getter","definition","enumerable","chunkId","all","reduce","promises","globalThis","Function","prop","done","script","needAttach","scripts","getElementsByTagName","createElement","charset","timeout","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","head","appendChild","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","installedChunks","installedChunkData","promise","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=5f14fbf9608eeaa2e3c3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/App.vue","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack://nextcloud/./apps/settings/src/App.vue?4d15","webpack:///nextcloud/node_modules/vue-router/dist/vue-router.esm.js","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022, Julia Kirschenheuter \n *\n * @author Julia Kirschenheuter \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","/**\n * @copyright 2020 Christoph Wurst \n *\n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('router-view')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an
element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Sujith Haridasan \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author Arthur Schiwon \n * @author Christoph Wurst \n * @author Daniel Calviño Sánchez \n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n * @author Vincent Petry \n * @author Stephan Orbaugh \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport api from './api.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport logger from '../logger.js'\nimport { parseFileSize } from \"@nextcloud/files\"\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: 0,\n\tshowConfig: {\n\t\tshowStoragePath: false,\n\t\tshowUserBackend: false,\n\t\tshowLastLogin: false,\n\t\tshowNewUserForm: false,\n\t\tshowLanguages: false,\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.unshift(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tstate.showConfig[key] = value\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}', { offset, limit })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\nimport { setPageHeading } from '../../../core/src/OCP/accessibility.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users.vue')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps.vue')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\nconst baseTitle = document.title\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Active users')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: (to) => {\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'admin') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Admins')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'disabled') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Disabled users')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn decodeURIComponent(to.params.selectedGroup)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\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\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\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})\n\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t\tsetPageHeading(metaTitle)\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author rakekniven \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router.js'\nimport store from './store/index.js'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as q } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst me = (e) => e === null ? q().setApp(\"files\").build() : q().setApp(\"files\").setUid(e.uid).build(), m = me(A());\n/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Ne {\n _entries = [];\n registerEntry(t) {\n this.validateEntry(t), this._entries.push(t);\n }\n unregisterEntry(t) {\n const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n if (r === -1) {\n m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n return;\n }\n this._entries.splice(r, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(t) {\n return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n }\n getEntryIndex(t) {\n return this._entries.findIndex((r) => r.id === t);\n }\n validateEntry(t) {\n if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n throw new Error(\"Invalid entry\");\n if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n throw new Error(\"Invalid id or displayName property\");\n if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n throw new Error(\"Invalid icon provided\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (typeof t.handler != \"function\")\n throw new Error(\"Invalid handler property\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order property\");\n if (this.getEntryIndex(t.id) !== -1)\n throw new Error(\"Duplicate entry\");\n }\n}\nconst F = function() {\n return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ne(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst C = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Yt(e, t = !1, r = !1, s = !1) {\n r = r && !s, typeof e == \"string\" && (e = Number(e));\n let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n n = Math.min((r ? P.length : C.length) - 1, n);\n const i = r ? P[n] : C[n];\n let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : C[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Jt(e, t = !1) {\n try {\n e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch {\n return null;\n }\n const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (r === null || r[1] === \".\" || r[1] === \"\")\n return null;\n const s = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Z = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(Z || {});\nclass Qt {\n _action;\n constructor(t) {\n this.validateAction(t), this._action = t;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(t) {\n if (!t.id || typeof t.id != \"string\")\n throw new Error(\"Invalid id\");\n if (!t.displayName || typeof t.displayName != \"function\")\n throw new Error(\"Invalid displayName function\");\n if (\"title\" in t && typeof t.title != \"function\")\n throw new Error(\"Invalid title function\");\n if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n throw new Error(\"Invalid iconSvgInline function\");\n if (!t.exec || typeof t.exec != \"function\")\n throw new Error(\"Invalid exec function\");\n if (\"enabled\" in t && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled function\");\n if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n throw new Error(\"Invalid execBatch function\");\n if (\"order\" in t && typeof t.order != \"number\")\n throw new Error(\"Invalid order\");\n if (\"parent\" in t && typeof t.parent != \"string\")\n throw new Error(\"Invalid parent\");\n if (t.default && !Object.values(Z).includes(t.default))\n throw new Error(\"Invalid default\");\n if (\"inline\" in t && typeof t.inline != \"function\")\n throw new Error(\"Invalid inline function\");\n if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n throw new Error(\"Invalid renderInline function\");\n }\n}\nconst Dt = function(e) {\n if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n m.error(`FileAction ${e.id} already registered`, { action: e });\n return;\n }\n window._nc_fileactions.push(e);\n}, er = function() {\n return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass tr {\n _header;\n constructor(t) {\n this.validateHeader(t), this._header = t;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(t) {\n if (!t.id || !t.render || !t.updated)\n throw new Error(\"Invalid header: id, render and updated are required\");\n if (typeof t.id != \"string\")\n throw new Error(\"Invalid id property\");\n if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n throw new Error(\"Invalid enabled property\");\n if (t.render && typeof t.render != \"function\")\n throw new Error(\"Invalid render property\");\n if (t.updated && typeof t.updated != \"function\")\n throw new Error(\"Invalid updated property\");\n }\n}\nconst rr = function(e) {\n if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n m.error(`Header ${e.id} already registered`, { header: e });\n return;\n }\n window._nc_filelistheader.push(e);\n}, nr = function() {\n return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst j = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"nc:share-attributes\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:share-types\",\n \"oc:size\",\n \"ocs:share-permissions\"\n], Y = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n}, ir = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j], window._nc_dav_namespaces = { ...Y });\n const r = { ...window._nc_dav_namespaces, ...t };\n if (window._nc_dav_properties.find((n) => n === e))\n return m.error(`${e} already registered`, { prop: e }), !1;\n if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n const s = e.split(\":\")[0];\n return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, L = function() {\n return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...Y }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, sr = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${V()}\n\t\t\t\n\t\t`;\n}, Ee = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${V()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}, or = function(e) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${V()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${A()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${e}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst be = function(e = \"\") {\n let t = N.NONE;\n return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar R = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(R || {});\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst J = function(e, t) {\n return e.match(t) !== null;\n}, X = (e, t) => {\n if (e.id && typeof e.id != \"number\")\n throw new Error(\"Invalid id type of value\");\n if (!e.source)\n throw new Error(\"Missing mandatory source\");\n try {\n new URL(e.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!e.source.startsWith(\"http\"))\n throw new Error(\"Invalid source format, only http(s) is supported\");\n if (e.mtime && !(e.mtime instanceof Date))\n throw new Error(\"Invalid mtime type\");\n if (e.crtime && !(e.crtime instanceof Date))\n throw new Error(\"Invalid crtime type\");\n if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n throw new Error(\"Missing or invalid mandatory mime\");\n if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n throw new Error(\"Invalid size type\");\n if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n throw new Error(\"Invalid permissions\");\n if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n throw new Error(\"Invalid owner type\");\n if (e.attributes && typeof e.attributes != \"object\")\n throw new Error(\"Invalid attributes type\");\n if (e.root && typeof e.root != \"string\")\n throw new Error(\"Invalid root type\");\n if (e.root && !e.root.startsWith(\"/\"))\n throw new Error(\"Root must start with a leading slash\");\n if (e.root && !e.source.includes(e.root))\n throw new Error(\"Root must be part of the source\");\n if (e.root && J(e.source, t)) {\n const r = e.source.match(t)[0];\n if (!e.source.includes(le(r, e.root)))\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n if (e.status && !Object.values(Q).includes(e.status))\n throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nvar Q = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(Q || {});\nclass D {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n constructor(t, r) {\n X(t, r || this._knownDavService), this._data = t;\n const s = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n };\n this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n }\n /**\n * Get the source url to this object\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin: t } = new URL(this.source);\n return t + he(this.source.slice(t.length));\n }\n /**\n * Get this object name\n */\n get basename() {\n return fe(this.source);\n }\n /**\n * Get this object's extension\n */\n get extension() {\n return ce(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n */\n get dirname() {\n if (this.root) {\n let r = this.source;\n this.isDavRessource && (r = r.split(this._knownDavService).pop());\n const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n return I(r.slice(s + n.length) || \"/\");\n }\n const t = new URL(this.source);\n return I(t.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Get the file creation time\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Get the file attribute\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n }\n /**\n * Get the file owner\n */\n get owner() {\n return this.isDavRessource ? this._data.owner : null;\n }\n /**\n * Is this a dav-related ressource ?\n */\n get isDavRessource() {\n return J(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n */\n get root() {\n return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let t = this.source;\n this.isDavRessource && (t = t.split(this._knownDavService).pop());\n const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n return t.slice(r + s.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * Will look for the fileid in attributes if undefined.\n */\n get fileid() {\n return this._data?.id || this.attributes?.fileid;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(t) {\n this._data.status = t;\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(t) {\n X({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(t) {\n if (t.includes(\"/\"))\n throw new Error(\"Invalid basename\");\n this.move(I(this.source) + \"/\" + t);\n }\n /**\n * Update the mtime if exists.\n */\n updateMtime() {\n this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass ye extends D {\n get type() {\n return R.File;\n }\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass _e extends D {\n constructor(t) {\n super({\n ...t,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return R.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Ferdinand Thiessen \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst ee = `/files/${A()?.uid}`, te = pe(\"dav\"), ur = function(e = te, t = {}) {\n const r = ge(e, { headers: t });\n function s(i) {\n r.setHeaders({\n ...t,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: i ?? \"\"\n });\n }\n return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n const u = d.headers;\n return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n }), r;\n}, dr = async (e, t = \"/\", r = ee) => (await e.getDirectoryContents(`${r}${t}`, {\n details: !0,\n data: Ee(),\n headers: {\n // see davGetClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: !0\n})).data.filter((n) => n.filename !== t).map((n) => ve(n, r)), ve = function(e, t = ee, r = te) {\n const s = e.props, n = be(s?.permissions), i = s?.[\"owner-id\"] || A()?.uid, d = {\n id: s?.fileid || 0,\n source: `${r}${e.filename}`,\n mtime: new Date(Date.parse(e.lastmod)),\n mime: e.mime,\n size: s?.size || Number.parseInt(s.getcontentlength || \"0\"),\n permissions: n,\n owner: i,\n root: t,\n attributes: {\n ...e,\n ...s,\n hasPreview: s?.[\"has-preview\"]\n }\n };\n return delete d.attributes?.props, e.type === \"file\" ? new ye(d) : new _e(d);\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Te {\n _views = [];\n _currentView = null;\n register(t) {\n if (this._views.find((r) => r.id === t.id))\n throw new Error(`View id ${t.id} is already registered`);\n this._views.push(t);\n }\n remove(t) {\n const r = this._views.findIndex((s) => s.id === t);\n r !== -1 && this._views.splice(r, 1);\n }\n get views() {\n return this._views;\n }\n setActive(t) {\n this._currentView = t;\n }\n get active() {\n return this._currentView;\n }\n}\nconst ar = function() {\n return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Te(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass Ie {\n _column;\n constructor(t) {\n Ae(t), this._column = t;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst Ae = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"A column id is required\");\n if (!e.title || typeof e.title != \"string\")\n throw new Error(\"A column title is required\");\n if (!e.render || typeof e.render != \"function\")\n throw new Error(\"A render function is required\");\n if (e.sort && typeof e.sort != \"function\")\n throw new Error(\"Column sortFunction must be a function\");\n if (e.summary && typeof e.summary != \"function\")\n throw new Error(\"Column summary must be a function\");\n return !0;\n};\nvar S = {}, O = {};\n(function(e) {\n const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n const a = [];\n let l = o.exec(u);\n for (; l; ) {\n const f = [];\n f.startIndex = o.lastIndex - l[0].length;\n const c = l.length;\n for (let g = 0; g < c; g++)\n f.push(l[g]);\n a.push(f), l = o.exec(u);\n }\n return a;\n }, d = function(u) {\n const o = n.exec(u);\n return !(o === null || typeof o > \"u\");\n };\n e.isExist = function(u) {\n return typeof u < \"u\";\n }, e.isEmptyObject = function(u) {\n return Object.keys(u).length === 0;\n }, e.merge = function(u, o, a) {\n if (o) {\n const l = Object.keys(o), f = l.length;\n for (let c = 0; c < f; c++)\n a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n }\n }, e.getValue = function(u) {\n return e.isExist(u) ? u : \"\";\n }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(O);\nconst M = O, Oe = {\n allowBooleanAttributes: !1,\n //A tag can have attributes without any value\n unpairedTags: []\n};\nS.validate = function(e, t) {\n t = Object.assign({}, Oe, t);\n const r = [];\n let s = !1, n = !1;\n e[0] === \"\\uFEFF\" && (e = e.substr(1));\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\" && e[i + 1] === \"?\") {\n if (i += 2, i = G(e, i), i.err)\n return i;\n } else if (e[i] === \"<\") {\n let d = i;\n if (i++, e[i] === \"!\") {\n i = z(e, i);\n continue;\n } else {\n let u = !1;\n e[i] === \"/\" && (u = !0, i++);\n let o = \"\";\n for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n o += e[i];\n if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n let f;\n return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n }\n const a = xe(e, i);\n if (a === !1)\n return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n let l = a.value;\n if (i = a.index, l[l.length - 1] === \"/\") {\n const f = i - l.length;\n l = l.substring(0, l.length - 1);\n const c = H(l, t);\n if (c === !0)\n s = !0;\n else\n return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n } else if (u)\n if (a.tagClosed) {\n if (l.trim().length > 0)\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n {\n const f = r.pop();\n if (o !== f.tagName) {\n let c = w(e, f.tagStartPos);\n return p(\n \"InvalidTag\",\n \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n w(e, d)\n );\n }\n r.length == 0 && (n = !0);\n }\n } else\n return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n else {\n const f = H(l, t);\n if (f !== !0)\n return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n if (n === !0)\n return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n }\n for (i++; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"!\") {\n i++, i = z(e, i);\n continue;\n } else if (e[i + 1] === \"?\") {\n if (i = G(e, ++i), i.err)\n return i;\n } else\n break;\n else if (e[i] === \"&\") {\n const f = Ve(e, i);\n if (f == -1)\n return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n i = f;\n } else if (n === !0 && !U(e[i]))\n return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n e[i] === \"<\" && i--;\n }\n } else {\n if (U(e[i]))\n continue;\n return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n }\n if (s) {\n if (r.length == 1)\n return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n if (r.length > 0)\n return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n } else\n return p(\"InvalidXml\", \"Start tag expected.\", 1);\n return !0;\n};\nfunction U(e) {\n return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction G(e, t) {\n const r = t;\n for (; t < e.length; t++)\n if (e[t] == \"?\" || e[t] == \" \") {\n const s = e.substr(r, t - r);\n if (t > 5 && s === \"xml\")\n return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n if (e[t] == \"?\" && e[t + 1] == \">\") {\n t++;\n break;\n } else\n continue;\n }\n return t;\n}\nfunction z(e, t) {\n if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n for (t += 3; t < e.length; t++)\n if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n let r = 1;\n for (t += 8; t < e.length; t++)\n if (e[t] === \"<\")\n r++;\n else if (e[t] === \">\" && (r--, r === 0))\n break;\n } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n for (t += 8; t < e.length; t++)\n if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n t += 2;\n break;\n }\n }\n return t;\n}\nconst Ce = '\"', Pe = \"'\";\nfunction xe(e, t) {\n let r = \"\", s = \"\", n = !1;\n for (; t < e.length; t++) {\n if (e[t] === Ce || e[t] === Pe)\n s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n else if (e[t] === \">\" && s === \"\") {\n n = !0;\n break;\n }\n r += e[t];\n }\n return s !== \"\" ? !1 : {\n value: r,\n index: t,\n tagClosed: n\n };\n}\nconst $e = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction H(e, t) {\n const r = M.getAllMatches(e, $e), s = {};\n for (let n = 0; n < r.length; n++) {\n if (r[n][1].length === 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n if (r[n][3] !== void 0 && r[n][4] === void 0)\n return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n const i = r[n][2];\n if (!Le(i))\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n if (!s.hasOwnProperty(i))\n s[i] = 1;\n else\n return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n }\n return !0;\n}\nfunction Fe(e, t) {\n let r = /\\d/;\n for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n if (e[t] === \";\")\n return t;\n if (!e[t].match(r))\n break;\n }\n return -1;\n}\nfunction Ve(e, t) {\n if (t++, e[t] === \";\")\n return -1;\n if (e[t] === \"#\")\n return t++, Fe(e, t);\n let r = 0;\n for (; t < e.length; t++, r++)\n if (!(e[t].match(/\\w/) && r < 20)) {\n if (e[t] === \";\")\n break;\n return -1;\n }\n return t;\n}\nfunction p(e, t, r) {\n return {\n err: {\n code: e,\n msg: t,\n line: r.line || r,\n col: r.col\n }\n };\n}\nfunction Le(e) {\n return M.isName(e);\n}\nfunction Re(e) {\n return M.isName(e);\n}\nfunction w(e, t) {\n const r = e.substring(0, t).split(/\\r?\\n/);\n return {\n line: r.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: r[r.length - 1].length + 1\n };\n}\nfunction v(e) {\n return e.startIndex + e[1].length;\n}\nvar k = {};\nconst re = {\n preserveOrder: !1,\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n removeNSPrefix: !1,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: !1,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: !0,\n parseAttributeValue: !1,\n trimValues: !0,\n //Trim string values of tag and attributes\n cdataPropName: !1,\n numberParseOptions: {\n hex: !0,\n leadingZeros: !0,\n eNotation: !0\n },\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: !1,\n isArray: () => !1,\n commentPropName: !1,\n unpairedTags: [],\n processEntities: !0,\n htmlEntities: !1,\n ignoreDeclaration: !1,\n ignorePiTags: !1,\n transformTagName: !1,\n transformAttributeName: !1,\n updateTag: function(e, t, r) {\n return e;\n }\n // skipEmptyListItem: false\n}, Se = function(e) {\n return Object.assign({}, re, e);\n};\nk.buildOptions = Se;\nk.defaultOptions = re;\nclass Me {\n constructor(t) {\n this.tagname = t, this.child = [], this[\":@\"] = {};\n }\n add(t, r) {\n t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n }\n addChild(t) {\n t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n }\n}\nvar ke = Me;\nconst Be = O;\nfunction qe(e, t) {\n const r = {};\n if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n t = t + 9;\n let s = 1, n = !1, i = !1, d = \"\";\n for (; t < e.length; t++)\n if (e[t] === \"<\" && !i) {\n if (n && Ge(e, t))\n t += 7, [entityName, val, t] = Xe(e, t + 1), val.indexOf(\"&\") === -1 && (r[We(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n });\n else if (n && ze(e, t))\n t += 8;\n else if (n && He(e, t))\n t += 8;\n else if (n && Ke(e, t))\n t += 9;\n else if (Ue)\n i = !0;\n else\n throw new Error(\"Invalid DOCTYPE\");\n s++, d = \"\";\n } else if (e[t] === \">\") {\n if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n break;\n } else\n e[t] === \"[\" ? n = !0 : d += e[t];\n if (s !== 0)\n throw new Error(\"Unclosed DOCTYPE\");\n } else\n throw new Error(\"Invalid Tag instead of DOCTYPE\");\n return { entities: r, i: t };\n}\nfunction Xe(e, t) {\n let r = \"\";\n for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n r += e[t];\n if (r = r.trim(), r.indexOf(\" \") !== -1)\n throw new Error(\"External entites are not supported\");\n const s = e[t++];\n let n = \"\";\n for (; t < e.length && e[t] !== s; t++)\n n += e[t];\n return [r, n, t];\n}\nfunction Ue(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction Ge(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction ze(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction He(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction We(e) {\n if (Be.isName(e))\n return e;\n throw new Error(`Invalid entity name ${e}`);\n}\nvar Ze = qe;\nconst je = /^[-+]?0x[a-fA-F0-9]+$/, Ye = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Je = {\n hex: !0,\n leadingZeros: !0,\n decimalPoint: \".\",\n eNotation: !0\n //skipLike: /regex/\n};\nfunction Qe(e, t = {}) {\n if (t = Object.assign({}, Je, t), !e || typeof e != \"string\")\n return e;\n let r = e.trim();\n if (t.skipLike !== void 0 && t.skipLike.test(r))\n return e;\n if (t.hex && je.test(r))\n return Number.parseInt(r, 16);\n {\n const s = Ye.exec(r);\n if (s) {\n const n = s[1], i = s[2];\n let d = De(s[3]);\n const u = s[4] || s[6];\n if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n return e;\n if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n return e;\n {\n const o = Number(r), a = \"\" + o;\n return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n }\n } else\n return e;\n }\n}\nfunction De(e) {\n return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar et = Qe;\nconst B = O, T = ke, tt = Ze, rt = et;\n\"<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)\".replace(/NAME/g, B.nameRegexp);\nlet nt = class {\n constructor(t) {\n this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n space: { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n pound: { regex: /&(pound|#163);/g, val: \"£\" },\n yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n reg: { regex: /&(reg|#174);/g, val: \"®\" },\n inr: { regex: /&(inr|#8377);/g, val: \"₹\" }\n }, this.addExternalEntities = it, this.parseXml = at, this.parseTextData = st, this.resolveNameSpace = ot, this.buildAttributesMap = dt, this.isItStopNode = ht, this.replaceEntitiesValue = ft, this.readStopNodeData = gt, this.saveTextToParentTag = ct, this.addChild = lt;\n }\n};\nfunction it(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n this.lastEntities[s] = {\n regex: new RegExp(\"&\" + s + \";\", \"g\"),\n val: e[s]\n };\n }\n}\nfunction st(e, t, r, s, n, i, d) {\n if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n d || (e = this.replaceEntitiesValue(e));\n const u = this.options.tagValueProcessor(t, e, r, n, i);\n return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n }\n}\nfunction ot(e) {\n if (this.options.removeNSPrefix) {\n const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n if (t[0] === \"xmlns\")\n return \"\";\n t.length === 2 && (e = r + t[1]);\n }\n return e;\n}\nconst ut = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction dt(e, t, r) {\n if (!this.options.ignoreAttributes && typeof e == \"string\") {\n const s = B.getAllMatches(e, ut), n = s.length, i = {};\n for (let d = 0; d < n; d++) {\n const u = this.resolveNameSpace(s[d][1]);\n let o = s[d][4], a = this.options.attributeNamePrefix + u;\n if (u.length)\n if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n const l = this.options.attributeValueProcessor(u, o, t);\n l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n o,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n } else\n this.options.allowBooleanAttributes && (i[a] = !0);\n }\n if (!Object.keys(i).length)\n return;\n if (this.options.attributesGroupName) {\n const d = {};\n return d[this.options.attributesGroupName] = i, d;\n }\n return i;\n }\n}\nconst at = function(e) {\n e = e.replace(/\\r\\n?/g, `\n`);\n const t = new T(\"!xml\");\n let r = t, s = \"\", n = \"\";\n for (let i = 0; i < e.length; i++)\n if (e[i] === \"<\")\n if (e[i + 1] === \"/\") {\n const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n let o = e.substring(i + 2, u).trim();\n if (this.options.removeNSPrefix) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1));\n }\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n const a = n.substring(n.lastIndexOf(\".\") + 1);\n if (o && this.options.unpairedTags.indexOf(o) !== -1)\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n let l = 0;\n a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n } else if (e[i + 1] === \"?\") {\n let u = x(e, i, !1, \"?>\");\n if (!u)\n throw new Error(\"Pi Tag is not closed.\");\n if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n const o = new T(u.tagName);\n o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n }\n i = u.closeIndex + 1;\n } else if (e.substr(i + 1, 3) === \"!--\") {\n const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const o = e.substring(i + 4, u - 2);\n s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n }\n i = u;\n } else if (e.substr(i + 1, 2) === \"!D\") {\n const u = tt(e, i);\n this.docTypeEntities = u.entities, i = u.i;\n } else if (e.substr(i + 1, 2) === \"![\") {\n const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n if (s = this.saveTextToParentTag(s, r, n), this.options.cdataPropName)\n r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]);\n else {\n let a = this.parseTextData(o, r.tagname, n, !0, !1, !0);\n a == null && (a = \"\"), r.add(this.options.textNodeName, a);\n }\n i = u + 2;\n } else {\n let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n const a = u.rawTagName;\n let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n const g = r;\n if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n let h = \"\";\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n i = u.closeIndex;\n else if (this.options.unpairedTags.indexOf(o) !== -1)\n i = u.closeIndex;\n else {\n const E = this.readStopNodeData(e, a, c + 1);\n if (!E)\n throw new Error(`Unexpected end of ${a}`);\n i = E.i, h = E.tagContent;\n }\n const _ = new T(o);\n o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n } else {\n if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n const h = new T(o);\n o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n } else {\n const h = new T(o);\n this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n }\n s = \"\", i = c;\n }\n }\n else\n s += e[i];\n return t.child;\n};\nfunction lt(e, t, r) {\n const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ft = function(e) {\n if (this.options.processEntities) {\n for (let t in this.docTypeEntities) {\n const r = this.docTypeEntities[t];\n e = e.replace(r.regx, r.val);\n }\n for (let t in this.lastEntities) {\n const r = this.lastEntities[t];\n e = e.replace(r.regex, r.val);\n }\n if (this.options.htmlEntities)\n for (let t in this.htmlEntities) {\n const r = this.htmlEntities[t];\n e = e.replace(r.regex, r.val);\n }\n e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return e;\n};\nfunction ct(e, t, r, s) {\n return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n e,\n t.tagname,\n r,\n !1,\n t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n s\n ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction ht(e, t, r) {\n const s = \"*.\" + r;\n for (const n in e) {\n const i = e[n];\n if (s === i || t === i)\n return !0;\n }\n return !1;\n}\nfunction pt(e, t, r = \">\") {\n let s, n = \"\";\n for (let i = t; i < e.length; i++) {\n let d = e[i];\n if (s)\n d === s && (s = \"\");\n else if (d === '\"' || d === \"'\")\n s = d;\n else if (d === r[0])\n if (r[1]) {\n if (e[i + 1] === r[1])\n return {\n data: n,\n index: i\n };\n } else\n return {\n data: n,\n index: i\n };\n else\n d === \"\t\" && (d = \" \");\n n += d;\n }\n}\nfunction y(e, t, r, s) {\n const n = e.indexOf(t, r);\n if (n === -1)\n throw new Error(s);\n return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n const n = pt(e, t + 1, s);\n if (!n)\n return;\n let i = n.data;\n const d = n.index, u = i.search(/\\s/);\n let o = i, a = !0;\n u !== -1 && (o = i.substr(0, u).replace(/\\s\\s*$/, \"\"), i = i.substr(u + 1));\n const l = o;\n if (r) {\n const f = o.indexOf(\":\");\n f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n }\n return {\n tagName: o,\n tagExp: i,\n closeIndex: d,\n attrExpPresent: a,\n rawTagName: l\n };\n}\nfunction gt(e, t, r) {\n const s = r;\n let n = 1;\n for (; r < e.length; r++)\n if (e[r] === \"<\")\n if (e[r + 1] === \"/\") {\n const i = y(e, \">\", r, `${t} is not closed`);\n if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n return {\n tagContent: e.substring(s, r),\n i\n };\n r = i;\n } else if (e[r + 1] === \"?\")\n r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 3) === \"!--\")\n r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n else if (e.substr(r + 1, 2) === \"![\")\n r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n else {\n const i = x(e, r, \">\");\n i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n }\n}\nfunction $(e, t, r) {\n if (t && typeof e == \"string\") {\n const s = e.trim();\n return s === \"true\" ? !0 : s === \"false\" ? !1 : rt(e, r);\n } else\n return B.isExist(e) ? e : \"\";\n}\nvar wt = nt, ne = {};\nfunction mt(e, t) {\n return ie(e, t);\n}\nfunction ie(e, t, r) {\n let s;\n const n = {};\n for (let i = 0; i < e.length; i++) {\n const d = e[i], u = Nt(d);\n let o = \"\";\n if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n s === void 0 ? s = d[u] : s += \"\" + d[u];\n else {\n if (u === void 0)\n continue;\n if (d[u]) {\n let a = ie(d[u], t, o);\n const l = bt(a, t);\n d[\":@\"] ? Et(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n }\n }\n }\n return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Nt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (s !== \":@\")\n return s;\n }\n}\nfunction Et(e, t, r, s) {\n if (t) {\n const n = Object.keys(t), i = n.length;\n for (let d = 0; d < i; d++) {\n const u = n[d];\n s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n }\n }\n}\nfunction bt(e, t) {\n const { textNodeName: r } = t, s = Object.keys(e).length;\n return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = mt;\nconst { buildOptions: yt } = k, _t = wt, { prettify: vt } = ne, Tt = S;\nlet It = class {\n constructor(t) {\n this.externalEntities = {}, this.options = yt(t);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(t, r) {\n if (typeof t != \"string\")\n if (t.toString)\n t = t.toString();\n else\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n if (r) {\n r === !0 && (r = {});\n const i = Tt.validate(t, r);\n if (i !== !0)\n throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n }\n const s = new _t(this.options);\n s.addExternalEntities(this.externalEntities);\n const n = s.parseXml(t);\n return this.options.preserveOrder || n === void 0 ? n : vt(n, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(t, r) {\n if (r.indexOf(\"&\") !== -1)\n throw new Error(\"Entity value can't have '&'\");\n if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\");\n if (r === \"&\")\n throw new Error(\"An entity with value '&' is not permitted\");\n this.externalEntities[t] = r;\n }\n};\nvar At = It;\nconst Ot = `\n`;\nfunction Ct(e, t) {\n let r = \"\";\n return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n let n = \"\", i = !1;\n for (let d = 0; d < e.length; d++) {\n const u = e[d], o = Pt(u);\n if (o === void 0)\n continue;\n let a = \"\";\n if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n let h = u[o];\n xt(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n continue;\n } else if (o === t.cdataPropName) {\n i && (n += s), n += ``, i = !1;\n continue;\n } else if (o === t.commentPropName) {\n n += s + ``, i = !0;\n continue;\n } else if (o[0] === \"?\") {\n const h = K(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n let E = u[o][0][t.textNodeName];\n E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n continue;\n }\n let l = s;\n l !== \"\" && (l += t.indentBy);\n const f = K(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"`), i = !0;\n }\n return n;\n}\nfunction Pt(e) {\n const t = Object.keys(e);\n for (let r = 0; r < t.length; r++) {\n const s = t[r];\n if (e.hasOwnProperty(s) && s !== \":@\")\n return s;\n }\n}\nfunction K(e, t) {\n let r = \"\";\n if (e && !t.ignoreAttributes)\n for (let s in e) {\n if (!e.hasOwnProperty(s))\n continue;\n let n = t.attributeValueProcessor(s, e[s]);\n n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n }\n return r;\n}\nfunction xt(e, t) {\n e = e.substr(0, e.length - t.textNodeName.length - 1);\n let r = e.substr(e.lastIndexOf(\".\") + 1);\n for (let s in t.stopNodes)\n if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n return !0;\n return !1;\n}\nfunction oe(e, t) {\n if (e && e.length > 0 && t.processEntities)\n for (let r = 0; r < t.entities.length; r++) {\n const s = t.entities[r];\n e = e.replace(s.regex, s.val);\n }\n return e;\n}\nvar $t = Ct;\nconst Ft = $t, Vt = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: !1,\n textNodeName: \"#text\",\n ignoreAttributes: !0,\n cdataPropName: !1,\n format: !1,\n indentBy: \" \",\n suppressEmptyNode: !1,\n suppressUnpairedNode: !0,\n suppressBooleanAttributes: !0,\n tagValueProcessor: function(e, t) {\n return t;\n },\n attributeValueProcessor: function(e, t) {\n return t;\n },\n preserveOrder: !1,\n commentPropName: !1,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: !0,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: !1\n};\nfunction b(e) {\n this.options = Object.assign({}, Vt, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n return !1;\n } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = St), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n return \"\";\n }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n return this.options.preserveOrder ? Ft(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n [this.options.arrayNodeName]: e\n }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n let r = \"\", s = \"\";\n for (let n in e)\n if (Object.prototype.hasOwnProperty.call(e, n))\n if (typeof e[n] > \"u\")\n this.isAttribute(n) && (s += \"\");\n else if (e[n] === null)\n this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n else if (e[n] instanceof Date)\n s += this.buildTextValNode(e[n], n, \"\", t);\n else if (typeof e[n] != \"object\") {\n const i = this.isAttribute(n);\n if (i)\n r += this.buildAttrPairStr(i, \"\" + e[n]);\n else if (n === this.options.textNodeName) {\n let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n s += this.replaceEntitiesValue(d);\n } else\n s += this.buildTextValNode(e[n], n, \"\", t);\n } else if (Array.isArray(e[n])) {\n const i = e[n].length;\n let d = \"\";\n for (let u = 0; u < i; u++) {\n const o = e[n][u];\n typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n }\n this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n const i = Object.keys(e[n]), d = i.length;\n for (let u = 0; u < d; u++)\n r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n } else\n s += this.processTextOrObjNode(e[n], n, t);\n return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n const s = this.j2x(e, r + 1);\n return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n if (e === \"\")\n return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n {\n let n = \"\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n }\n};\nb.prototype.closeTag = function(e) {\n let t = \"\";\n return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `>` + this.newLine;\n if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n return this.indentate(s) + `` + this.newLine;\n if (t[0] === \"?\")\n return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n {\n let n = this.options.tagValueProcessor(t, e);\n return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \" 0 && this.options.processEntities)\n for (let t = 0; t < this.options.entities.length; t++) {\n const r = this.options.entities[t];\n e = e.replace(r.regex, r.val);\n }\n return e;\n};\nfunction Rt(e) {\n return this.options.indentBy.repeat(e);\n}\nfunction St(e) {\n return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar Mt = b;\nconst kt = S, Bt = At, qt = Mt;\nvar W = {\n XMLParser: Bt,\n XMLValidator: kt,\n XMLBuilder: qt\n};\nfunction Xt(e) {\n if (typeof e != \"string\")\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n if (e = e.trim(), e.length === 0 || W.XMLValidator.validate(e) !== !0)\n return !1;\n let t;\n const r = new W.XMLParser();\n try {\n t = r.parse(e);\n } catch {\n return !1;\n }\n return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nclass cr {\n _view;\n constructor(t) {\n Ut(t), this._view = t;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(t) {\n this._view.icon = t;\n }\n get order() {\n return this._view.order;\n }\n set order(t) {\n this._view.order = t;\n }\n get params() {\n return this._view.params;\n }\n set params(t) {\n this._view.params = t;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(t) {\n this._view.expanded = t;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n}\nconst Ut = function(e) {\n if (!e.id || typeof e.id != \"string\")\n throw new Error(\"View id is required and must be a string\");\n if (!e.name || typeof e.name != \"string\")\n throw new Error(\"View name is required and must be a string\");\n if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n throw new Error(\"View caption is required for top-level views and must be a string\");\n if (!e.getContents || typeof e.getContents != \"function\")\n throw new Error(\"View getContents is required and must be a function\");\n if (!e.icon || typeof e.icon != \"string\" || !Xt(e.icon))\n throw new Error(\"View icon is required and must be a valid svg string\");\n if (!(\"order\" in e) || typeof e.order != \"number\")\n throw new Error(\"View order is required and must be a number\");\n if (e.columns && e.columns.forEach((t) => {\n if (!(t instanceof Ie))\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }), e.emptyView && typeof e.emptyView != \"function\")\n throw new Error(\"View emptyView must be a function\");\n if (e.parent && typeof e.parent != \"string\")\n throw new Error(\"View parent must be a string\");\n if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n throw new Error(\"View sticky must be a boolean\");\n if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n throw new Error(\"View expanded must be a boolean\");\n if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n throw new Error(\"View defaultSortKey must be a string\");\n return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst \n *\n * @author Christoph Wurst \n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nconst hr = function(e) {\n return F().registerEntry(e);\n}, pr = function(e) {\n return F().unregisterEntry(e);\n}, gr = function(e) {\n return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n Ie as Column,\n Z as DefaultType,\n ye as File,\n Qt as FileAction,\n R as FileType,\n _e as Folder,\n tr as Header,\n Te as Navigation,\n D as Node,\n Q as NodeStatus,\n N as Permission,\n cr as View,\n hr as addNewFileMenuEntry,\n ur as davGetClient,\n sr as davGetDefaultPropfind,\n Ee as davGetFavoritesReport,\n or as davGetRecentSearch,\n be as davParsePermissions,\n te as davRemoteURL,\n ve as davResultToNode,\n ee as davRootPath,\n Y as defaultDavNamespaces,\n j as defaultDavProperties,\n Yt as formatFileSize,\n L as getDavNameSpaces,\n V as getDavProperties,\n dr as getFavoriteNodes,\n er as getFileActions,\n nr as getFileListHeaders,\n ar as getNavigation,\n gr as getNewFileMenuEntries,\n Jt as parseFileSize,\n ir as registerDavProperty,\n Dt as registerFileAction,\n rr as registerFileListHeaders,\n pr as removeNewFileMenuEntry\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"930a9f0a458cd206d9d1\",\"7418\":\"c563724cb8f8ded85c20\",\"8351\":\"8ba037e94aafca61870f\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(40491)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","installed","t","enabled","disabled","updates","featured","supported","getLoggerBuilder","setApp","detectUser","build","name","beforeMount","document","getElementById","$store","commit","JSON","parse","dataset","server","_c","this","_self","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","castQueryParamValue","value","String","parseQuery","query","res","trim","split","forEach","param","parts","shift","val","length","join","undefined","Array","isArray","push","stringifyQuery","obj","keys","map","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","options","clone","e","route","meta","path","hash","params","fullPath","getFullPath","matched","formatMatch","START","unshift","parent","ref","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","_isBeingDestroyed","View","functional","props","type","default","render","_","children","data","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","current","hook","prepatch","vnode","componentInstance","init","propsToPass","config","resolveProps","attrs","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","cleanPath","isarray","arr","prototype","call","pathToRegexp_1","pathToRegexp","RegExp","groups","source","match","prefix","delimiter","optional","repeat","partial","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","tokens","index","defaultDelimiter","exec","m","escaped","offset","slice","next","capture","group","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","matches","opts","pretty","token","TypeError","stringify","j","test","re","sensitive","strict","end","endsWithDelimiter","compile","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","params$1","rawPath","parsedPath","hashIndex","indexOf","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","_Vue","noop","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","this$1$1","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","target","queryIncludes","isIncludedRoute","handler","guardEvent","on","click","class","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","findAnchor","$slots","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","splice","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","hasOwnProperty","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","catch","saveScrollPosition","pageXOffset","y","pageYOffset","isValidPosition","isNumber","normalizePosition","v","hashStartsWithNumberRE","isObject","selector","el","querySelector","docRect","documentElement","getBoundingClientRect","elRect","left","top","getElementPosition","style","scrollTo","ua","supportsPushState","navigator","userAgent","pushState","url","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationCancelledError","createRouterError","message","error","Error","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","flatMapComponents","flatten","concat","apply","hasSymbol","Symbol","toStringTag","once","called","args","arguments","History","baseEl","normalizeBase","pending","ready","readyCbs","readyErrorCbs","errorCbs","listeners","extractGuards","records","bind","reverse","guards","def","guard","extractGuard","bindGuard","listen","onReady","errorCb","onError","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","console","lastRouteIndex","lastCurrentIndex","max","Math","updated","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","cid","resolvedDef","__esModule","resolved","reject","reason","msg","comp","iterator","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","teardown","cleanupListener","HTML5History","_startLocation","getLocation","__proto__","constructor","expectScroll","supportsScroll","handleRoutingEvent","go","n","fromRoute","getCurrentLocation","pathname","pathLowerCase","toLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","prototypeAccessors","configurable","get","$once","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","Promise","back","forward","getMatchedComponents","createHref","normalizedTo","defineProperties","VueRouter$1","list","install","Vue","isDef","registerInstance","callVal","$options","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","destroyed","defineProperty","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","version","START_LOCATION","use","sanitize","requireAdmin","confirmPassword","axios","post","put","delete","orderGroups","orderBy","usercount","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","usersObj","existingUsers","users","_ref","newUsers","values","_ref2","includes","usersOffset","usersLimit","updateDisabledUsers","_usersObj","disabledUsersOffset","disabledUsersLimit","setPasswordPolicyMinLength","minPasswordLength","initGroups","_ref3","userCount","assign","addGroup","_ref4","gid","displayName","find","renameGroup","_ref5","groupIndex","findIndex","groupSearch","updatedGroup","removeGroup","addUserGroup","_ref6","userid","user","removeUserGroup","_ref7","addUserSubAdmin","_ref8","subadmin","removeUserSubAdmin","_ref9","deleteUser","userIndex","actionType","addUserData","response","ocs","enableDisableUser","_ref10","updateUserCounts","_ref11","disabledGroup","userGroup","warn","logger","setUserData","_ref12","humanValue","parseFileSize","resetUsers","setShowConfig","_ref13","showConfig","CancelToken","searchRequestCancelSource","showStoragePath","showUserBackend","showLastLogin","showNewUserForm","showLanguages","getters","getUsers","getGroups","getSubadminGroups","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","actions","searchUsers","context","_ref14","limit","api","generateOcsUrl","isCancel","getUser","userId","_ref15","cancel","cancelToken","usersCount","getDisabledUsers","_ref16","_ref17","limitParam","getUsersFromList","_ref18","getUsersFromGroup","_ref19","groupid","groupId","getCapabilities","password_policy","minLength","_ref20","_ref21","_ref22","_ref23","_ref24","wipeUserDevices","addUser","_ref25","_ref26","dispatch","password","email","quota","language","manager","_ref27","userStatus","_ref28","allowedEmpty","sendWelcomeMail","APPS_API_FAILURE","showError","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","_id","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","updateApp","update","resetApps","reset","startLoading","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","Vuex","API_FAILURE","Store","modules","settings","oc","process","Users","Apps","Router","baseTitle","title","selectedGroup","async","store","metaTitle","heading","headingEl","textContent","setPageHeading","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","OC","requestToken","OCA","oc_userconfig","App","$mount","cloneRoute","exports","moduleName","registerModule","namespaced","transition","currentPath","isTimeTraveling","storeUnwatch","watch","afterEachUnHook","unregisterModule","setUid","uid","C","P","Yt","r","s","Number","floor","log","min","d","pow","parseFloat","toLocaleString","Jt","toLocaleLowerCase","replaceAll","round","k","g","p","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","Y","nc","V","_nc_dav_properties","L","_nc_dav_namespaces","sr","or","R","Folder","File","J","X","URL","startsWith","mtime","crtime","mime","size","permissions","owner","attributes","root","status","Q","NEW","FAILED","LOADING","LOCKED","D","_data","_attributes","_knownDavService","set","updateMtime","Reflect","deleteProperty","Proxy","encodedSource","origin","basename","extension","dirname","isDavRessource","fileid","move","rename","ye","_e","super","ee","te","ur","headers","setHeaders","requesttoken","patch","u","method","fetch","dr","getDirectoryContents","details","includeSelf","filename","ve","be","lastmod","parseInt","getcontentlength","hasPreview","O","isExist","isEmptyObject","merge","o","f","getValue","isName","getAllMatches","startIndex","lastIndex","nameRegexp","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","defaultOptions","ne","ie","Nt","bt","Et","prettify","yt","vt","se","Pt","xt","oe","K","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","lastIndexOf","entities","Ft","format","Vt","oneListGroup","isAttribute","attrPrefixLen","St","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","arrayNodeName","buildAttrPairStr","replaceEntitiesValue","closeTag","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","Infinity","fulfilled","getter","definition","enumerable","chunkId","all","reduce","promises","globalThis","Function","prop","done","script","needAttach","scripts","getElementsByTagName","createElement","charset","timeout","setAttribute","src","onScriptComplete","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","head","appendChild","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","installedChunks","installedChunkData","promise","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/theming-admin-theming.js b/dist/theming-admin-theming.js index 14a80809cd670..66f6c71ee9203 100644 --- a/dist/theming-admin-theming.js +++ b/dist/theming-admin-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-admin-theming.js.LICENSE.txt */ -(()=>{"use strict";var e,n,a,o={22610:(e,n,a)=>{var o=a(77958),i=a(20144),r=a(43554),l=a(50323),s=a(90580),c=a(9359),d=a(93664),u=a(79753);const p=["color","logo","background","logoheader","favicon","disable-user-theming"],h={emits:["update:theming"],data:()=>({showSuccess:!1,errorMessage:""}),computed:{id(){return`admin-theming-${this.name}`}},methods:{reset(){this.showSuccess=!1,this.errorMessage=""},handleSuccess(){this.showSuccess=!0,setTimeout((()=>{this.showSuccess=!1}),2e3),p.includes(this.name)&&this.$emit("update:theming")}}},m={mixins:[h],watch:{value(e){this.localValue=e}},data(){return{localValue:this.value}},methods:{async save(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/updateStylesheet"),t=!0===this.localValue?"yes":!1===this.localValue?"no":this.localValue;try{await d.Z.post(e,{setting:this.name,value:t}),this.$emit("update:value",this.localValue),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}},async undo(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/undoChanges");try{await d.Z.post(e,{setting:this.name}),this.$emit("update:value",this.defaultValue),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}}}},g={name:"CheckboxField",components:{NcCheckboxRadioSwitch:c.Z,NcNoteCard:l.Z},mixins:[m],props:{name:{type:String,required:!0},value:{type:Boolean,required:!0},defaultValue:{type:Boolean,required:!0},displayName:{type:String,required:!0},label:{type:String,required:!0},description:{type:String,required:!0}}};var f=a(93379),v=a.n(f),A=a(7795),b=a.n(A),y=a(90569),C=a.n(y),w=a(3565),_=a.n(w),x=a(19216),S=a.n(x),N=a(44589),T=a.n(N),k=a(60515),E={};E.styleTagTransform=T(),E.setAttributes=_(),E.insert=C().bind(null,"head"),E.domAPI=b(),E.insertStyleElement=S(),v()(k.Z,E),k.Z&&k.Z.locals&&k.Z.locals;var D=a(51900);const M=(0,D.Z)(g,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcCheckboxRadioSwitch",{attrs:{type:"switch",id:e.id,checked:e.localValue},on:{"update:checked":[function(t){e.localValue=t},e.save]}},[e._v("\n\t\t\t"+e._s(e.label)+"\n\t\t")])],1),e._v(" "),t("p",{staticClass:"field__description"},[e._v(e._s(e.description))]),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"c41a3e80",null).exports;var I=a(20296),P=a(54572),O=a(42416);const L={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},F=(0,D.Z)(L,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon undo-variant-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,B={name:"PaletteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=(0,D.Z)(B,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon palette-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,j={name:"ColorPickerField",components:{NcButton:P.Z,NcColorPicker:O.N,NcNoteCard:l.Z,Undo:F,Palette:Z},mixins:[m],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},displayName:{type:String,required:!0}},methods:{debounceSave:(0,I.debounce)((async function(){await this.save()}),200)}};var U=a(40590),R={};R.styleTagTransform=T(),R.setAttributes=_(),R.insert=C().bind(null,"head"),R.domAPI=b(),R.insertStyleElement=S(),v()(U.Z,R),U.Z&&U.Z.locals&&U.Z.locals;const z=(0,D.Z)(j,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcColorPicker",{attrs:{value:e.localValue,"advanced-fields":!0,"data-admin-theming-setting-primary-color-picker":""},on:{"update:value":[function(t){e.localValue=t},e.debounceSave]}},[t("NcButton",{attrs:{type:"secondary",id:e.id},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Palette",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("theming","Change color"))+"\n\t\t\t")])],1),e._v(" "),t("div",{staticClass:"field__color-preview",attrs:{"data-admin-theming-setting-primary-color":""}}),e._v(" "),e.value!==e.defaultValue?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-primary-color-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e()],1),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"25e8f76e",null).exports;var Y=a(87604),V=a(42588),H=a(20508);const{allowedMimeTypes:X}=(0,r.j)("theming","adminThemingParameters",{}),q={name:"FileInputField",components:{Delete:V.Z,NcButton:P.Z,NcLoadingIcon:Y.Z,NcNoteCard:l.Z,Undo:F,Upload:H.Z},mixins:[h],props:{name:{type:String,required:!0},mimeName:{type:String,required:!0},mimeValue:{type:String,required:!0},defaultMimeValue:{type:String,required:!0},displayName:{type:String,required:!0},ariaLabel:{type:String,required:!0}},data(){return{showLoading:!1,acceptMime:(X[this.name]||["image/jpeg","image/png","image/gif","image/webp"]).join(",")}},computed:{showReset(){return this.mimeValue!==this.defaultMimeValue},showRemove(){if("background"===this.name){if(this.mimeValue.startsWith("image/"))return!0;if(this.mimeValue===this.defaultMimeValue)return!0}return!1}},methods:{activateLocalFilePicker(){this.reset(),this.$refs.input.value=null,this.$refs.input.click()},async onChange(e){const t=e.target.files[0],n=new FormData;n.append("key",this.name),n.append("image",t);const a=(0,u.generateUrl)("/apps/theming/ajax/uploadImage");try{this.showLoading=!0,await d.Z.post(a,n),this.showLoading=!1,this.$emit("update:mime-value",t.type),this.handleSuccess()}catch(e){this.showLoading=!1,this.errorMessage=e.response.data.data?.message}},async undo(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/undoChanges");try{await d.Z.post(e,{setting:this.mimeName}),this.$emit("update:mime-value",this.defaultMimeValue),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}},async removeBackground(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/updateStylesheet");try{await d.Z.post(e,{setting:this.mimeName,value:"backgroundColor"}),this.$emit("update:mime-value","backgroundColor"),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}}}},G=q;var $=a(58800),W={};W.styleTagTransform=T(),W.setAttributes=_(),W.insert=C().bind(null,"head"),W.domAPI=b(),W.insertStyleElement=S(),v()($.Z,W),$.Z&&$.Z.locals&&$.Z.locals;const Q=(0,D.Z)(G,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcButton",{attrs:{type:"secondary",id:e.id,"aria-label":e.ariaLabel,"data-admin-theming-setting-file-picker":""},on:{click:e.activateLocalFilePicker},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Upload",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("theming","Upload"))+"\n\t\t")]),e._v(" "),e.showReset?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-file-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e(),e._v(" "),e.showRemove?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Remove background image"),"data-admin-theming-setting-file-remove":""},on:{click:e.removeBackground},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)}):e._e(),e._v(" "),e.showLoading?t("NcLoadingIcon",{staticClass:"field__loading-icon",attrs:{size:20}}):e._e()],1),e._v(" "),"logoheader"!==e.name&&"favicon"!==e.name||e.mimeValue===e.defaultMimeValue?e._e():t("div",{staticClass:"field__preview",class:{"field__preview--logoheader":"logoheader"===e.name,"field__preview--favicon":"favicon"===e.name}}),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e(),e._v(" "),t("input",{ref:"input",attrs:{accept:e.acceptMime,type:"file"},on:{change:e.onChange}})],1)}),[],!1,null,"36abeca7",null).exports,J={name:"TextField",components:{NcTextField:a(49368).Z},mixins:[m],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},type:{type:String,required:!0},displayName:{type:String,required:!0},placeholder:{type:String,required:!0},maxlength:{type:Number,required:!0}}};var K=a(15587),ee={};ee.styleTagTransform=T(),ee.setAttributes=_(),ee.insert=C().bind(null,"head"),ee.domAPI=b(),ee.insertStyleElement=S(),v()(K.Z,ee),K.Z&&K.Z.locals&&K.Z.locals;const te=(0,D.Z)(J,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("NcTextField",{attrs:{value:e.localValue,label:e.displayName,placeholder:e.placeholder,type:e.type,maxlength:e.maxlength,spellcheck:!1,success:e.showSuccess,error:Boolean(e.errorMessage),"helper-text":e.errorMessage,"show-trailing-button":e.value!==e.defaultValue,"trailing-button-icon":"undo"},on:{"update:value":function(t){e.localValue=t},"trailing-button-click":e.undo,keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save.apply(null,arguments)},blur:e.save}})],1)}),[],!1,null,"31f08db0",null).exports;var ne=a(64024),ae=a(31352),oe=a(77723),ie=a(9568),re=a(64886);function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ce(){return ce=Object.assign||function(e){for(var t=1;t"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function we(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function _e(e,t,n,a){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Ce(e,t):Ce(e,t))||a&&e===n)return e;if(e===n)break}while(e=we(e))}return null}var xe,Se=/\s+/g;function Ne(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var a=(" "+e.className+" ").replace(Se," ").replace(" "+t+" "," ");e.className=(a+(n?" "+t:"")).replace(Se," ")}}function Te(e,t,n){var a=e&&e.style;if(a){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in a||-1!==t.indexOf("webkit")||(t="-webkit-"+t),a[t]=n+("string"==typeof n?"":"px")}}function ke(e,t){var n="";if("string"==typeof e)n=e;else do{var a=Te(e,"transform");a&&"none"!==a&&(n=a+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Ee(e,t,n){if(e){var a=e.getElementsByTagName(t),o=0,i=a.length;if(n)for(;o=i:o<=i))return a;if(a===De())break;a=Be(a,!1)}return!1}function Pe(e,t,n){for(var a=0,o=0,i=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},a=n.evt,o=function(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,["evt"]);He.pluginEvent.bind(Zt)(e,t,de({dragEl:Ge,parentEl:$e,ghostEl:We,rootEl:Qe,nextEl:Je,lastDownEl:Ke,cloneEl:et,cloneHidden:tt,dragStarted:mt,putSortable:lt,activeSortable:Zt.active,originalEvent:a,oldIndex:nt,oldDraggableIndex:ot,newIndex:at,newDraggableIndex:it,hideGhostForTarget:Ot,unhideGhostForTarget:Lt,cloneNowHidden:function(){tt=!0},cloneNowShown:function(){tt=!1},dispatchSortableEvent:function(e){qe({sortable:t,name:e,originalEvent:a})}},o))};function qe(e){!function(e){var t=e.sortable,n=e.rootEl,a=e.name,o=e.targetEl,i=e.cloneEl,r=e.toEl,l=e.fromEl,s=e.oldIndex,c=e.newIndex,d=e.oldDraggableIndex,u=e.newDraggableIndex,p=e.originalEvent,h=e.putSortable,m=e.extraEventProperties;if(t=t||n&&n[ze]){var g,f=t.options,v="on"+a.charAt(0).toUpperCase()+a.substr(1);!window.CustomEvent||pe||he?(g=document.createEvent("Event")).initEvent(a,!0,!0):g=new CustomEvent(a,{bubbles:!0,cancelable:!0}),g.to=r||n,g.from=l||n,g.item=o||n,g.clone=i,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=d,g.newDraggableIndex=u,g.originalEvent=p,g.pullMode=h?h.lastPutMode:void 0;var A=de({},m,He.getEventProperties(a,t));for(var b in A)g[b]=A[b];n&&n.dispatchEvent(g),f[v]&&f[v].call(t,g)}}(de({putSortable:lt,cloneEl:et,targetEl:Ge,rootEl:Qe,oldIndex:nt,oldDraggableIndex:ot,newIndex:at,newDraggableIndex:it},e))}var Ge,$e,We,Qe,Je,Ke,et,tt,nt,at,ot,it,rt,lt,st,ct,dt,ut,pt,ht,mt,gt,ft,vt,At,bt=!1,yt=!1,Ct=[],wt=!1,_t=!1,xt=[],St=!1,Nt=[],Tt="undefined"!=typeof document,kt=fe,Et=he||pe?"cssFloat":"float",Dt=Tt&&!ve&&!fe&&"draggable"in document.createElement("div"),Mt=function(){if(Tt){if(pe)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),It=function(e,t){var n=Te(e),a=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Pe(e,0,t),i=Pe(e,1,t),r=o&&Te(o),l=i&&Te(i),s=r&&parseInt(r.marginLeft)+parseInt(r.marginRight)+Me(o).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Me(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&r.float&&"none"!==r.float){var d="left"===r.float?"left":"right";return!i||"both"!==l.clear&&l.clear!==d?"horizontal":"vertical"}return o&&("block"===r.display||"flex"===r.display||"table"===r.display||"grid"===r.display||s>=a&&"none"===n[Et]||i&&"none"===n[Et]&&s+c>a)?"vertical":"horizontal"},Pt=function(e){function t(e,n){return function(a,o,i,r){var l=a.options.group.name&&o.options.group.name&&a.options.group.name===o.options.group.name;if(null==e&&(n||l))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(a,o,i,r),n)(a,o,i,r);var s=(n?a:o).options.group.name;return!0===e||"string"==typeof e&&e===s||e.join&&e.indexOf(s)>-1}}var n={},a=e.group;a&&"object"==le(a)||(a={name:a}),n.name=a.name,n.checkPull=t(a.pull,!0),n.checkPut=t(a.put),n.revertClone=a.revertClone,e.group=n},Ot=function(){!Mt&&We&&Te(We,"display","none")},Lt=function(){!Mt&&We&&Te(We,"display","")};Tt&&document.addEventListener("click",(function(e){if(yt)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),yt=!1,!1}),!0);var Ft=function(e){if(Ge){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,i=e.clientY,Ct.some((function(e){if(!Oe(e)){var t=Me(e),n=e[ze].options.emptyInsertThreshold,a=o>=t.left-n&&o<=t.right+n,l=i>=t.top-n&&i<=t.bottom+n;return n&&a&&l?r=e:void 0}})),r);if(t){var n={};for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[ze]._onDragOver(n)}}var o,i,r},Bt=function(e){Ge&&Ge.parentNode[ze]._isOutsideThisEl(e.target)};function Zt(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=ce({},t),e[ze]=this;var n,a,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return It(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Zt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var i in He.initializePlugins(this,e,o),o)!(i in t)&&(t[i]=o[i]);for(var r in Pt(t),this)"_"===r.charAt(0)&&"function"==typeof this[r]&&(this[r]=this[r].bind(this));this.nativeDraggable=!t.forceFallback&&Dt,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?be(e,"pointerdown",this._onTapStart):(be(e,"mousedown",this._onTapStart),be(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(be(e,"dragover",this),be(e,"dragenter",this)),Ct.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),ce(this,(a=[],{captureAnimationState:function(){a=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(e){if("none"!==Te(e,"display")&&e!==Zt.ghost){a.push({target:e,rect:Me(e)});var t=de({},a[a.length-1].rect);if(e.thisAnimationDuration){var n=ke(e,!0);n&&(t.top-=n.f,t.left-=n.e)}e.fromRect=t}}))},addAnimationState:function(e){a.push(e)},removeAnimationState:function(e){a.splice(function(e,t){for(var n in e)if(e.hasOwnProperty(n))for(var a in t)if(t.hasOwnProperty(a)&&t[a]===e[n][a])return Number(n);return-1}(a,{target:e}),1)},animateAll:function(e){var t=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof e&&e());var o=!1,i=0;a.forEach((function(e){var n=0,a=e.target,r=a.fromRect,l=Me(a),s=a.prevFromRect,c=a.prevToRect,d=e.rect,u=ke(a,!0);u&&(l.top-=u.f,l.left-=u.e),a.toRect=l,a.thisAnimationDuration&&Ze(s,l)&&!Ze(r,l)&&(d.top-l.top)/(d.left-l.left)==(r.top-l.top)/(r.left-l.left)&&(n=function(e,t,n,a){return Math.sqrt(Math.pow(t.top-e.top,2)+Math.pow(t.left-e.left,2))/Math.sqrt(Math.pow(t.top-n.top,2)+Math.pow(t.left-n.left,2))*a.animation}(d,s,c,t.options)),Ze(l,r)||(a.prevFromRect=r,a.prevToRect=l,n||(n=t.options.animation),t.animate(a,d,l,n)),n&&(o=!0,i=Math.max(i,n),clearTimeout(a.animationResetTimer),a.animationResetTimer=setTimeout((function(){a.animationTime=0,a.prevFromRect=null,a.fromRect=null,a.prevToRect=null,a.thisAnimationDuration=null}),n),a.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof e&&e()}),i):"function"==typeof e&&e(),a=[]},animate:function(e,t,n,a){if(a){Te(e,"transition",""),Te(e,"transform","");var o=ke(this.el),i=o&&o.a,r=o&&o.d,l=(t.left-n.left)/(i||1),s=(t.top-n.top)/(r||1);e.animatingX=!!l,e.animatingY=!!s,Te(e,"transform","translate3d("+l+"px,"+s+"px,0)"),function(e){e.offsetWidth}(e),Te(e,"transition","transform "+a+"ms"+(this.options.easing?" "+this.options.easing:"")),Te(e,"transform","translate3d(0,0,0)"),"number"==typeof e.animated&&clearTimeout(e.animated),e.animated=setTimeout((function(){Te(e,"transition",""),Te(e,"transform",""),e.animated=!1,e.animatingX=!1,e.animatingY=!1}),a)}}}))}function jt(e,t,n,a,o,i,r,l){var s,c,d=e[ze],u=d.options.onMove;return!window.CustomEvent||pe||he?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=t,s.from=e,s.dragged=n,s.draggedRect=a,s.related=o||t,s.relatedRect=i||Me(t),s.willInsertAfter=l,s.originalEvent=r,e.dispatchEvent(s),u&&(c=u.call(d,s,r)),c}function Ut(e){e.draggable=!1}function Rt(){St=!1}function zt(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,a=0;n--;)a+=t.charCodeAt(n);return a.toString(36)}function Yt(e){return setTimeout(e,0)}function Vt(e){return clearTimeout(e)}Zt.prototype={constructor:Zt,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(gt=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,Ge):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,a=this.options,o=a.preventOnFilter,i=e.type,r=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(r||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=a.filter;if(function(e){Nt.length=0;for(var t=e.getElementsByTagName("input"),n=t.length;n--;){var a=t[n];a.checked&&Nt.push(a)}}(n),!Ge&&!(/mousedown|pointerdown/.test(i)&&0!==e.button||a.disabled||s.isContentEditable||(l=_e(l,a.draggable,n,!1))&&l.animated||Ke===l)){if(nt=Le(l),ot=Le(l,a.draggable),"function"==typeof c){if(c.call(this,e,l,this))return qe({sortable:t,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),Xe("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(c&&(c=c.split(",").some((function(a){if(a=_e(s,a.trim(),n,!1))return qe({sortable:t,rootEl:a,name:"filter",targetEl:l,fromEl:n,toEl:n}),Xe("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());a.handle&&!_e(s,a.handle,n,!1)||this._prepareDragStart(e,r,l)}}},_prepareDragStart:function(e,t,n){var a,o=this,i=o.el,r=o.options,l=i.ownerDocument;if(n&&!Ge&&n.parentNode===i){var s=Me(n);if(Qe=i,$e=(Ge=n).parentNode,Je=Ge.nextSibling,Ke=n,rt=r.group,Zt.dragged=Ge,st={target:Ge,clientX:(t||e).clientX,clientY:(t||e).clientY},pt=st.clientX-s.left,ht=st.clientY-s.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,Ge.style["will-change"]="all",a=function(){Xe("delayEnded",o,{evt:e}),Zt.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!me&&o.nativeDraggable&&(Ge.draggable=!0),o._triggerDragStart(e,t),qe({sortable:o,name:"choose",originalEvent:e}),Ne(Ge,r.chosenClass,!0))},r.ignore.split(",").forEach((function(e){Ee(Ge,e.trim(),Ut)})),be(l,"dragover",Ft),be(l,"mousemove",Ft),be(l,"touchmove",Ft),be(l,"mouseup",o._onDrop),be(l,"touchend",o._onDrop),be(l,"touchcancel",o._onDrop),me&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Ge.draggable=!0),Xe("delayStart",this,{evt:e}),!r.delay||r.delayOnTouchOnly&&!t||this.nativeDraggable&&(he||pe))a();else{if(Zt.eventCanceled)return void this._onDrop();be(l,"mouseup",o._disableDelayedDrag),be(l,"touchend",o._disableDelayedDrag),be(l,"touchcancel",o._disableDelayedDrag),be(l,"mousemove",o._delayedDragTouchMoveHandler),be(l,"touchmove",o._delayedDragTouchMoveHandler),r.supportPointer&&be(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(a,r.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Ge&&Ut(Ge),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;ye(e,"mouseup",this._disableDelayedDrag),ye(e,"touchend",this._disableDelayedDrag),ye(e,"touchcancel",this._disableDelayedDrag),ye(e,"mousemove",this._delayedDragTouchMoveHandler),ye(e,"touchmove",this._delayedDragTouchMoveHandler),ye(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?be(document,"pointermove",this._onTouchMove):be(document,t?"touchmove":"mousemove",this._onTouchMove):(be(Ge,"dragend",this),be(Qe,"dragstart",this._onDragStart));try{document.selection?Yt((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(bt=!1,Qe&&Ge){Xe("dragStarted",this,{evt:t}),this.nativeDraggable&&be(document,"dragover",Bt);var n=this.options;!e&&Ne(Ge,n.dragClass,!1),Ne(Ge,n.ghostClass,!0),Zt.active=this,e&&this._appendGhost(),qe({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(ct){this._lastX=ct.clientX,this._lastY=ct.clientY,Ot();for(var e=document.elementFromPoint(ct.clientX,ct.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(ct.clientX,ct.clientY))!==t;)t=e;if(Ge.parentNode[ze]._isOutsideThisEl(e),t)do{if(t[ze]&&t[ze]._onDragOver({clientX:ct.clientX,clientY:ct.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break;e=t}while(t=t.parentNode);Lt()}},_onTouchMove:function(e){if(st){var t=this.options,n=t.fallbackTolerance,a=t.fallbackOffset,o=e.touches?e.touches[0]:e,i=We&&ke(We,!0),r=We&&i&&i.a,l=We&&i&&i.d,s=kt&&At&&Fe(At),c=(o.clientX-st.clientX+a.x)/(r||1)+(s?s[0]-xt[0]:0)/(r||1),d=(o.clientY-st.clientY+a.y)/(l||1)+(s?s[1]-xt[1]:0)/(l||1);if(!Zt.active&&!bt){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))a.right+10||e.clientX<=a.right&&e.clientY>a.bottom&&e.clientX>=a.left:e.clientX>a.right&&e.clientY>a.top||e.clientX<=a.right&&e.clientY>a.bottom+10}(e,o,this)&&!g.animated){if(g===Ge)return D(!1);if(g&&i===e.target&&(r=g),r&&(n=Me(r)),!1!==jt(Qe,i,Ge,t,r,n,e,!!r))return E(),i.appendChild(Ge),$e=i,M(),D(!0)}else if(r.parentNode===i){n=Me(r);var f,v,A,b=Ge.parentNode!==i,y=!function(e,t,n){var a=n?e.left:e.top,o=n?e.right:e.bottom,i=n?e.width:e.height,r=n?t.left:t.top,l=n?t.right:t.bottom,s=n?t.width:t.height;return a===r||o===l||a+i/2===r+s/2}(Ge.animated&&Ge.toRect||t,r.animated&&r.toRect||n,o),C=o?"top":"left",w=Ie(r,"top","top")||Ie(Ge,"top","top"),_=w?w.scrollTop:void 0;if(gt!==r&&(v=n[C],wt=!1,_t=!y&&l.invertSwap||b),f=function(e,t,n,a,o,i,r,l){var s=a?e.clientY:e.clientX,c=a?n.height:n.width,d=a?n.top:n.left,u=a?n.bottom:n.right,p=!1;if(!r)if(l&&vtd+c*i/2:su-vt)return-ft}else if(s>d+c*(1-o)/2&&su-c*i/2)?s>d+c/2?1:-1:0}(e,r,n,o,y?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,_t,gt===r),0!==f){var x=Le(Ge);do{x-=f,A=$e.children[x]}while(A&&("none"===Te(A,"display")||A===We))}if(0===f||A===r)return D(!1);gt=r,ft=f;var S=r.nextElementSibling,N=!1,T=jt(Qe,i,Ge,t,r,n,e,N=1===f);if(!1!==T)return 1!==T&&-1!==T||(N=1===T),St=!0,setTimeout(Rt,30),E(),N&&!S?i.appendChild(Ge):r.parentNode.insertBefore(Ge,N?S:r),w&&Ue(w,0,_-w.scrollTop),$e=Ge.parentNode,void 0===v||_t||(vt=Math.abs(v-Me(r)[C])),M(),D(!0)}if(i.contains(Ge))return D(!1)}return!1}function k(l,s){Xe(l,h,de({evt:e,isOwner:d,axis:o?"vertical":"horizontal",revert:a,dragRect:t,targetRect:n,canSort:u,fromSortable:p,target:r,completed:D,onMove:function(n,a){return jt(Qe,i,Ge,t,n,Me(n),e,a)},changed:M},s))}function E(){k("dragOverAnimationCapture"),h.captureAnimationState(),h!==p&&p.captureAnimationState()}function D(t){return k("dragOverCompleted",{insertion:t}),t&&(d?c._hideClone():c._showClone(h),h!==p&&(Ne(Ge,lt?lt.options.ghostClass:c.options.ghostClass,!1),Ne(Ge,l.ghostClass,!0)),lt!==h&&h!==Zt.active?lt=h:h===Zt.active&<&&(lt=null),p===h&&(h._ignoreWhileAnimating=r),h.animateAll((function(){k("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==p&&(p.animateAll(),p._ignoreWhileAnimating=null)),(r===Ge&&!Ge.animated||r===i&&!r.animated)&&(gt=null),l.dragoverBubble||e.rootEl||r===document||(Ge.parentNode[ze]._isOutsideThisEl(e.target),!t&&Ft(e)),!l.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function M(){at=Le(Ge),it=Le(Ge,l.draggable),qe({sortable:h,name:"change",toEl:i,newIndex:at,newDraggableIndex:it,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){ye(document,"mousemove",this._onTouchMove),ye(document,"touchmove",this._onTouchMove),ye(document,"pointermove",this._onTouchMove),ye(document,"dragover",Ft),ye(document,"mousemove",Ft),ye(document,"touchmove",Ft)},_offUpEvents:function(){var e=this.el.ownerDocument;ye(e,"mouseup",this._onDrop),ye(e,"touchend",this._onDrop),ye(e,"pointerup",this._onDrop),ye(e,"touchcancel",this._onDrop),ye(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;at=Le(Ge),it=Le(Ge,n.draggable),Xe("drop",this,{evt:e}),$e=Ge&&Ge.parentNode,at=Le(Ge),it=Le(Ge,n.draggable),Zt.eventCanceled||(bt=!1,_t=!1,wt=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Vt(this.cloneId),Vt(this._dragStartId),this.nativeDraggable&&(ye(document,"drop",this),ye(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),ge&&Te(document.body,"user-select",""),Te(Ge,"transform",""),e&&(mt&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),We&&We.parentNode&&We.parentNode.removeChild(We),(Qe===$e||lt&&"clone"!==lt.lastPutMode)&&et&&et.parentNode&&et.parentNode.removeChild(et),Ge&&(this.nativeDraggable&&ye(Ge,"dragend",this),Ut(Ge),Ge.style["will-change"]="",mt&&!bt&&Ne(Ge,lt?lt.options.ghostClass:this.options.ghostClass,!1),Ne(Ge,this.options.chosenClass,!1),qe({sortable:this,name:"unchoose",toEl:$e,newIndex:null,newDraggableIndex:null,originalEvent:e}),Qe!==$e?(at>=0&&(qe({rootEl:$e,name:"add",toEl:$e,fromEl:Qe,originalEvent:e}),qe({sortable:this,name:"remove",toEl:$e,originalEvent:e}),qe({rootEl:$e,name:"sort",toEl:$e,fromEl:Qe,originalEvent:e}),qe({sortable:this,name:"sort",toEl:$e,originalEvent:e})),lt&<.save()):at!==nt&&at>=0&&(qe({sortable:this,name:"update",toEl:$e,originalEvent:e}),qe({sortable:this,name:"sort",toEl:$e,originalEvent:e})),Zt.active&&(null!=at&&-1!==at||(at=nt,it=ot),qe({sortable:this,name:"end",toEl:$e,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){Xe("nulling",this),Qe=Ge=$e=We=Je=et=Ke=tt=st=ct=mt=at=it=nt=ot=gt=ft=lt=rt=Zt.dragged=Zt.ghost=Zt.clone=Zt.active=null,Nt.forEach((function(e){e.checked=!0})),Nt.length=dt=ut=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":Ge&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move"),e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,a=0,o=n.length,i=this.options;a!0,"move:down":()=>!0,"update:focus":()=>!0},setup(e,t){let{emit:n}=t;const a=(0,i.iH)(),o=(0,i.iH)();let r=0;return{buttonUp:a,buttonDown:o,moveUp:()=>{n("move:up"),r=1},moveDown:()=>{n("move:down"),r=-1},keepFocus:()=>{0!==r&&(1!==r&&!e.isLast||e.isFirst?(0,i.Y3)((()=>o.value.$el.focus())):(0,i.Y3)((()=>a.value.$el.focus()))),r=0},t:ae.Iu}}});var un=a(40773),pn={};pn.styleTagTransform=T(),pn.setAttributes=_(),pn.insert=C().bind(null,"head"),pn.domAPI=b(),pn.insertStyleElement=S(),v()(un.Z,pn),un.Z&&un.Z.locals&&un.Z.locals;const hn=(0,D.Z)(dn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("li",{class:{"order-selector-element":!0,"order-selector-element--disabled":e.app.default},attrs:{"data-cy-app-order-element":e.app.id},on:{focusin:function(t){return e.$emit("update:focus")}}},[t("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",role:"presentation"}},[t("image",{staticClass:"order-selector-element__icon",attrs:{preserveAspectRatio:"xMinYMin meet",x:"0",y:"0",width:"20",height:"20","xlink:href":e.app.icon}})]),e._v(" "),t("div",{staticClass:"order-selector-element__label"},[e._v("\n\t\t"+e._s(e.app.label??e.app.id)+"\n\t")]),e._v(" "),t("div",{staticClass:"order-selector-element__actions"},[t("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isFirst&&!e.app.default,expression:"!isFirst && !app.default"}],ref:"buttonUp",attrs:{"aria-label":e.t("settings","Move up"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"up",type:"tertiary-no-background"},on:{click:e.moveUp},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconArrowUp",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.isFirst||!!e.app.default,expression:"isFirst || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}}),e._v(" "),t("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isLast&&!e.app.default,expression:"!isLast && !app.default"}],ref:"buttonDown",attrs:{"aria-label":e.t("settings","Move down"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"down",type:"tertiary-no-background"},on:{click:e.moveDown},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconArrowDown",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.isLast||!!e.app.default,expression:"isLast || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}})],1)])}),[],!1,null,"081ebc45",null).exports,mn=(0,i.aZ)({name:"AppOrderSelector",components:{AppOrderSelectorElement:hn,Fragment:ln.H},props:{ariaDetails:{type:String,default:null},value:{type:Array,required:!0}},emits:{"update:value":e=>Array.isArray(e)},setup(e,t){let{emit:n}=t;const a=(0,i.iH)(null),o=(0,i.Fl)({get:()=>e.value,set:t=>{const a=[...t].sort(((e,n)=>(n.default?1:0)-(e.default?1:0)||t.indexOf(e)-t.indexOf(n)));a.some(((t,n)=>{let{id:a}=t;return a!==e.value[n].id}))?n("update:value",a):r.value+=1}}),r=(0,i.iH)(0);!function(e,t,n={}){let a;const{document:o=ie.Td$,...r}=n,l={onUpdate:e=>{!function(e,t,n){const a=(0,i.dq)(e),o=a?[...(0,re.Tn)(e)]:(0,re.Tn)(e);if(n>=0&&n{o.splice(n,0,r),a&&(e.value=o)}))}}(t,e.oldIndex,e.newIndex)}},s=()=>{const t="string"==typeof e?null==o?void 0:o.querySelector(e):(0,ie.NXq)(e);t&&void 0===a&&(a=new rn(t,{...l,...r}))},c=()=>{null==a||a.destroy(),a=void 0};(0,re.u7)(s),(0,re.IY)(c)}(a,o,{filter:".order-selector-element--disabled"});const l=(0,i.iH)([]);(0,i.ic)((()=>{l.value.forEach((e=>e.keepFocus()))}));const s=(0,i.iH)("");return{appList:o,listElement:a,moveDown:t=>{const a=t>0?e.value.slice(0,t):[];a.push(e.value[t+1]);const o=t{const a=t>1?e.value.slice(0,t-1):[];if(e.value[t-1]?.default)return;const o=[e.value[t-1]];t{s.value=(0,ae.Iu)("theming","Current selected app: {app}, position {position} of {total}",{app:e.value[t].label,position:t+1,total:e.value.length})},renderCount:r,selectorElements:l}}}),gn=mn;var fn=a(37049),vn={};vn.styleTagTransform=T(),vn.setAttributes=_(),vn.insert=C().bind(null,"head"),vn.domAPI=b(),vn.insertStyleElement=S(),v()(fn.Z,vn),fn.Z&&fn.Z.locals&&fn.Z.locals;var An=(0,D.Z)(gn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("Fragment",[t("div",{staticClass:"hidden-visually",attrs:{id:e.statusInfoId,"aria-live":"polite",role:"status"}},[e._v("\n\t\t"+e._s(e.statusInfo)+"\n\t")]),e._v(" "),t("ol",{ref:"listElement",staticClass:"order-selector",attrs:{"data-cy-app-order":""}},e._l(e.appList,(function(n,a){return t("AppOrderSelectorElement",e._g({key:`${n.id}${e.renderCount}`,ref:"selectorElements",refInFor:!0,attrs:{app:n,"aria-details":e.ariaDetails,"aria-describedby":e.statusInfoId,"is-first":0===a||!!e.appList[a-1].default,"is-last":a===e.value.length-1}},n.default?{}:{"move:up":()=>e.moveUp(a),"move:down":()=>e.moveDown(a),"update:focus":()=>e.updateStatusInfo(a)}))})),1)])}),[],!1,null,"35797e31",null);const bn=An.exports,yn=(0,i.aZ)({name:"AppMenuSection",components:{AppOrderSelector:bn,NcCheckboxRadioSwitch:c.Z,NcSelect:oe.Z,NcSettingsSection:s.Z},props:{defaultApps:{type:Array,required:!0}},emits:{"update:defaultApps":e=>Array.isArray(e)&&e.every((e=>"string"==typeof e))},setup(e,t){let{emit:n}=t;const a=(0,i.Fl)({get:()=>e.defaultApps.length>0,set:e=>{e?n("update:defaultApps",["dashboard","files"]):l.value=[]}}),o=Object.values((0,r.j)("core","apps")).map((e=>{let{id:t,name:n,icon:a}=e;return{label:n,id:t,icon:a}})),l=(0,i.Fl)({get:()=>e.defaultApps.map((e=>o.filter((t=>t.id===e))[0])),set(e){s("defaultApps",e.map((e=>e.id))).then((()=>n("update:defaultApps",e.map((e=>e.id))))).catch((()=>(0,ne.x2)((0,ae.Iu)("theming","Could not set global default apps"))))}}),s=async(e,t)=>{const n=(0,u.generateUrl)("/apps/theming/ajax/updateAppMenu");return await d.Z.put(n,{setting:e,value:t})};return{allApps:o,selectedApps:l,hasCustomDefaultApp:a,t:ae.Iu}}}),Cn=yn;var wn=a(3640),_n={};_n.styleTagTransform=T(),_n.setAttributes=_(),_n.insert=C().bind(null,"head"),_n.domAPI=b(),_n.insertStyleElement=S(),v()(wn.Z,_n),wn.Z&&wn.Z.locals&&wn.Z.locals;const xn=(0,D.Z)(Cn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcSettingsSection",{attrs:{name:e.t("theming","Navigation bar settings")}},[t("h3",[e._v(e._s(e.t("theming","Default app")))]),e._v(" "),t("p",{staticClass:"info-note"},[e._v("\n\t\t"+e._s(e.t("theming","The default app is the app that is e.g. opened after login or when the logo in the menu is clicked."))+"\n\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.hasCustomDefaultApp,type:"switch","data-cy-switch-default-app":""},on:{"update:checked":function(t){e.hasCustomDefaultApp=t}}},[e._v("\n\t\t"+e._s(e.t("theming","Use custom default app"))+"\n\t")]),e._v(" "),e.hasCustomDefaultApp?[t("h4",[e._v(e._s(e.t("theming","Global default app")))]),e._v(" "),t("NcSelect",{attrs:{"close-on-select":!1,placeholder:e.t("theming","Global default apps"),options:e.allApps,multiple:!0},model:{value:e.selectedApps,callback:function(t){e.selectedApps=t},expression:"selectedApps"}}),e._v(" "),t("h5",[e._v(e._s(e.t("theming","Default app priority")))]),e._v(" "),t("p",{staticClass:"info-note"},[e._v("\n\t\t\t"+e._s(e.t("theming","If an app is not enabled for a user, the next app with lower priority is used."))+"\n\t\t")]),e._v(" "),t("AppOrderSelector",{attrs:{value:e.selectedApps},on:{"update:value":function(t){e.selectedApps=t}}})]:e._e()],2)}),[],!1,null,"90f2e098",null).exports,{backgroundMime:Sn,canThemeIcons:Nn,color:Tn,docUrl:kn,docUrlIcons:En,faviconMime:Dn,isThemable:Mn,legalNoticeUrl:In,logoheaderMime:Pn,logoMime:On,name:Ln,notThemableErrorMessage:Fn,privacyPolicyUrl:Bn,slogan:Zn,url:jn,userThemingDisabled:Un,defaultApps:Rn}=(0,r.j)("theming","adminThemingParameters"),zn=[{name:"name",value:Ln,defaultValue:"Nextcloud",type:"text",displayName:t("theming","Name"),placeholder:t("theming","Name"),maxlength:250},{name:"url",value:jn,defaultValue:"https://nextcloud.com",type:"url",displayName:t("theming","Web link"),placeholder:"https://…",maxlength:500},{name:"slogan",value:Zn,defaultValue:t("theming","a safe home for all your data"),type:"text",displayName:t("theming","Slogan"),placeholder:t("theming","Slogan"),maxlength:500}],Yn={name:"color",value:Tn,defaultValue:"#0082c9",displayName:t("theming","Color")},Vn=[{name:"logo",mimeName:"logoMime",mimeValue:On,defaultMimeValue:"",displayName:t("theming","Logo"),ariaLabel:t("theming","Upload new logo")},{name:"background",mimeName:"backgroundMime",mimeValue:Sn,defaultMimeValue:"",displayName:t("theming","Background and login image"),ariaLabel:t("theming","Upload new background and login image")}],Hn=[{name:"imprintUrl",value:In,defaultValue:"",type:"url",displayName:t("theming","Legal notice link"),placeholder:"https://…",maxlength:500},{name:"privacyUrl",value:Bn,defaultValue:"",type:"url",displayName:t("theming","Privacy policy link"),placeholder:"https://…",maxlength:500}],Xn=[{name:"logoheader",mimeName:"logoheaderMime",mimeValue:Pn,defaultMimeValue:"",displayName:t("theming","Header logo"),ariaLabel:t("theming","Upload new header logo")},{name:"favicon",mimeName:"faviconMime",mimeValue:Dn,defaultMimeValue:"",displayName:t("theming","Favicon"),ariaLabel:t("theming","Upload new favicon")}],qn={name:"disable-user-theming",value:Un,defaultValue:!1,displayName:t("theming","User settings"),label:t("theming","Disable user theming"),description:t("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},Gn={name:"AdminTheming",components:{AppMenuSection:xn,CheckboxField:M,ColorPickerField:z,FileInputField:Q,NcNoteCard:l.Z,NcSettingsSection:s.Z,TextField:te},emits:["update:theming"],textFields:zn,data:()=>({textFields:zn,colorPickerField:Yn,fileInputFields:Vn,advancedTextFields:Hn,advancedFileInputFields:Xn,userThemingField:qn,defaultApps:Rn,canThemeIcons:Nn,docUrl:kn,docUrlIcons:En,isThemable:Mn,notThemableErrorMessage:Fn})};var $n=a(36568),Wn={};Wn.styleTagTransform=T(),Wn.setAttributes=_(),Wn.insert=C().bind(null,"head"),Wn.domAPI=b(),Wn.insertStyleElement=S(),v()($n.Z,Wn),$n.Z&&$n.Z.locals&&$n.Z.locals;const Qn=(0,D.Z)(Gn,(function(){var e=this,t=e._self._c;return t("section",[t("NcSettingsSection",{attrs:{name:e.t("theming","Theming"),description:e.t("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),"doc-url":e.docUrl,"data-admin-theming-settings":""}},[t("div",{staticClass:"admin-theming"},[e.isThemable?e._e():t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.notThemableErrorMessage))])]),e._v(" "),e._l(e.textFields,(function(n){return t("TextField",{key:n.name,attrs:{"data-admin-theming-setting-field":n.name,"default-value":n.defaultValue,"display-name":n.displayName,maxlength:n.maxlength,name:n.name,placeholder:n.placeholder,type:n.type,value:n.value},on:{"update:value":function(t){return e.$set(n,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("ColorPickerField",{attrs:{name:e.colorPickerField.name,"default-value":e.colorPickerField.defaultValue,"display-name":e.colorPickerField.displayName,value:e.colorPickerField.value},on:{"update:value":function(t){return e.$set(e.colorPickerField,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e._l(e.fileInputFields,(function(n){return t("FileInputField",{key:n.name,attrs:{"aria-label":n.ariaLabel,"data-admin-theming-setting-file":n.name,"default-mime-value":n.defaultMimeValue,"display-name":n.displayName,"mime-name":n.mimeName,"mime-value":n.mimeValue,name:n.name},on:{"update:mimeValue":function(t){return e.$set(n,"mimeValue",t)},"update:mime-value":function(t){return e.$set(n,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("div",{staticClass:"admin-theming__preview",attrs:{"data-admin-theming-preview":""}},[t("div",{staticClass:"admin-theming__preview-logo",attrs:{"data-admin-theming-preview-logo":""}})])],2)]),e._v(" "),t("NcSettingsSection",{attrs:{name:e.t("theming","Advanced options")}},[t("div",{staticClass:"admin-theming-advanced"},[e._l(e.advancedTextFields,(function(n){return t("TextField",{key:n.name,attrs:{name:n.name,value:n.value,"default-value":n.defaultValue,type:n.type,"display-name":n.displayName,placeholder:n.placeholder,maxlength:n.maxlength},on:{"update:value":function(t){return e.$set(n,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),e._l(e.advancedFileInputFields,(function(n){return t("FileInputField",{key:n.name,attrs:{name:n.name,"mime-name":n.mimeName,"mime-value":n.mimeValue,"default-mime-value":n.defaultMimeValue,"display-name":n.displayName,"aria-label":n.ariaLabel},on:{"update:mimeValue":function(t){return e.$set(n,"mimeValue",t)},"update:mime-value":function(t){return e.$set(n,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("CheckboxField",{attrs:{name:e.userThemingField.name,value:e.userThemingField.value,"default-value":e.userThemingField.defaultValue,"display-name":e.userThemingField.displayName,label:e.userThemingField.label,description:e.userThemingField.description,"data-admin-theming-setting-disable-user-theming":""},on:{"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e.canThemeIcons?e._e():t("a",{attrs:{href:e.docUrlIcons,rel:"noreferrer noopener"}},[t("em",[e._v(e._s(e.t("theming","Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.")))])])],2)]),e._v(" "),t("AppMenuSection",{attrs:{"default-apps":e.defaultApps},on:{"update:defaultApps":function(t){e.defaultApps=t},"update:default-apps":function(t){e.defaultApps=t}}})],1)}),[],!1,null,"e3cd61f0",null).exports;a.nc=btoa((0,o.IH)()),i.ZP.prototype.OC=OC,i.ZP.prototype.t=t;const Jn=new(i.ZP.extend(Qn));Jn.$mount("#admin-theming"),Jn.$on("update:theming",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const n=e.cloneNode();n.href=t.toString(),n.onload=()=>e.remove(),document.head.append(n)}))}))},36568:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i),l=n(61667),s=n.n(l),c=new URL(n(92770),n.b),d=r()(o()),u=s()(c);d.push([e.id,`.admin-theming[data-v-e3cd61f0],.admin-theming-advanced[data-v-e3cd61f0]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-e3cd61f0]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-element-default);background-image:var(--image-background-plain, var(--image-background-default))}.admin-theming__preview-logo[data-v-e3cd61f0]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(${u}))}`,"",{version:3,sources:["webpack://./apps/theming/src/AdminTheming.vue"],names:[],mappings:"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,qDAAA,CAKA,+EAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA",sourcesContent:["\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-element-default);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const p=d},37049:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".order-selector[data-v-35797e31]{width:max-content;min-width:260px}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelector.vue"],names:[],mappings:"AACA,iCACC,iBAAA,CACA,eAAA",sourcesContent:["\n.order-selector {\n\twidth: max-content;\n\tmin-width: 260px; // align with NcSelect\n}\n"],sourceRoot:""}]);const l=r},40773:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelectorElement.vue"],names:[],mappings:"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA",sourcesContent:["\n.order-selector-element {\n\t// hide default styling\n\tlist-style: none;\n\t// Align children\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\t// Spacing\n\tgap: 12px;\n\tpadding-inline: 12px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&--disabled {\n\t\tborder-color: var(--color-text-maxcontrast);\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t.order-selector-element__icon {\n\t\t\topacity: 75%;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tflex: 0 0;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 6px;\n\t}\n\n\t&__label {\n\t\tflex: 1 1;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&__placeholder {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t}\n\n\t&__icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n}\n"],sourceRoot:""}]);const l=r},3640:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,"h3[data-v-90f2e098],h4[data-v-90f2e098]{font-weight:bold}h4[data-v-90f2e098],h5[data-v-90f2e098]{margin-block-start:12px}.info-note[data-v-90f2e098]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/AppMenuSection.vue"],names:[],mappings:"AACA,wCACC,gBAAA,CAED,wCACC,uBAAA,CAGD,4BACC,mCAAA",sourcesContent:["\nh3, h4 {\n\tfont-weight: bold;\n}\nh4, h5 {\n\tmargin-block-start: 12px;\n}\n\n.info-note {\n\tcolor: var(--color-text-maxcontrast);\n}\n"],sourceRoot:""}]);const l=r},60515:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-c41a3e80]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-c41a3e80]{display:flex;gap:0 4px}.field__description[data-v-c41a3e80]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/CheckboxField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const l=r},40590:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-25e8f76e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-25e8f76e]{display:flex;gap:0 4px}.field__color-preview[data-v-25e8f76e]{width:var(--default-clickable-area);border-radius:var(--border-radius-large);background-color:var(--color-primary-default)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/ColorPickerField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,uCACC,mCAAA,CACA,wCAAA,CACA,6CAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__color-preview {\n\t\twidth: var(--default-clickable-area);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary-default);\n\t}\n}\n"],sourceRoot:""}]);const l=r},58800:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-36abeca7]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-36abeca7]{display:flex;gap:0 4px}.field__loading-icon[data-v-36abeca7]{width:44px;height:44px}.field__preview[data-v-36abeca7]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-36abeca7]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-36abeca7]{background-image:var(--image-favicon)}input[type=file][data-v-36abeca7]{display:none}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/FileInputField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]);const l=r},15587:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-31f08db0]{max-width:400px}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/TextField.vue"],names:[],mappings:"AACA,wBACC,eAAA",sourcesContent:["\n.field {\n\tmax-width: 400px;\n}\n"],sourceRoot:""}]);const l=r},92770:e=>{e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEyOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjU2IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTI4IDdjLTI1Ljg3MSAwLTQ3LjgxNyAxNy40ODUtNTQuNzEzIDQxLjIwOS01Ljk3OTUtMTIuNDYxLTE4LjY0Mi0yMS4yMDktMzMuMjg3LTIxLjIwOS0yMC4zMDQgMC0zNyAxNi42OTYtMzcgMzdzMTYuNjk2IDM3IDM3IDM3YzE0LjY0NSAwIDI3LjMwOC04Ljc0ODEgMzMuMjg3LTIxLjIwOSA2Ljg5NTcgMjMuNzI0IDI4Ljg0MiA0MS4yMDkgNTQuNzEzIDQxLjIwOXM0Ny44MTctMTcuNDg1IDU0LjcxMy00MS4yMDljNS45Nzk1IDEyLjQ2MSAxOC42NDIgMjEuMjA5IDMzLjI4NyAyMS4yMDkgMjAuMzA0IDAgMzctMTYuNjk2IDM3LTM3cy0xNi42OTYtMzctMzctMzdjLTE0LjY0NSAwLTI3LjMwOCA4Ljc0ODEtMzMuMjg3IDIxLjIwOS02Ljg5NTctMjMuNzI0LTI4Ljg0Mi00MS4yMDktNTQuNzEzLTQxLjIwOXptMCAyMmMxOS40NiAwIDM1IDE1LjU0IDM1IDM1cy0xNS41NCAzNS0zNSAzNS0zNS0xNS41NC0zNS0zNSAxNS41NC0zNSAzNS0zNXptLTg4IDIwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6bTE3NiAwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6IiBjb2xvcj0iIzAwMDAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Ii1pbmtzY2FwZS1zdHJva2U6bm9uZSIvPjwvc3ZnPgo="}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={id:e,loaded:!1,exports:{}};return o[e].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,e=[],r.O=(t,n,a,o)=>{if(!n){var i=1/0;for(d=0;d=o)&&Object.keys(r.O).every((e=>r.O[e](n[s])))?n.splice(s--,1):(l=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,a,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,n)=>(r.f[n](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v="+{4720:"67ff1816113751e83e78",6512:"930a9f0a458cd206d9d1"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},a="nextcloud:",r.l=(e,t,o,i)=>{if(n[e])n[e].push(t);else{var l,s;if(void 0!==o)for(var c=document.getElementsByTagName("script"),d=0;d{l.onerror=l.onload=null,clearTimeout(h);var o=n[e];if(delete n[e],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((e=>e(a))),t)return t(a)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=p.bind(null,l.onerror),l.onload=p.bind(null,l.onload),s&&document.head.appendChild(l)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=5544,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&!e;)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={5544:0};r.f.j=(t,n)=>{var a=r.o(e,t)?e[t]:void 0;if(0!==a)if(a)n.push(a[2]);else{var o=new Promise(((n,o)=>a=e[t]=[n,o]));n.push(a[2]=o);var i=r.p+r.u(t),l=new Error;r.l(i,(n=>{if(r.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;l.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,a[1](l)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,n)=>{var a,o,i=n[0],l=n[1],s=n[2],c=0;if(i.some((t=>0!==e[t]))){for(a in l)r.o(l,a)&&(r.m[a]=l[a]);if(s)var d=s(r)}for(t&&t(n);cr(22610)));l=r.O(l)})(); -//# sourceMappingURL=theming-admin-theming.js.map?v=9b8274b393b9a9a460a0 \ No newline at end of file +(()=>{"use strict";var e,n,a,o={36552:(e,n,a)=>{var o=a(77958),i=a(20144),r=a(43554),l=a(50323),s=a(90580),c=a(9359),d=a(93664),u=a(79753);const p=["color","logo","background","logoheader","favicon","disable-user-theming"],h={emits:["update:theming"],data:()=>({showSuccess:!1,errorMessage:""}),computed:{id(){return`admin-theming-${this.name}`}},methods:{reset(){this.showSuccess=!1,this.errorMessage=""},handleSuccess(){this.showSuccess=!0,setTimeout((()=>{this.showSuccess=!1}),2e3),p.includes(this.name)&&this.$emit("update:theming")}}},m={mixins:[h],watch:{value(e){this.localValue=e}},data(){return{localValue:this.value}},methods:{async save(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/updateStylesheet"),t=!0===this.localValue?"yes":!1===this.localValue?"no":this.localValue;try{await d.Z.post(e,{setting:this.name,value:t}),this.$emit("update:value",this.localValue),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}},async undo(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/undoChanges");try{await d.Z.post(e,{setting:this.name}),this.$emit("update:value",this.defaultValue),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}}}},g={name:"CheckboxField",components:{NcCheckboxRadioSwitch:c.Z,NcNoteCard:l.Z},mixins:[m],props:{name:{type:String,required:!0},value:{type:Boolean,required:!0},defaultValue:{type:Boolean,required:!0},displayName:{type:String,required:!0},label:{type:String,required:!0},description:{type:String,required:!0}}};var f=a(93379),v=a.n(f),A=a(7795),b=a.n(A),y=a(90569),C=a.n(y),w=a(3565),_=a.n(w),x=a(19216),S=a.n(x),N=a(44589),T=a.n(N),k=a(60515),E={};E.styleTagTransform=T(),E.setAttributes=_(),E.insert=C().bind(null,"head"),E.domAPI=b(),E.insertStyleElement=S(),v()(k.Z,E),k.Z&&k.Z.locals&&k.Z.locals;var D=a(51900);const M=(0,D.Z)(g,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcCheckboxRadioSwitch",{attrs:{type:"switch",id:e.id,checked:e.localValue},on:{"update:checked":[function(t){e.localValue=t},e.save]}},[e._v("\n\t\t\t"+e._s(e.label)+"\n\t\t")])],1),e._v(" "),t("p",{staticClass:"field__description"},[e._v(e._s(e.description))]),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"c41a3e80",null).exports;var I=a(20296),P=a(54572),O=a(42416);const L={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},F=(0,D.Z)(L,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon undo-variant-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,B={name:"PaletteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=(0,D.Z)(B,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon palette-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,j={name:"ColorPickerField",components:{NcButton:P.Z,NcColorPicker:O.N,NcNoteCard:l.Z,Undo:F,Palette:Z},mixins:[m],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},displayName:{type:String,required:!0}},methods:{debounceSave:(0,I.debounce)((async function(){await this.save()}),200)}};var U=a(40590),R={};R.styleTagTransform=T(),R.setAttributes=_(),R.insert=C().bind(null,"head"),R.domAPI=b(),R.insertStyleElement=S(),v()(U.Z,R),U.Z&&U.Z.locals&&U.Z.locals;const z=(0,D.Z)(j,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcColorPicker",{attrs:{value:e.localValue,"advanced-fields":!0,"data-admin-theming-setting-primary-color-picker":""},on:{"update:value":[function(t){e.localValue=t},e.debounceSave]}},[t("NcButton",{attrs:{type:"secondary",id:e.id},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Palette",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("theming","Change color"))+"\n\t\t\t")])],1),e._v(" "),t("div",{staticClass:"field__color-preview",attrs:{"data-admin-theming-setting-primary-color":""}}),e._v(" "),e.value!==e.defaultValue?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-primary-color-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e()],1),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"25e8f76e",null).exports;var Y=a(87604),V=a(42588),H=a(20508);const{allowedMimeTypes:X}=(0,r.j)("theming","adminThemingParameters",{}),q={name:"FileInputField",components:{Delete:V.Z,NcButton:P.Z,NcLoadingIcon:Y.Z,NcNoteCard:l.Z,Undo:F,Upload:H.Z},mixins:[h],props:{name:{type:String,required:!0},mimeName:{type:String,required:!0},mimeValue:{type:String,required:!0},defaultMimeValue:{type:String,required:!0},displayName:{type:String,required:!0},ariaLabel:{type:String,required:!0}},data(){return{showLoading:!1,acceptMime:(X[this.name]||["image/jpeg","image/png","image/gif","image/webp"]).join(",")}},computed:{showReset(){return this.mimeValue!==this.defaultMimeValue},showRemove(){if("background"===this.name){if(this.mimeValue.startsWith("image/"))return!0;if(this.mimeValue===this.defaultMimeValue)return!0}return!1}},methods:{activateLocalFilePicker(){this.reset(),this.$refs.input.value=null,this.$refs.input.click()},async onChange(e){const t=e.target.files[0],n=new FormData;n.append("key",this.name),n.append("image",t);const a=(0,u.generateUrl)("/apps/theming/ajax/uploadImage");try{this.showLoading=!0,await d.Z.post(a,n),this.showLoading=!1,this.$emit("update:mime-value",t.type),this.handleSuccess()}catch(e){this.showLoading=!1,this.errorMessage=e.response.data.data?.message}},async undo(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/undoChanges");try{await d.Z.post(e,{setting:this.mimeName}),this.$emit("update:mime-value",this.defaultMimeValue),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}},async removeBackground(){this.reset();const e=(0,u.generateUrl)("/apps/theming/ajax/updateStylesheet");try{await d.Z.post(e,{setting:this.mimeName,value:"backgroundColor"}),this.$emit("update:mime-value","backgroundColor"),this.handleSuccess()}catch(e){this.errorMessage=e.response.data.data?.message}}}},G=q;var $=a(58800),W={};W.styleTagTransform=T(),W.setAttributes=_(),W.insert=C().bind(null,"head"),W.domAPI=b(),W.insertStyleElement=S(),v()($.Z,W),$.Z&&$.Z.locals&&$.Z.locals;const Q=(0,D.Z)(G,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcButton",{attrs:{type:"secondary",id:e.id,"aria-label":e.ariaLabel,"data-admin-theming-setting-file-picker":""},on:{click:e.activateLocalFilePicker},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Upload",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("theming","Upload"))+"\n\t\t")]),e._v(" "),e.showReset?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-file-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e(),e._v(" "),e.showRemove?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Remove background image"),"data-admin-theming-setting-file-remove":""},on:{click:e.removeBackground},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)}):e._e(),e._v(" "),e.showLoading?t("NcLoadingIcon",{staticClass:"field__loading-icon",attrs:{size:20}}):e._e()],1),e._v(" "),"logoheader"!==e.name&&"favicon"!==e.name||e.mimeValue===e.defaultMimeValue?e._e():t("div",{staticClass:"field__preview",class:{"field__preview--logoheader":"logoheader"===e.name,"field__preview--favicon":"favicon"===e.name}}),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e(),e._v(" "),t("input",{ref:"input",attrs:{accept:e.acceptMime,type:"file"},on:{change:e.onChange}})],1)}),[],!1,null,"36abeca7",null).exports,J={name:"TextField",components:{NcTextField:a(49368).Z},mixins:[m],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},type:{type:String,required:!0},displayName:{type:String,required:!0},placeholder:{type:String,required:!0},maxlength:{type:Number,required:!0}}};var K=a(15587),ee={};ee.styleTagTransform=T(),ee.setAttributes=_(),ee.insert=C().bind(null,"head"),ee.domAPI=b(),ee.insertStyleElement=S(),v()(K.Z,ee),K.Z&&K.Z.locals&&K.Z.locals;const te=(0,D.Z)(J,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("NcTextField",{attrs:{value:e.localValue,label:e.displayName,placeholder:e.placeholder,type:e.type,maxlength:e.maxlength,spellcheck:!1,success:e.showSuccess,error:Boolean(e.errorMessage),"helper-text":e.errorMessage,"show-trailing-button":e.value!==e.defaultValue,"trailing-button-icon":"undo"},on:{"update:value":function(t){e.localValue=t},"trailing-button-click":e.undo,keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save.apply(null,arguments)},blur:e.save}})],1)}),[],!1,null,"31f08db0",null).exports;var ne=a(64024),ae=a(31352),oe=a(77723),ie=a(9568),re=a(64886);function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function se(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ce(){return ce=Object.assign||function(e){for(var t=1;t"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function we(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function _e(e,t,n,a){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Ce(e,t):Ce(e,t))||a&&e===n)return e;if(e===n)break}while(e=we(e))}return null}var xe,Se=/\s+/g;function Ne(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var a=(" "+e.className+" ").replace(Se," ").replace(" "+t+" "," ");e.className=(a+(n?" "+t:"")).replace(Se," ")}}function Te(e,t,n){var a=e&&e.style;if(a){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in a||-1!==t.indexOf("webkit")||(t="-webkit-"+t),a[t]=n+("string"==typeof n?"":"px")}}function ke(e,t){var n="";if("string"==typeof e)n=e;else do{var a=Te(e,"transform");a&&"none"!==a&&(n=a+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Ee(e,t,n){if(e){var a=e.getElementsByTagName(t),o=0,i=a.length;if(n)for(;o=i:o<=i))return a;if(a===De())break;a=Be(a,!1)}return!1}function Pe(e,t,n){for(var a=0,o=0,i=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},a=n.evt,o=function(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,["evt"]);He.pluginEvent.bind(Zt)(e,t,de({dragEl:Ge,parentEl:$e,ghostEl:We,rootEl:Qe,nextEl:Je,lastDownEl:Ke,cloneEl:et,cloneHidden:tt,dragStarted:mt,putSortable:lt,activeSortable:Zt.active,originalEvent:a,oldIndex:nt,oldDraggableIndex:ot,newIndex:at,newDraggableIndex:it,hideGhostForTarget:Ot,unhideGhostForTarget:Lt,cloneNowHidden:function(){tt=!0},cloneNowShown:function(){tt=!1},dispatchSortableEvent:function(e){qe({sortable:t,name:e,originalEvent:a})}},o))};function qe(e){!function(e){var t=e.sortable,n=e.rootEl,a=e.name,o=e.targetEl,i=e.cloneEl,r=e.toEl,l=e.fromEl,s=e.oldIndex,c=e.newIndex,d=e.oldDraggableIndex,u=e.newDraggableIndex,p=e.originalEvent,h=e.putSortable,m=e.extraEventProperties;if(t=t||n&&n[ze]){var g,f=t.options,v="on"+a.charAt(0).toUpperCase()+a.substr(1);!window.CustomEvent||pe||he?(g=document.createEvent("Event")).initEvent(a,!0,!0):g=new CustomEvent(a,{bubbles:!0,cancelable:!0}),g.to=r||n,g.from=l||n,g.item=o||n,g.clone=i,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=d,g.newDraggableIndex=u,g.originalEvent=p,g.pullMode=h?h.lastPutMode:void 0;var A=de({},m,He.getEventProperties(a,t));for(var b in A)g[b]=A[b];n&&n.dispatchEvent(g),f[v]&&f[v].call(t,g)}}(de({putSortable:lt,cloneEl:et,targetEl:Ge,rootEl:Qe,oldIndex:nt,oldDraggableIndex:ot,newIndex:at,newDraggableIndex:it},e))}var Ge,$e,We,Qe,Je,Ke,et,tt,nt,at,ot,it,rt,lt,st,ct,dt,ut,pt,ht,mt,gt,ft,vt,At,bt=!1,yt=!1,Ct=[],wt=!1,_t=!1,xt=[],St=!1,Nt=[],Tt="undefined"!=typeof document,kt=fe,Et=he||pe?"cssFloat":"float",Dt=Tt&&!ve&&!fe&&"draggable"in document.createElement("div"),Mt=function(){if(Tt){if(pe)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),It=function(e,t){var n=Te(e),a=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Pe(e,0,t),i=Pe(e,1,t),r=o&&Te(o),l=i&&Te(i),s=r&&parseInt(r.marginLeft)+parseInt(r.marginRight)+Me(o).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Me(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&r.float&&"none"!==r.float){var d="left"===r.float?"left":"right";return!i||"both"!==l.clear&&l.clear!==d?"horizontal":"vertical"}return o&&("block"===r.display||"flex"===r.display||"table"===r.display||"grid"===r.display||s>=a&&"none"===n[Et]||i&&"none"===n[Et]&&s+c>a)?"vertical":"horizontal"},Pt=function(e){function t(e,n){return function(a,o,i,r){var l=a.options.group.name&&o.options.group.name&&a.options.group.name===o.options.group.name;if(null==e&&(n||l))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(a,o,i,r),n)(a,o,i,r);var s=(n?a:o).options.group.name;return!0===e||"string"==typeof e&&e===s||e.join&&e.indexOf(s)>-1}}var n={},a=e.group;a&&"object"==le(a)||(a={name:a}),n.name=a.name,n.checkPull=t(a.pull,!0),n.checkPut=t(a.put),n.revertClone=a.revertClone,e.group=n},Ot=function(){!Mt&&We&&Te(We,"display","none")},Lt=function(){!Mt&&We&&Te(We,"display","")};Tt&&document.addEventListener("click",(function(e){if(yt)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),yt=!1,!1}),!0);var Ft=function(e){if(Ge){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,i=e.clientY,Ct.some((function(e){if(!Oe(e)){var t=Me(e),n=e[ze].options.emptyInsertThreshold,a=o>=t.left-n&&o<=t.right+n,l=i>=t.top-n&&i<=t.bottom+n;return n&&a&&l?r=e:void 0}})),r);if(t){var n={};for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[ze]._onDragOver(n)}}var o,i,r},Bt=function(e){Ge&&Ge.parentNode[ze]._isOutsideThisEl(e.target)};function Zt(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=ce({},t),e[ze]=this;var n,a,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return It(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Zt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var i in He.initializePlugins(this,e,o),o)!(i in t)&&(t[i]=o[i]);for(var r in Pt(t),this)"_"===r.charAt(0)&&"function"==typeof this[r]&&(this[r]=this[r].bind(this));this.nativeDraggable=!t.forceFallback&&Dt,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?be(e,"pointerdown",this._onTapStart):(be(e,"mousedown",this._onTapStart),be(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(be(e,"dragover",this),be(e,"dragenter",this)),Ct.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),ce(this,(a=[],{captureAnimationState:function(){a=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(e){if("none"!==Te(e,"display")&&e!==Zt.ghost){a.push({target:e,rect:Me(e)});var t=de({},a[a.length-1].rect);if(e.thisAnimationDuration){var n=ke(e,!0);n&&(t.top-=n.f,t.left-=n.e)}e.fromRect=t}}))},addAnimationState:function(e){a.push(e)},removeAnimationState:function(e){a.splice(function(e,t){for(var n in e)if(e.hasOwnProperty(n))for(var a in t)if(t.hasOwnProperty(a)&&t[a]===e[n][a])return Number(n);return-1}(a,{target:e}),1)},animateAll:function(e){var t=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof e&&e());var o=!1,i=0;a.forEach((function(e){var n=0,a=e.target,r=a.fromRect,l=Me(a),s=a.prevFromRect,c=a.prevToRect,d=e.rect,u=ke(a,!0);u&&(l.top-=u.f,l.left-=u.e),a.toRect=l,a.thisAnimationDuration&&Ze(s,l)&&!Ze(r,l)&&(d.top-l.top)/(d.left-l.left)==(r.top-l.top)/(r.left-l.left)&&(n=function(e,t,n,a){return Math.sqrt(Math.pow(t.top-e.top,2)+Math.pow(t.left-e.left,2))/Math.sqrt(Math.pow(t.top-n.top,2)+Math.pow(t.left-n.left,2))*a.animation}(d,s,c,t.options)),Ze(l,r)||(a.prevFromRect=r,a.prevToRect=l,n||(n=t.options.animation),t.animate(a,d,l,n)),n&&(o=!0,i=Math.max(i,n),clearTimeout(a.animationResetTimer),a.animationResetTimer=setTimeout((function(){a.animationTime=0,a.prevFromRect=null,a.fromRect=null,a.prevToRect=null,a.thisAnimationDuration=null}),n),a.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof e&&e()}),i):"function"==typeof e&&e(),a=[]},animate:function(e,t,n,a){if(a){Te(e,"transition",""),Te(e,"transform","");var o=ke(this.el),i=o&&o.a,r=o&&o.d,l=(t.left-n.left)/(i||1),s=(t.top-n.top)/(r||1);e.animatingX=!!l,e.animatingY=!!s,Te(e,"transform","translate3d("+l+"px,"+s+"px,0)"),function(e){e.offsetWidth}(e),Te(e,"transition","transform "+a+"ms"+(this.options.easing?" "+this.options.easing:"")),Te(e,"transform","translate3d(0,0,0)"),"number"==typeof e.animated&&clearTimeout(e.animated),e.animated=setTimeout((function(){Te(e,"transition",""),Te(e,"transform",""),e.animated=!1,e.animatingX=!1,e.animatingY=!1}),a)}}}))}function jt(e,t,n,a,o,i,r,l){var s,c,d=e[ze],u=d.options.onMove;return!window.CustomEvent||pe||he?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=t,s.from=e,s.dragged=n,s.draggedRect=a,s.related=o||t,s.relatedRect=i||Me(t),s.willInsertAfter=l,s.originalEvent=r,e.dispatchEvent(s),u&&(c=u.call(d,s,r)),c}function Ut(e){e.draggable=!1}function Rt(){St=!1}function zt(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,a=0;n--;)a+=t.charCodeAt(n);return a.toString(36)}function Yt(e){return setTimeout(e,0)}function Vt(e){return clearTimeout(e)}Zt.prototype={constructor:Zt,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(gt=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,Ge):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,a=this.options,o=a.preventOnFilter,i=e.type,r=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(r||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,c=a.filter;if(function(e){Nt.length=0;for(var t=e.getElementsByTagName("input"),n=t.length;n--;){var a=t[n];a.checked&&Nt.push(a)}}(n),!Ge&&!(/mousedown|pointerdown/.test(i)&&0!==e.button||a.disabled||s.isContentEditable||(l=_e(l,a.draggable,n,!1))&&l.animated||Ke===l)){if(nt=Le(l),ot=Le(l,a.draggable),"function"==typeof c){if(c.call(this,e,l,this))return qe({sortable:t,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),Xe("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(c&&(c=c.split(",").some((function(a){if(a=_e(s,a.trim(),n,!1))return qe({sortable:t,rootEl:a,name:"filter",targetEl:l,fromEl:n,toEl:n}),Xe("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());a.handle&&!_e(s,a.handle,n,!1)||this._prepareDragStart(e,r,l)}}},_prepareDragStart:function(e,t,n){var a,o=this,i=o.el,r=o.options,l=i.ownerDocument;if(n&&!Ge&&n.parentNode===i){var s=Me(n);if(Qe=i,$e=(Ge=n).parentNode,Je=Ge.nextSibling,Ke=n,rt=r.group,Zt.dragged=Ge,st={target:Ge,clientX:(t||e).clientX,clientY:(t||e).clientY},pt=st.clientX-s.left,ht=st.clientY-s.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,Ge.style["will-change"]="all",a=function(){Xe("delayEnded",o,{evt:e}),Zt.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!me&&o.nativeDraggable&&(Ge.draggable=!0),o._triggerDragStart(e,t),qe({sortable:o,name:"choose",originalEvent:e}),Ne(Ge,r.chosenClass,!0))},r.ignore.split(",").forEach((function(e){Ee(Ge,e.trim(),Ut)})),be(l,"dragover",Ft),be(l,"mousemove",Ft),be(l,"touchmove",Ft),be(l,"mouseup",o._onDrop),be(l,"touchend",o._onDrop),be(l,"touchcancel",o._onDrop),me&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Ge.draggable=!0),Xe("delayStart",this,{evt:e}),!r.delay||r.delayOnTouchOnly&&!t||this.nativeDraggable&&(he||pe))a();else{if(Zt.eventCanceled)return void this._onDrop();be(l,"mouseup",o._disableDelayedDrag),be(l,"touchend",o._disableDelayedDrag),be(l,"touchcancel",o._disableDelayedDrag),be(l,"mousemove",o._delayedDragTouchMoveHandler),be(l,"touchmove",o._delayedDragTouchMoveHandler),r.supportPointer&&be(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(a,r.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Ge&&Ut(Ge),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;ye(e,"mouseup",this._disableDelayedDrag),ye(e,"touchend",this._disableDelayedDrag),ye(e,"touchcancel",this._disableDelayedDrag),ye(e,"mousemove",this._delayedDragTouchMoveHandler),ye(e,"touchmove",this._delayedDragTouchMoveHandler),ye(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?be(document,"pointermove",this._onTouchMove):be(document,t?"touchmove":"mousemove",this._onTouchMove):(be(Ge,"dragend",this),be(Qe,"dragstart",this._onDragStart));try{document.selection?Yt((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(bt=!1,Qe&&Ge){Xe("dragStarted",this,{evt:t}),this.nativeDraggable&&be(document,"dragover",Bt);var n=this.options;!e&&Ne(Ge,n.dragClass,!1),Ne(Ge,n.ghostClass,!0),Zt.active=this,e&&this._appendGhost(),qe({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(ct){this._lastX=ct.clientX,this._lastY=ct.clientY,Ot();for(var e=document.elementFromPoint(ct.clientX,ct.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(ct.clientX,ct.clientY))!==t;)t=e;if(Ge.parentNode[ze]._isOutsideThisEl(e),t)do{if(t[ze]&&t[ze]._onDragOver({clientX:ct.clientX,clientY:ct.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break;e=t}while(t=t.parentNode);Lt()}},_onTouchMove:function(e){if(st){var t=this.options,n=t.fallbackTolerance,a=t.fallbackOffset,o=e.touches?e.touches[0]:e,i=We&&ke(We,!0),r=We&&i&&i.a,l=We&&i&&i.d,s=kt&&At&&Fe(At),c=(o.clientX-st.clientX+a.x)/(r||1)+(s?s[0]-xt[0]:0)/(r||1),d=(o.clientY-st.clientY+a.y)/(l||1)+(s?s[1]-xt[1]:0)/(l||1);if(!Zt.active&&!bt){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))a.right+10||e.clientX<=a.right&&e.clientY>a.bottom&&e.clientX>=a.left:e.clientX>a.right&&e.clientY>a.top||e.clientX<=a.right&&e.clientY>a.bottom+10}(e,o,this)&&!g.animated){if(g===Ge)return D(!1);if(g&&i===e.target&&(r=g),r&&(n=Me(r)),!1!==jt(Qe,i,Ge,t,r,n,e,!!r))return E(),i.appendChild(Ge),$e=i,M(),D(!0)}else if(r.parentNode===i){n=Me(r);var f,v,A,b=Ge.parentNode!==i,y=!function(e,t,n){var a=n?e.left:e.top,o=n?e.right:e.bottom,i=n?e.width:e.height,r=n?t.left:t.top,l=n?t.right:t.bottom,s=n?t.width:t.height;return a===r||o===l||a+i/2===r+s/2}(Ge.animated&&Ge.toRect||t,r.animated&&r.toRect||n,o),C=o?"top":"left",w=Ie(r,"top","top")||Ie(Ge,"top","top"),_=w?w.scrollTop:void 0;if(gt!==r&&(v=n[C],wt=!1,_t=!y&&l.invertSwap||b),f=function(e,t,n,a,o,i,r,l){var s=a?e.clientY:e.clientX,c=a?n.height:n.width,d=a?n.top:n.left,u=a?n.bottom:n.right,p=!1;if(!r)if(l&&vtd+c*i/2:su-vt)return-ft}else if(s>d+c*(1-o)/2&&su-c*i/2)?s>d+c/2?1:-1:0}(e,r,n,o,y?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,_t,gt===r),0!==f){var x=Le(Ge);do{x-=f,A=$e.children[x]}while(A&&("none"===Te(A,"display")||A===We))}if(0===f||A===r)return D(!1);gt=r,ft=f;var S=r.nextElementSibling,N=!1,T=jt(Qe,i,Ge,t,r,n,e,N=1===f);if(!1!==T)return 1!==T&&-1!==T||(N=1===T),St=!0,setTimeout(Rt,30),E(),N&&!S?i.appendChild(Ge):r.parentNode.insertBefore(Ge,N?S:r),w&&Ue(w,0,_-w.scrollTop),$e=Ge.parentNode,void 0===v||_t||(vt=Math.abs(v-Me(r)[C])),M(),D(!0)}if(i.contains(Ge))return D(!1)}return!1}function k(l,s){Xe(l,h,de({evt:e,isOwner:d,axis:o?"vertical":"horizontal",revert:a,dragRect:t,targetRect:n,canSort:u,fromSortable:p,target:r,completed:D,onMove:function(n,a){return jt(Qe,i,Ge,t,n,Me(n),e,a)},changed:M},s))}function E(){k("dragOverAnimationCapture"),h.captureAnimationState(),h!==p&&p.captureAnimationState()}function D(t){return k("dragOverCompleted",{insertion:t}),t&&(d?c._hideClone():c._showClone(h),h!==p&&(Ne(Ge,lt?lt.options.ghostClass:c.options.ghostClass,!1),Ne(Ge,l.ghostClass,!0)),lt!==h&&h!==Zt.active?lt=h:h===Zt.active&<&&(lt=null),p===h&&(h._ignoreWhileAnimating=r),h.animateAll((function(){k("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==p&&(p.animateAll(),p._ignoreWhileAnimating=null)),(r===Ge&&!Ge.animated||r===i&&!r.animated)&&(gt=null),l.dragoverBubble||e.rootEl||r===document||(Ge.parentNode[ze]._isOutsideThisEl(e.target),!t&&Ft(e)),!l.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function M(){at=Le(Ge),it=Le(Ge,l.draggable),qe({sortable:h,name:"change",toEl:i,newIndex:at,newDraggableIndex:it,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){ye(document,"mousemove",this._onTouchMove),ye(document,"touchmove",this._onTouchMove),ye(document,"pointermove",this._onTouchMove),ye(document,"dragover",Ft),ye(document,"mousemove",Ft),ye(document,"touchmove",Ft)},_offUpEvents:function(){var e=this.el.ownerDocument;ye(e,"mouseup",this._onDrop),ye(e,"touchend",this._onDrop),ye(e,"pointerup",this._onDrop),ye(e,"touchcancel",this._onDrop),ye(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;at=Le(Ge),it=Le(Ge,n.draggable),Xe("drop",this,{evt:e}),$e=Ge&&Ge.parentNode,at=Le(Ge),it=Le(Ge,n.draggable),Zt.eventCanceled||(bt=!1,_t=!1,wt=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Vt(this.cloneId),Vt(this._dragStartId),this.nativeDraggable&&(ye(document,"drop",this),ye(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),ge&&Te(document.body,"user-select",""),Te(Ge,"transform",""),e&&(mt&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),We&&We.parentNode&&We.parentNode.removeChild(We),(Qe===$e||lt&&"clone"!==lt.lastPutMode)&&et&&et.parentNode&&et.parentNode.removeChild(et),Ge&&(this.nativeDraggable&&ye(Ge,"dragend",this),Ut(Ge),Ge.style["will-change"]="",mt&&!bt&&Ne(Ge,lt?lt.options.ghostClass:this.options.ghostClass,!1),Ne(Ge,this.options.chosenClass,!1),qe({sortable:this,name:"unchoose",toEl:$e,newIndex:null,newDraggableIndex:null,originalEvent:e}),Qe!==$e?(at>=0&&(qe({rootEl:$e,name:"add",toEl:$e,fromEl:Qe,originalEvent:e}),qe({sortable:this,name:"remove",toEl:$e,originalEvent:e}),qe({rootEl:$e,name:"sort",toEl:$e,fromEl:Qe,originalEvent:e}),qe({sortable:this,name:"sort",toEl:$e,originalEvent:e})),lt&<.save()):at!==nt&&at>=0&&(qe({sortable:this,name:"update",toEl:$e,originalEvent:e}),qe({sortable:this,name:"sort",toEl:$e,originalEvent:e})),Zt.active&&(null!=at&&-1!==at||(at=nt,it=ot),qe({sortable:this,name:"end",toEl:$e,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){Xe("nulling",this),Qe=Ge=$e=We=Je=et=Ke=tt=st=ct=mt=at=it=nt=ot=gt=ft=lt=rt=Zt.dragged=Zt.ghost=Zt.clone=Zt.active=null,Nt.forEach((function(e){e.checked=!0})),Nt.length=dt=ut=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":Ge&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move"),e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,a=0,o=n.length,i=this.options;a!0,"move:down":()=>!0,"update:focus":()=>!0},setup(e,t){let{emit:n}=t;const a=(0,i.iH)(),o=(0,i.iH)();let r=0;return{buttonUp:a,buttonDown:o,moveUp:()=>{n("move:up"),r=1},moveDown:()=>{n("move:down"),r=-1},keepFocus:()=>{0!==r&&(1!==r&&!e.isLast||e.isFirst?(0,i.Y3)((()=>o.value.$el.focus())):(0,i.Y3)((()=>a.value.$el.focus()))),r=0},t:ae.Iu}}});var un=a(40773),pn={};pn.styleTagTransform=T(),pn.setAttributes=_(),pn.insert=C().bind(null,"head"),pn.domAPI=b(),pn.insertStyleElement=S(),v()(un.Z,pn),un.Z&&un.Z.locals&&un.Z.locals;const hn=(0,D.Z)(dn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("li",{class:{"order-selector-element":!0,"order-selector-element--disabled":e.app.default},attrs:{"data-cy-app-order-element":e.app.id},on:{focusin:function(t){return e.$emit("update:focus")}}},[t("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",role:"presentation"}},[t("image",{staticClass:"order-selector-element__icon",attrs:{preserveAspectRatio:"xMinYMin meet",x:"0",y:"0",width:"20",height:"20","xlink:href":e.app.icon}})]),e._v(" "),t("div",{staticClass:"order-selector-element__label"},[e._v("\n\t\t"+e._s(e.app.label??e.app.id)+"\n\t")]),e._v(" "),t("div",{staticClass:"order-selector-element__actions"},[t("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isFirst&&!e.app.default,expression:"!isFirst && !app.default"}],ref:"buttonUp",attrs:{"aria-label":e.t("settings","Move up"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"up",type:"tertiary-no-background"},on:{click:e.moveUp},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconArrowUp",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.isFirst||!!e.app.default,expression:"isFirst || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}}),e._v(" "),t("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isLast&&!e.app.default,expression:"!isLast && !app.default"}],ref:"buttonDown",attrs:{"aria-label":e.t("settings","Move down"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"down",type:"tertiary-no-background"},on:{click:e.moveDown},scopedSlots:e._u([{key:"icon",fn:function(){return[t("IconArrowDown",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.isLast||!!e.app.default,expression:"isLast || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}})],1)])}),[],!1,null,"081ebc45",null).exports,mn=(0,i.aZ)({name:"AppOrderSelector",components:{AppOrderSelectorElement:hn,Fragment:ln.H},props:{ariaDetails:{type:String,default:null},value:{type:Array,required:!0}},emits:{"update:value":e=>Array.isArray(e)},setup(e,t){let{emit:n}=t;const a=(0,i.iH)(null),o=(0,i.Fl)({get:()=>e.value,set:t=>{const a=[...t].sort(((e,n)=>(n.default?1:0)-(e.default?1:0)||t.indexOf(e)-t.indexOf(n)));a.some(((t,n)=>{let{id:a}=t;return a!==e.value[n].id}))?n("update:value",a):r.value+=1}}),r=(0,i.iH)(0);!function(e,t,n={}){let a;const{document:o=ie.Td$,...r}=n,l={onUpdate:e=>{!function(e,t,n){const a=(0,i.dq)(e),o=a?[...(0,re.Tn)(e)]:(0,re.Tn)(e);if(n>=0&&n{o.splice(n,0,r),a&&(e.value=o)}))}}(t,e.oldIndex,e.newIndex)}},s=()=>{const t="string"==typeof e?null==o?void 0:o.querySelector(e):(0,ie.NXq)(e);t&&void 0===a&&(a=new rn(t,{...l,...r}))},c=()=>{null==a||a.destroy(),a=void 0};(0,re.u7)(s),(0,re.IY)(c)}(a,o,{filter:".order-selector-element--disabled"});const l=(0,i.iH)([]);(0,i.ic)((()=>{l.value.forEach((e=>e.keepFocus()))}));const s=(0,i.iH)("");return{appList:o,listElement:a,moveDown:t=>{const a=t>0?e.value.slice(0,t):[];a.push(e.value[t+1]);const o=t{const a=t>1?e.value.slice(0,t-1):[];if(e.value[t-1]?.default)return;const o=[e.value[t-1]];t{s.value=(0,ae.Iu)("theming","Current selected app: {app}, position {position} of {total}",{app:e.value[t].label,position:t+1,total:e.value.length})},renderCount:r,selectorElements:l}}}),gn=mn;var fn=a(45797),vn={};vn.styleTagTransform=T(),vn.setAttributes=_(),vn.insert=C().bind(null,"head"),vn.domAPI=b(),vn.insertStyleElement=S(),v()(fn.Z,vn),fn.Z&&fn.Z.locals&&fn.Z.locals;var An=(0,D.Z)(gn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("Fragment",[t("div",{staticClass:"hidden-visually",attrs:{id:e.statusInfoId,"aria-live":"polite",role:"status"}},[e._v("\n\t\t"+e._s(e.statusInfo)+"\n\t")]),e._v(" "),t("ol",{ref:"listElement",staticClass:"order-selector",attrs:{"data-cy-app-order":""}},e._l(e.appList,(function(n,a){return t("AppOrderSelectorElement",e._g({key:`${n.id}${e.renderCount}`,ref:"selectorElements",refInFor:!0,attrs:{app:n,"aria-details":e.ariaDetails,"aria-describedby":e.statusInfoId,"is-first":0===a||!!e.appList[a-1].default,"is-last":a===e.value.length-1}},n.default?{}:{"move:up":()=>e.moveUp(a),"move:down":()=>e.moveDown(a),"update:focus":()=>e.updateStatusInfo(a)}))})),1)])}),[],!1,null,"76d01da8",null);const bn=An.exports,yn=(0,i.aZ)({name:"AppMenuSection",components:{AppOrderSelector:bn,NcCheckboxRadioSwitch:c.Z,NcSelect:oe.Z,NcSettingsSection:s.Z},props:{defaultApps:{type:Array,required:!0}},emits:{"update:defaultApps":e=>Array.isArray(e)&&e.every((e=>"string"==typeof e))},setup(e,t){let{emit:n}=t;const a=(0,i.Fl)({get:()=>e.defaultApps.length>0,set:e=>{e?n("update:defaultApps",["dashboard","files"]):l.value=[]}}),o=Object.values((0,r.j)("core","apps")).map((e=>{let{id:t,name:n,icon:a}=e;return{label:n,id:t,icon:a}})),l=(0,i.Fl)({get:()=>e.defaultApps.map((e=>o.filter((t=>t.id===e))[0])),set(e){s("defaultApps",e.map((e=>e.id))).then((()=>n("update:defaultApps",e.map((e=>e.id))))).catch((()=>(0,ne.x2)((0,ae.Iu)("theming","Could not set global default apps"))))}}),s=async(e,t)=>{const n=(0,u.generateUrl)("/apps/theming/ajax/updateAppMenu");return await d.Z.put(n,{setting:e,value:t})};return{allApps:o,selectedApps:l,hasCustomDefaultApp:a,t:ae.Iu}}}),Cn=yn;var wn=a(3640),_n={};_n.styleTagTransform=T(),_n.setAttributes=_(),_n.insert=C().bind(null,"head"),_n.domAPI=b(),_n.insertStyleElement=S(),v()(wn.Z,_n),wn.Z&&wn.Z.locals&&wn.Z.locals;const xn=(0,D.Z)(Cn,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcSettingsSection",{attrs:{name:e.t("theming","Navigation bar settings")}},[t("h3",[e._v(e._s(e.t("theming","Default app")))]),e._v(" "),t("p",{staticClass:"info-note"},[e._v("\n\t\t"+e._s(e.t("theming","The default app is the app that is e.g. opened after login or when the logo in the menu is clicked."))+"\n\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:e.hasCustomDefaultApp,type:"switch","data-cy-switch-default-app":""},on:{"update:checked":function(t){e.hasCustomDefaultApp=t}}},[e._v("\n\t\t"+e._s(e.t("theming","Use custom default app"))+"\n\t")]),e._v(" "),e.hasCustomDefaultApp?[t("h4",[e._v(e._s(e.t("theming","Global default app")))]),e._v(" "),t("NcSelect",{attrs:{"close-on-select":!1,placeholder:e.t("theming","Global default apps"),options:e.allApps,multiple:!0},model:{value:e.selectedApps,callback:function(t){e.selectedApps=t},expression:"selectedApps"}}),e._v(" "),t("h5",[e._v(e._s(e.t("theming","Default app priority")))]),e._v(" "),t("p",{staticClass:"info-note"},[e._v("\n\t\t\t"+e._s(e.t("theming","If an app is not enabled for a user, the next app with lower priority is used."))+"\n\t\t")]),e._v(" "),t("AppOrderSelector",{attrs:{value:e.selectedApps},on:{"update:value":function(t){e.selectedApps=t}}})]:e._e()],2)}),[],!1,null,"90f2e098",null).exports,{backgroundMime:Sn,canThemeIcons:Nn,color:Tn,docUrl:kn,docUrlIcons:En,faviconMime:Dn,isThemable:Mn,legalNoticeUrl:In,logoheaderMime:Pn,logoMime:On,name:Ln,notThemableErrorMessage:Fn,privacyPolicyUrl:Bn,slogan:Zn,url:jn,userThemingDisabled:Un,defaultApps:Rn}=(0,r.j)("theming","adminThemingParameters"),zn=[{name:"name",value:Ln,defaultValue:"Nextcloud",type:"text",displayName:t("theming","Name"),placeholder:t("theming","Name"),maxlength:250},{name:"url",value:jn,defaultValue:"https://nextcloud.com",type:"url",displayName:t("theming","Web link"),placeholder:"https://…",maxlength:500},{name:"slogan",value:Zn,defaultValue:t("theming","a safe home for all your data"),type:"text",displayName:t("theming","Slogan"),placeholder:t("theming","Slogan"),maxlength:500}],Yn={name:"color",value:Tn,defaultValue:"#0082c9",displayName:t("theming","Color")},Vn=[{name:"logo",mimeName:"logoMime",mimeValue:On,defaultMimeValue:"",displayName:t("theming","Logo"),ariaLabel:t("theming","Upload new logo")},{name:"background",mimeName:"backgroundMime",mimeValue:Sn,defaultMimeValue:"",displayName:t("theming","Background and login image"),ariaLabel:t("theming","Upload new background and login image")}],Hn=[{name:"imprintUrl",value:In,defaultValue:"",type:"url",displayName:t("theming","Legal notice link"),placeholder:"https://…",maxlength:500},{name:"privacyUrl",value:Bn,defaultValue:"",type:"url",displayName:t("theming","Privacy policy link"),placeholder:"https://…",maxlength:500}],Xn=[{name:"logoheader",mimeName:"logoheaderMime",mimeValue:Pn,defaultMimeValue:"",displayName:t("theming","Header logo"),ariaLabel:t("theming","Upload new header logo")},{name:"favicon",mimeName:"faviconMime",mimeValue:Dn,defaultMimeValue:"",displayName:t("theming","Favicon"),ariaLabel:t("theming","Upload new favicon")}],qn={name:"disable-user-theming",value:Un,defaultValue:!1,displayName:t("theming","User settings"),label:t("theming","Disable user theming"),description:t("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},Gn={name:"AdminTheming",components:{AppMenuSection:xn,CheckboxField:M,ColorPickerField:z,FileInputField:Q,NcNoteCard:l.Z,NcSettingsSection:s.Z,TextField:te},emits:["update:theming"],textFields:zn,data:()=>({textFields:zn,colorPickerField:Yn,fileInputFields:Vn,advancedTextFields:Hn,advancedFileInputFields:Xn,userThemingField:qn,defaultApps:Rn,canThemeIcons:Nn,docUrl:kn,docUrlIcons:En,isThemable:Mn,notThemableErrorMessage:Fn})};var $n=a(36568),Wn={};Wn.styleTagTransform=T(),Wn.setAttributes=_(),Wn.insert=C().bind(null,"head"),Wn.domAPI=b(),Wn.insertStyleElement=S(),v()($n.Z,Wn),$n.Z&&$n.Z.locals&&$n.Z.locals;const Qn=(0,D.Z)(Gn,(function(){var e=this,t=e._self._c;return t("section",[t("NcSettingsSection",{attrs:{name:e.t("theming","Theming"),description:e.t("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),"doc-url":e.docUrl,"data-admin-theming-settings":""}},[t("div",{staticClass:"admin-theming"},[e.isThemable?e._e():t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.notThemableErrorMessage))])]),e._v(" "),e._l(e.textFields,(function(n){return t("TextField",{key:n.name,attrs:{"data-admin-theming-setting-field":n.name,"default-value":n.defaultValue,"display-name":n.displayName,maxlength:n.maxlength,name:n.name,placeholder:n.placeholder,type:n.type,value:n.value},on:{"update:value":function(t){return e.$set(n,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("ColorPickerField",{attrs:{name:e.colorPickerField.name,"default-value":e.colorPickerField.defaultValue,"display-name":e.colorPickerField.displayName,value:e.colorPickerField.value},on:{"update:value":function(t){return e.$set(e.colorPickerField,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e._l(e.fileInputFields,(function(n){return t("FileInputField",{key:n.name,attrs:{"aria-label":n.ariaLabel,"data-admin-theming-setting-file":n.name,"default-mime-value":n.defaultMimeValue,"display-name":n.displayName,"mime-name":n.mimeName,"mime-value":n.mimeValue,name:n.name},on:{"update:mimeValue":function(t){return e.$set(n,"mimeValue",t)},"update:mime-value":function(t){return e.$set(n,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("div",{staticClass:"admin-theming__preview",attrs:{"data-admin-theming-preview":""}},[t("div",{staticClass:"admin-theming__preview-logo",attrs:{"data-admin-theming-preview-logo":""}})])],2)]),e._v(" "),t("NcSettingsSection",{attrs:{name:e.t("theming","Advanced options")}},[t("div",{staticClass:"admin-theming-advanced"},[e._l(e.advancedTextFields,(function(n){return t("TextField",{key:n.name,attrs:{name:n.name,value:n.value,"default-value":n.defaultValue,type:n.type,"display-name":n.displayName,placeholder:n.placeholder,maxlength:n.maxlength},on:{"update:value":function(t){return e.$set(n,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),e._l(e.advancedFileInputFields,(function(n){return t("FileInputField",{key:n.name,attrs:{name:n.name,"mime-name":n.mimeName,"mime-value":n.mimeValue,"default-mime-value":n.defaultMimeValue,"display-name":n.displayName,"aria-label":n.ariaLabel},on:{"update:mimeValue":function(t){return e.$set(n,"mimeValue",t)},"update:mime-value":function(t){return e.$set(n,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("CheckboxField",{attrs:{name:e.userThemingField.name,value:e.userThemingField.value,"default-value":e.userThemingField.defaultValue,"display-name":e.userThemingField.displayName,label:e.userThemingField.label,description:e.userThemingField.description,"data-admin-theming-setting-disable-user-theming":""},on:{"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e.canThemeIcons?e._e():t("a",{attrs:{href:e.docUrlIcons,rel:"noreferrer noopener"}},[t("em",[e._v(e._s(e.t("theming","Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.")))])])],2)]),e._v(" "),t("AppMenuSection",{attrs:{"default-apps":e.defaultApps},on:{"update:defaultApps":function(t){e.defaultApps=t},"update:default-apps":function(t){e.defaultApps=t}}})],1)}),[],!1,null,"e3cd61f0",null).exports;a.nc=btoa((0,o.IH)()),i.ZP.prototype.OC=OC,i.ZP.prototype.t=t;const Jn=new(i.ZP.extend(Qn));Jn.$mount("#admin-theming"),Jn.$on("update:theming",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const n=e.cloneNode();n.href=t.toString(),n.onload=()=>e.remove(),document.head.append(n)}))}))},36568:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i),l=n(61667),s=n.n(l),c=new URL(n(92770),n.b),d=r()(o()),u=s()(c);d.push([e.id,`.admin-theming[data-v-e3cd61f0],.admin-theming-advanced[data-v-e3cd61f0]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-e3cd61f0]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-element-default);background-image:var(--image-background-plain, var(--image-background-default))}.admin-theming__preview-logo[data-v-e3cd61f0]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(${u}))}`,"",{version:3,sources:["webpack://./apps/theming/src/AdminTheming.vue"],names:[],mappings:"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,qDAAA,CAKA,+EAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA",sourcesContent:["\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-element-default);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const p=d},45797:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".order-selector[data-v-76d01da8]{width:max-content;min-width:260px}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelector.vue"],names:[],mappings:"AACA,iCACC,iBAAA,CACA,eAAA",sourcesContent:["\n.order-selector {\n\twidth: max-content;\n\tmin-width: 260px; // align with NcSelect\n}\n"],sourceRoot:""}]);const l=r},40773:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelectorElement.vue"],names:[],mappings:"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA",sourcesContent:["\n.order-selector-element {\n\t// hide default styling\n\tlist-style: none;\n\t// Align children\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\t// Spacing\n\tgap: 12px;\n\tpadding-inline: 12px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&--disabled {\n\t\tborder-color: var(--color-text-maxcontrast);\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t.order-selector-element__icon {\n\t\t\topacity: 75%;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tflex: 0 0;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 6px;\n\t}\n\n\t&__label {\n\t\tflex: 1 1;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&__placeholder {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t}\n\n\t&__icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n}\n"],sourceRoot:""}]);const l=r},3640:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,"h3[data-v-90f2e098],h4[data-v-90f2e098]{font-weight:bold}h4[data-v-90f2e098],h5[data-v-90f2e098]{margin-block-start:12px}.info-note[data-v-90f2e098]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/AppMenuSection.vue"],names:[],mappings:"AACA,wCACC,gBAAA,CAED,wCACC,uBAAA,CAGD,4BACC,mCAAA",sourcesContent:["\nh3, h4 {\n\tfont-weight: bold;\n}\nh4, h5 {\n\tmargin-block-start: 12px;\n}\n\n.info-note {\n\tcolor: var(--color-text-maxcontrast);\n}\n"],sourceRoot:""}]);const l=r},60515:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-c41a3e80]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-c41a3e80]{display:flex;gap:0 4px}.field__description[data-v-c41a3e80]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/CheckboxField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const l=r},40590:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-25e8f76e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-25e8f76e]{display:flex;gap:0 4px}.field__color-preview[data-v-25e8f76e]{width:var(--default-clickable-area);border-radius:var(--border-radius-large);background-color:var(--color-primary-default)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/ColorPickerField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,uCACC,mCAAA,CACA,wCAAA,CACA,6CAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__color-preview {\n\t\twidth: var(--default-clickable-area);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary-default);\n\t}\n}\n"],sourceRoot:""}]);const l=r},58800:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-36abeca7]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-36abeca7]{display:flex;gap:0 4px}.field__loading-icon[data-v-36abeca7]{width:44px;height:44px}.field__preview[data-v-36abeca7]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-36abeca7]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-36abeca7]{background-image:var(--image-favicon)}input[type=file][data-v-36abeca7]{display:none}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/FileInputField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]);const l=r},15587:(e,t,n)=>{n.d(t,{Z:()=>l});var a=n(87537),o=n.n(a),i=n(23645),r=n.n(i)()(o());r.push([e.id,".field[data-v-31f08db0]{max-width:400px}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/TextField.vue"],names:[],mappings:"AACA,wBACC,eAAA",sourcesContent:["\n.field {\n\tmax-width: 400px;\n}\n"],sourceRoot:""}]);const l=r},92770:e=>{e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEyOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjU2IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTI4IDdjLTI1Ljg3MSAwLTQ3LjgxNyAxNy40ODUtNTQuNzEzIDQxLjIwOS01Ljk3OTUtMTIuNDYxLTE4LjY0Mi0yMS4yMDktMzMuMjg3LTIxLjIwOS0yMC4zMDQgMC0zNyAxNi42OTYtMzcgMzdzMTYuNjk2IDM3IDM3IDM3YzE0LjY0NSAwIDI3LjMwOC04Ljc0ODEgMzMuMjg3LTIxLjIwOSA2Ljg5NTcgMjMuNzI0IDI4Ljg0MiA0MS4yMDkgNTQuNzEzIDQxLjIwOXM0Ny44MTctMTcuNDg1IDU0LjcxMy00MS4yMDljNS45Nzk1IDEyLjQ2MSAxOC42NDIgMjEuMjA5IDMzLjI4NyAyMS4yMDkgMjAuMzA0IDAgMzctMTYuNjk2IDM3LTM3cy0xNi42OTYtMzctMzctMzdjLTE0LjY0NSAwLTI3LjMwOCA4Ljc0ODEtMzMuMjg3IDIxLjIwOS02Ljg5NTctMjMuNzI0LTI4Ljg0Mi00MS4yMDktNTQuNzEzLTQxLjIwOXptMCAyMmMxOS40NiAwIDM1IDE1LjU0IDM1IDM1cy0xNS41NCAzNS0zNSAzNS0zNS0xNS41NC0zNS0zNSAxNS41NC0zNSAzNS0zNXptLTg4IDIwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6bTE3NiAwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6IiBjb2xvcj0iIzAwMDAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Ii1pbmtzY2FwZS1zdHJva2U6bm9uZSIvPjwvc3ZnPgo="}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={id:e,loaded:!1,exports:{}};return o[e].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,e=[],r.O=(t,n,a,o)=>{if(!n){var i=1/0;for(d=0;d=o)&&Object.keys(r.O).every((e=>r.O[e](n[s])))?n.splice(s--,1):(l=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,a,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,n)=>(r.f[n](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v="+{4720:"67ff1816113751e83e78",6512:"930a9f0a458cd206d9d1"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},a="nextcloud:",r.l=(e,t,o,i)=>{if(n[e])n[e].push(t);else{var l,s;if(void 0!==o)for(var c=document.getElementsByTagName("script"),d=0;d{l.onerror=l.onload=null,clearTimeout(h);var o=n[e];if(delete n[e],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((e=>e(a))),t)return t(a)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=p.bind(null,l.onerror),l.onload=p.bind(null,l.onload),s&&document.head.appendChild(l)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=5544,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&!e;)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={5544:0};r.f.j=(t,n)=>{var a=r.o(e,t)?e[t]:void 0;if(0!==a)if(a)n.push(a[2]);else{var o=new Promise(((n,o)=>a=e[t]=[n,o]));n.push(a[2]=o);var i=r.p+r.u(t),l=new Error;r.l(i,(n=>{if(r.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;l.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,a[1](l)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,n)=>{var a,o,i=n[0],l=n[1],s=n[2],c=0;if(i.some((t=>0!==e[t]))){for(a in l)r.o(l,a)&&(r.m[a]=l[a]);if(s)var d=s(r)}for(t&&t(n);cr(36552)));l=r.O(l)})(); +//# sourceMappingURL=theming-admin-theming.js.map?v=48c2f23efaa5d7344970 \ No newline at end of file diff --git a/dist/theming-admin-theming.js.map b/dist/theming-admin-theming.js.map index b4aa626793e49..43ed5b78c1602 100644 --- a/dist/theming-admin-theming.js.map +++ b/dist/theming-admin-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-admin-theming.js?v=9b8274b393b9a9a460a0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/theming/src/mixins/admin/FieldMixin.js","webpack:///nextcloud/apps/theming/src/mixins/admin/TextValueMixin.js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?efd5","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?8981","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?f479","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?fdaf","webpack:///nextcloud/node_modules/vue-material-design-icons/UndoVariant.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/UndoVariant.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/UndoVariant.vue?2557","webpack:///nextcloud/node_modules/vue-material-design-icons/UndoVariant.vue?vue&type=template&id=3b13fe6c","webpack:///nextcloud/node_modules/vue-material-design-icons/Palette.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Palette.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Palette.vue?82b2","webpack:///nextcloud/node_modules/vue-material-design-icons/Palette.vue?vue&type=template&id=b8041184","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?9ad6","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?977d","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?2d6f","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?6e1f","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?4d24","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?6ff1","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?c7b6","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?e6c1","webpack:///nextcloud/apps/theming/src/components/admin/AppMenuSection.vue","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/@vueuse/integrations/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?649a","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?aad4","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue","webpack:///nextcloud/node_modules/@vueuse/integrations/useSortable.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?96a5","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?dbd7","webpack:///nextcloud/apps/theming/src/components/admin/AppMenuSection.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/admin/AppMenuSection.vue?be6d","webpack://nextcloud/./apps/theming/src/components/admin/AppMenuSection.vue?f742","webpack:///nextcloud/apps/theming/src/AdminTheming.vue","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?f2b5","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?6138","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?e575","webpack:///nextcloud/apps/theming/src/admin-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nconst styleRefreshFields = [\n\t'color',\n\t'logo',\n\t'background',\n\t'logoheader',\n\t'favicon',\n\t'disable-user-theming',\n]\n\nexport default {\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowSuccess: false,\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `admin-theming-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\treset() {\n\t\t\tthis.showSuccess = false\n\t\t\tthis.errorMessage = ''\n\t\t},\n\n\t\thandleSuccess() {\n\t\t\tthis.showSuccess = true\n\t\t\tsetTimeout(() => { this.showSuccess = false }, 2000)\n\t\t\tif (styleRefreshFields.includes(this.name)) {\n\t\t\t\tthis.$emit('update:theming')\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport FieldMixin from './FieldMixin.js'\n\nexport default {\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\twatch: {\n\t\tvalue(value) {\n\t\t\tthis.localValue = value\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync save() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\t// Convert boolean to string as server expects string value\n\t\t\tconst valueToPost = this.localValue === true ? 'yes' : this.localValue === false ? 'no' : this.localValue\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t\tvalue: valueToPost,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.localValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.defaultValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CheckboxField.vue?vue&type=template&id=c41a3e80&scoped=true\"\nimport script from \"./CheckboxField.vue?vue&type=script&lang=js\"\nexport * from \"./CheckboxField.vue?vue&type=script&lang=js\"\nimport style0 from \"./CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c41a3e80\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"id\":_vm.id,\"checked\":_vm.localValue},on:{\"update:checked\":[function($event){_vm.localValue=$event},_vm.save]}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"field__description\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcColorPicker',{attrs:{\"value\":_vm.localValue,\"advanced-fields\":true,\"data-admin-theming-setting-primary-color-picker\":\"\"},on:{\"update:value\":[function($event){_vm.localValue=$event},_vm.debounceSave]}},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Palette',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"field__color-preview\",attrs:{\"data-admin-theming-setting-primary-color\":\"\"}}),_vm._v(\" \"),(_vm.value !== _vm.defaultValue)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-primary-color-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UndoVariant.vue?vue&type=template&id=3b13fe6c\"\nimport script from \"./UndoVariant.vue?vue&type=script&lang=js\"\nexport * from \"./UndoVariant.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Palette.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Palette.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Palette.vue?vue&type=template&id=b8041184\"\nimport script from \"./Palette.vue?vue&type=script&lang=js\"\nexport * from \"./Palette.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon palette-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=25e8f76e&scoped=true\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=js\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=js\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25e8f76e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id,\"aria-label\":_vm.ariaLabel,\"data-admin-theming-setting-file-picker\":\"\"},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Upload'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showReset)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-file-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Remove background image'),\"data-admin-theming-setting-file-remove\":\"\"},on:{\"click\":_vm.removeBackground},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e(),_vm._v(\" \"),(_vm.showLoading)?_c('NcLoadingIcon',{staticClass:\"field__loading-icon\",attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),((_vm.name === 'logoheader' || _vm.name === 'favicon') && _vm.mimeValue !== _vm.defaultMimeValue)?_c('div',{staticClass:\"field__preview\",class:{\n\t\t\t'field__preview--logoheader': _vm.name === 'logoheader',\n\t\t\t'field__preview--favicon': _vm.name === 'favicon',\n\t\t}}):_vm._e(),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"accept\":_vm.acceptMime,\"type\":\"file\"},on:{\"change\":_vm.onChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileInputField.vue?vue&type=template&id=36abeca7&scoped=true\"\nimport script from \"./FileInputField.vue?vue&type=script&lang=js\"\nexport * from \"./FileInputField.vue?vue&type=script&lang=js\"\nimport style0 from \"./FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36abeca7\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TextField.vue?vue&type=template&id=31f08db0&scoped=true\"\nimport script from \"./TextField.vue?vue&type=script&lang=js\"\nexport * from \"./TextField.vue?vue&type=script&lang=js\"\nimport style0 from \"./TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31f08db0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('NcTextField',{attrs:{\"value\":_vm.localValue,\"label\":_vm.displayName,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"maxlength\":_vm.maxlength,\"spellcheck\":false,\"success\":_vm.showSuccess,\"error\":Boolean(_vm.errorMessage),\"helper-text\":_vm.errorMessage,\"show-trailing-button\":_vm.value !== _vm.defaultValue,\"trailing-button-icon\":\"undo\"},on:{\"update:value\":function($event){_vm.localValue=$event},\"trailing-button-click\":_vm.undo,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.save.apply(null, arguments)},\"blur\":_vm.save}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Navigation bar settings')}},[_c('h3',[_vm._v(_vm._s(_vm.t('theming', 'Default app')))]),_vm._v(\" \"),_c('p',{staticClass:\"info-note\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The default app is the app that is e.g. opened after login or when the logo in the menu is clicked.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.hasCustomDefaultApp,\"type\":\"switch\",\"data-cy-switch-default-app\":\"\"},on:{\"update:checked\":function($event){_vm.hasCustomDefaultApp=$event}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Use custom default app'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.hasCustomDefaultApp)?[_c('h4',[_vm._v(_vm._s(_vm.t('theming', 'Global default app')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":false,\"placeholder\":_vm.t('theming', 'Global default apps'),\"options\":_vm.allApps,\"multiple\":true},model:{value:(_vm.selectedApps),callback:function ($$v) {_vm.selectedApps=$$v},expression:\"selectedApps\"}}),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.t('theming', 'Default app priority')))]),_vm._v(\" \"),_c('p',{staticClass:\"info-note\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'If an app is not enabled for a user, the next app with lower priority is used.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('AppOrderSelector',{attrs:{\"value\":_vm.selectedApps},on:{\"update:value\":function($event){_vm.selectedApps=$event}}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{class:{\n\t\t'order-selector-element': true,\n\t\t'order-selector-element--disabled': _vm.app.default\n\t},attrs:{\"data-cy-app-order-element\":_vm.app.id},on:{\"focusin\":function($event){return _vm.$emit('update:focus')}}},[_c('svg',{attrs:{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"role\":\"presentation\"}},[_c('image',{staticClass:\"order-selector-element__icon\",attrs:{\"preserveAspectRatio\":\"xMinYMin meet\",\"x\":\"0\",\"y\":\"0\",\"width\":\"20\",\"height\":\"20\",\"xlink:href\":_vm.app.icon}})]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.label ?? _vm.app.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__actions\"},[_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isFirst && !_vm.app.default),expression:\"!isFirst && !app.default\"}],ref:\"buttonUp\",attrs:{\"aria-label\":_vm.t('settings', 'Move up'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"up\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowUp',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isFirst || !!_vm.app.default),expression:\"isFirst || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLast && !_vm.app.default),expression:\"!isLast && !app.default\"}],ref:\"buttonDown\",attrs:{\"aria-label\":_vm.t('settings', 'Move down'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"down\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveDown},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowDown',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLast || !!_vm.app.default),expression:\"isLast || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelectorElement.vue?vue&type=template&id=081ebc45&scoped=true\"\nimport script from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"081ebc45\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('div',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.statusInfoId,\"aria-live\":\"polite\",\"role\":\"status\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.statusInfo)+\"\\n\\t\")]),_vm._v(\" \"),_c('ol',{ref:\"listElement\",staticClass:\"order-selector\",attrs:{\"data-cy-app-order\":\"\"}},_vm._l((_vm.appList),function(app,index){return _c('AppOrderSelectorElement',_vm._g({key:`${app.id}${_vm.renderCount}`,ref:\"selectorElements\",refInFor:true,attrs:{\"app\":app,\"aria-details\":_vm.ariaDetails,\"aria-describedby\":_vm.statusInfoId,\"is-first\":index === 0 || !!_vm.appList[index - 1].default,\"is-last\":index === _vm.value.length - 1}},app.default ? {} : {\n\t\t\t\t'move:up': () => _vm.moveUp(index),\n\t\t\t\t'move:down': () => _vm.moveDown(index),\n\t\t\t\t'update:focus': () => _vm.updateStatusInfo(index),\n\t\t\t}))}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { tryOnMounted, tryOnScopeDispose, toValue, unrefElement, defaultDocument } from '@vueuse/core';\nimport Sortable from 'sortablejs';\nimport { isRef, nextTick } from 'vue-demi';\n\nfunction useSortable(el, list, options = {}) {\n let sortable;\n const { document = defaultDocument, ...resetOptions } = options;\n const defaultOptions = {\n onUpdate: (e) => {\n moveArrayElement(list, e.oldIndex, e.newIndex);\n }\n };\n const start = () => {\n const target = typeof el === \"string\" ? document == null ? void 0 : document.querySelector(el) : unrefElement(el);\n if (!target || sortable !== void 0)\n return;\n sortable = new Sortable(target, { ...defaultOptions, ...resetOptions });\n };\n const stop = () => {\n sortable == null ? void 0 : sortable.destroy();\n sortable = void 0;\n };\n const option = (name, value) => {\n if (value !== void 0)\n sortable == null ? void 0 : sortable.option(name, value);\n else\n return sortable == null ? void 0 : sortable.option(name);\n };\n tryOnMounted(start);\n tryOnScopeDispose(stop);\n return { stop, start, option };\n}\nfunction moveArrayElement(list, from, to) {\n const _valueIsRef = isRef(list);\n const array = _valueIsRef ? [...toValue(list)] : toValue(list);\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n nextTick(() => {\n array.splice(to, 0, element);\n if (_valueIsRef)\n list.value = array;\n });\n }\n}\n\nexport { moveArrayElement, useSortable };\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelector.vue?vue&type=template&id=35797e31&scoped=true\"\nimport script from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35797e31\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenuSection.vue?vue&type=template&id=90f2e098&scoped=true\"\nimport script from \"./AppMenuSection.vue?vue&type=script&lang=ts\"\nexport * from \"./AppMenuSection.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90f2e098\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTheming.vue?vue&type=template&id=e3cd61f0&scoped=true\"\nimport script from \"./AdminTheming.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTheming.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3cd61f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Theming'),\"description\":_vm.t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.'),\"doc-url\":_vm.docUrl,\"data-admin-theming-settings\":\"\"}},[_c('div',{staticClass:\"admin-theming\"},[(!_vm.isThemable)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.notThemableErrorMessage))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.textFields),function(field){return _c('TextField',{key:field.name,attrs:{\"data-admin-theming-setting-field\":field.name,\"default-value\":field.defaultValue,\"display-name\":field.displayName,\"maxlength\":field.maxlength,\"name\":field.name,\"placeholder\":field.placeholder,\"type\":field.type,\"value\":field.value},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('ColorPickerField',{attrs:{\"name\":_vm.colorPickerField.name,\"default-value\":_vm.colorPickerField.defaultValue,\"display-name\":_vm.colorPickerField.displayName,\"value\":_vm.colorPickerField.value},on:{\"update:value\":function($event){return _vm.$set(_vm.colorPickerField, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),_vm._l((_vm.fileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"aria-label\":field.ariaLabel,\"data-admin-theming-setting-file\":field.name,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"name\":field.name},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('div',{staticClass:\"admin-theming__preview\",attrs:{\"data-admin-theming-preview\":\"\"}},[_c('div',{staticClass:\"admin-theming__preview-logo\",attrs:{\"data-admin-theming-preview-logo\":\"\"}})])],2)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Advanced options')}},[_c('div',{staticClass:\"admin-theming-advanced\"},[_vm._l((_vm.advancedTextFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_vm._l((_vm.advancedFileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('CheckboxField',{attrs:{\"name\":_vm.userThemingField.name,\"value\":_vm.userThemingField.value,\"default-value\":_vm.userThemingField.defaultValue,\"display-name\":_vm.userThemingField.displayName,\"label\":_vm.userThemingField.label,\"description\":_vm.userThemingField.description,\"data-admin-theming-setting-disable-user-theming\":\"\"},on:{\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),(!_vm.canThemeIcons)?_c('a',{attrs:{\"href\":_vm.docUrlIcons,\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.')))])]):_vm._e()],2)]),_vm._v(\" \"),_c('AppMenuSection',{attrs:{\"default-apps\":_vm.defaultApps},on:{\"update:defaultApps\":function($event){_vm.defaultApps=$event},\"update:default-apps\":function($event){_vm.defaultApps=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getRequestToken } from '@nextcloud/auth'\nimport Vue from 'vue'\n\nimport { refreshStyles } from './helpers/refreshStyles.js'\nimport App from './AdminTheming.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#admin-theming')\ntheming.$on('update:theming', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../core/img/logo/logo.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.admin-theming[data-v-e3cd61f0],.admin-theming-advanced[data-v-e3cd61f0]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-e3cd61f0]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-element-default);background-image:var(--image-background-plain, var(--image-background-default))}.admin-theming__preview-logo[data-v-e3cd61f0]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(${___CSS_LOADER_URL_REPLACEMENT_0___}))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/AdminTheming.vue\"],\"names\":[],\"mappings\":\"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,qDAAA,CAKA,+EAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA\",\"sourcesContent\":[\"\\n.admin-theming,\\n.admin-theming-advanced {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n}\\n\\n.admin-theming {\\n\\t&__preview {\\n\\t\\twidth: 230px;\\n\\t\\theight: 140px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center;\\n\\t\\ttext-align: center;\\n\\t\\tmargin-top: 10px;\\n\\t\\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\\n\\t\\t But without the user variables. That way the admin can preview the render as guest*/\\n\\t\\t/* As guest, there is no user color color-background-plain */\\n\\t\\tbackground-color: var(--color-primary-element-default);\\n\\t\\t/* As guest, there is no user background (--image-background)\\n\\t\\t1. Empty background if defined\\n\\t\\t2. Else default background\\n\\t\\t3. Finally default gradient (should not happened, the background is always defined anyway) */\\n\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default));\\n\\n\\t\\t&-logo {\\n\\t\\t\\twidth: 20%;\\n\\t\\t\\theight: 20%;\\n\\t\\t\\tmargin-top: 20px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tbackground-size: contain;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector[data-v-35797e31]{width:max-content;min-width:260px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelector.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,iBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.order-selector {\\n\\twidth: max-content;\\n\\tmin-width: 260px; // align with NcSelect\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelectorElement.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA\",\"sourcesContent\":[\"\\n.order-selector-element {\\n\\t// hide default styling\\n\\tlist-style: none;\\n\\t// Align children\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\t// Spacing\\n\\tgap: 12px;\\n\\tpadding-inline: 12px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\tborder-color: var(--color-text-maxcontrast);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t.order-selector-element__icon {\\n\\t\\t\\topacity: 75%;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tflex: 0 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 6px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tflex: 1 1;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t&__placeholder {\\n\\t\\theight: 44px;\\n\\t\\twidth: 44px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `h3[data-v-90f2e098],h4[data-v-90f2e098]{font-weight:bold}h4[data-v-90f2e098],h5[data-v-90f2e098]{margin-block-start:12px}.info-note[data-v-90f2e098]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/AppMenuSection.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,gBAAA,CAED,wCACC,uBAAA,CAGD,4BACC,mCAAA\",\"sourcesContent\":[\"\\nh3, h4 {\\n\\tfont-weight: bold;\\n}\\nh4, h5 {\\n\\tmargin-block-start: 12px;\\n}\\n\\n.info-note {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-c41a3e80]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-c41a3e80]{display:flex;gap:0 4px}.field__description[data-v-c41a3e80]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/CheckboxField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-25e8f76e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-25e8f76e]{display:flex;gap:0 4px}.field__color-preview[data-v-25e8f76e]{width:var(--default-clickable-area);border-radius:var(--border-radius-large);background-color:var(--color-primary-default)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/ColorPickerField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,uCACC,mCAAA,CACA,wCAAA,CACA,6CAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__color-preview {\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-primary-default);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-36abeca7]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-36abeca7]{display:flex;gap:0 4px}.field__loading-icon[data-v-36abeca7]{width:44px;height:44px}.field__preview[data-v-36abeca7]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-36abeca7]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-36abeca7]{background-image:var(--image-favicon)}input[type=file][data-v-36abeca7]{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/FileInputField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__loading-icon {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__preview {\\n\\t\\twidth: 70px;\\n\\t\\theight: 70px;\\n\\t\\tbackground-size: contain;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t&--logoheader {\\n\\t\\t\\tbackground-image: var(--image-logoheader);\\n\\t\\t}\\n\\n\\t\\t&--favicon {\\n\\t\\t\\tbackground-image: var(--image-favicon);\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-31f08db0]{max-width:400px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/TextField.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,eAAA\",\"sourcesContent\":[\"\\n.field {\\n\\tmax-width: 400px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"930a9f0a458cd206d9d1\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5544;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5544: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(22610)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","styleRefreshFields","emits","data","showSuccess","errorMessage","computed","id","this","name","methods","reset","handleSuccess","setTimeout","includes","$emit","mixins","FieldMixin","watch","value","localValue","save","url","generateUrl","valueToPost","axios","post","setting","e","response","message","undo","defaultValue","components","NcCheckboxRadioSwitch","NcNoteCard","TextValueMixin","props","type","String","required","Boolean","displayName","label","description","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","attrs","_v","_s","on","$event","_e","title","fillColor","default","size","Number","_b","$attrs","NcButton","NcColorPicker","Undo","Palette","debounceSave","debounce","scopedSlots","_u","key","fn","proxy","t","allowedMimeTypes","loadState","Delete","NcLoadingIcon","Upload","mimeName","mimeValue","defaultMimeValue","ariaLabel","showLoading","acceptMime","join","showReset","showRemove","startsWith","activateLocalFilePicker","$refs","input","click","onChange","file","target","files","formData","FormData","append","removeBackground","class","ref","NcTextField","placeholder","maxlength","indexOf","_k","keyCode","apply","arguments","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","Object","defineProperty","enumerable","configurable","writable","_extends","assign","i","length","source","hasOwnProperty","call","_objectSpread","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","event","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","style","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","isRectEqual","rect1","rect2","Math","round","throttle","callback","ms","args","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","push","pluginEvent","eventName","sortable","evt","_this","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","undefined","originalEvent","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","bind","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","rect","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","animationCallbackId","animationStates","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","get","captureAnimationState","slice","child","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","offsetWidth","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","path","composedPath","root","inputs","idx","checked","_saveInputCheckedState","button","isContentEditable","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","set","destroy","Array","querySelectorAll","removeAttribute","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","util","warn","defineComponent","IconArrowDown","IconArrowUp","ariaDescribedby","ariaDetails","app","isFirst","isLast","move:up","move:down","update:focus","setup","emit","buttonUp","buttonDown","needsFocus","moveUp","moveDown","keepFocus","$el","focus","_setupProxy","icon","directives","rawName","expression","AppOrderSelectorElement","Fragment","isArray","listElement","appList","newValue","renderCount","resetOptions","defaultOptions","onUpdate","_valueIsRef","array","moveArrayElement","start","querySelector","stop","useSortable","selectorElements","onUpdated","statusInfo","before","statusInfoId","random","updateStatusInfo","position","total","_l","_g","refInFor","AppOrderSelector","NcSelect","NcSettingsSection","defaultApps","every","hasCustomDefaultApp","selectedApps","allApps","values","map","saveSetting","then","catch","showError","model","$$v","backgroundMime","canThemeIcons","color","docUrl","docUrlIcons","faviconMime","isThemable","legalNoticeUrl","logoheaderMime","logoMime","notThemableErrorMessage","privacyPolicyUrl","slogan","userThemingDisabled","textFields","colorPickerField","fileInputFields","advancedTextFields","advancedFileInputFields","userThemingField","AppMenuSection","CheckboxField","ColorPickerField","FileInputField","TextField","field","$set","__webpack_nonce__","btoa","getRequestToken","Vue","OC","theming","App","$mount","$on","refreshStyles","head","theme","URL","searchParams","now","newTheme","onload","remove","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","r","getter","__esModule","definition","o","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","l","done","script","needAttach","scripts","s","charset","timeout","nc","setAttribute","onScriptComplete","prev","onerror","doneFns","toStringTag","nmd","paths","scriptUrl","importScripts","location","currentScript","Error","p","baseURI","self","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"theming-admin-theming.js?v=48c2f23efaa5d7344970","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/theming/src/mixins/admin/FieldMixin.js","webpack:///nextcloud/apps/theming/src/mixins/admin/TextValueMixin.js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?efd5","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?8981","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?f479","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?fdaf","webpack:///nextcloud/node_modules/vue-material-design-icons/UndoVariant.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/UndoVariant.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/UndoVariant.vue?2557","webpack:///nextcloud/node_modules/vue-material-design-icons/UndoVariant.vue?vue&type=template&id=3b13fe6c","webpack:///nextcloud/node_modules/vue-material-design-icons/Palette.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Palette.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Palette.vue?82b2","webpack:///nextcloud/node_modules/vue-material-design-icons/Palette.vue?vue&type=template&id=b8041184","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?9ad6","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?977d","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?2d6f","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?6e1f","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?4d24","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?6ff1","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?c7b6","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?e6c1","webpack:///nextcloud/apps/theming/src/components/admin/AppMenuSection.vue","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/@vueuse/integrations/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?649a","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?aad4","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue","webpack:///nextcloud/node_modules/@vueuse/integrations/useSortable.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?a335","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?dbd7","webpack:///nextcloud/apps/theming/src/components/admin/AppMenuSection.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/admin/AppMenuSection.vue?be6d","webpack://nextcloud/./apps/theming/src/components/admin/AppMenuSection.vue?f742","webpack:///nextcloud/apps/theming/src/AdminTheming.vue","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?f2b5","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?6138","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?e575","webpack:///nextcloud/apps/theming/src/admin-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nconst styleRefreshFields = [\n\t'color',\n\t'logo',\n\t'background',\n\t'logoheader',\n\t'favicon',\n\t'disable-user-theming',\n]\n\nexport default {\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowSuccess: false,\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `admin-theming-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\treset() {\n\t\t\tthis.showSuccess = false\n\t\t\tthis.errorMessage = ''\n\t\t},\n\n\t\thandleSuccess() {\n\t\t\tthis.showSuccess = true\n\t\t\tsetTimeout(() => { this.showSuccess = false }, 2000)\n\t\t\tif (styleRefreshFields.includes(this.name)) {\n\t\t\t\tthis.$emit('update:theming')\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport FieldMixin from './FieldMixin.js'\n\nexport default {\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\twatch: {\n\t\tvalue(value) {\n\t\t\tthis.localValue = value\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync save() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\t// Convert boolean to string as server expects string value\n\t\t\tconst valueToPost = this.localValue === true ? 'yes' : this.localValue === false ? 'no' : this.localValue\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t\tvalue: valueToPost,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.localValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.defaultValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CheckboxField.vue?vue&type=template&id=c41a3e80&scoped=true\"\nimport script from \"./CheckboxField.vue?vue&type=script&lang=js\"\nexport * from \"./CheckboxField.vue?vue&type=script&lang=js\"\nimport style0 from \"./CheckboxField.vue?vue&type=style&index=0&id=c41a3e80&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c41a3e80\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"id\":_vm.id,\"checked\":_vm.localValue},on:{\"update:checked\":[function($event){_vm.localValue=$event},_vm.save]}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"field__description\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcColorPicker',{attrs:{\"value\":_vm.localValue,\"advanced-fields\":true,\"data-admin-theming-setting-primary-color-picker\":\"\"},on:{\"update:value\":[function($event){_vm.localValue=$event},_vm.debounceSave]}},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Palette',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"field__color-preview\",attrs:{\"data-admin-theming-setting-primary-color\":\"\"}}),_vm._v(\" \"),(_vm.value !== _vm.defaultValue)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-primary-color-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./UndoVariant.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UndoVariant.vue?vue&type=template&id=3b13fe6c\"\nimport script from \"./UndoVariant.vue?vue&type=script&lang=js\"\nexport * from \"./UndoVariant.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Palette.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Palette.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Palette.vue?vue&type=template&id=b8041184\"\nimport script from \"./Palette.vue?vue&type=script&lang=js\"\nexport * from \"./Palette.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon palette-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=25e8f76e&scoped=true\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=js\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=js\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=25e8f76e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25e8f76e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id,\"aria-label\":_vm.ariaLabel,\"data-admin-theming-setting-file-picker\":\"\"},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Upload'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showReset)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-file-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Remove background image'),\"data-admin-theming-setting-file-remove\":\"\"},on:{\"click\":_vm.removeBackground},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e(),_vm._v(\" \"),(_vm.showLoading)?_c('NcLoadingIcon',{staticClass:\"field__loading-icon\",attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),((_vm.name === 'logoheader' || _vm.name === 'favicon') && _vm.mimeValue !== _vm.defaultMimeValue)?_c('div',{staticClass:\"field__preview\",class:{\n\t\t\t'field__preview--logoheader': _vm.name === 'logoheader',\n\t\t\t'field__preview--favicon': _vm.name === 'favicon',\n\t\t}}):_vm._e(),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"accept\":_vm.acceptMime,\"type\":\"file\"},on:{\"change\":_vm.onChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileInputField.vue?vue&type=template&id=36abeca7&scoped=true\"\nimport script from \"./FileInputField.vue?vue&type=script&lang=js\"\nexport * from \"./FileInputField.vue?vue&type=script&lang=js\"\nimport style0 from \"./FileInputField.vue?vue&type=style&index=0&id=36abeca7&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36abeca7\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TextField.vue?vue&type=template&id=31f08db0&scoped=true\"\nimport script from \"./TextField.vue?vue&type=script&lang=js\"\nexport * from \"./TextField.vue?vue&type=script&lang=js\"\nimport style0 from \"./TextField.vue?vue&type=style&index=0&id=31f08db0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31f08db0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('NcTextField',{attrs:{\"value\":_vm.localValue,\"label\":_vm.displayName,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"maxlength\":_vm.maxlength,\"spellcheck\":false,\"success\":_vm.showSuccess,\"error\":Boolean(_vm.errorMessage),\"helper-text\":_vm.errorMessage,\"show-trailing-button\":_vm.value !== _vm.defaultValue,\"trailing-button-icon\":\"undo\"},on:{\"update:value\":function($event){_vm.localValue=$event},\"trailing-button-click\":_vm.undo,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.save.apply(null, arguments)},\"blur\":_vm.save}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Navigation bar settings')}},[_c('h3',[_vm._v(_vm._s(_vm.t('theming', 'Default app')))]),_vm._v(\" \"),_c('p',{staticClass:\"info-note\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The default app is the app that is e.g. opened after login or when the logo in the menu is clicked.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.hasCustomDefaultApp,\"type\":\"switch\",\"data-cy-switch-default-app\":\"\"},on:{\"update:checked\":function($event){_vm.hasCustomDefaultApp=$event}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Use custom default app'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.hasCustomDefaultApp)?[_c('h4',[_vm._v(_vm._s(_vm.t('theming', 'Global default app')))]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":false,\"placeholder\":_vm.t('theming', 'Global default apps'),\"options\":_vm.allApps,\"multiple\":true},model:{value:(_vm.selectedApps),callback:function ($$v) {_vm.selectedApps=$$v},expression:\"selectedApps\"}}),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.t('theming', 'Default app priority')))]),_vm._v(\" \"),_c('p',{staticClass:\"info-note\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'If an app is not enabled for a user, the next app with lower priority is used.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('AppOrderSelector',{attrs:{\"value\":_vm.selectedApps},on:{\"update:value\":function($event){_vm.selectedApps=$event}}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{class:{\n\t\t'order-selector-element': true,\n\t\t'order-selector-element--disabled': _vm.app.default\n\t},attrs:{\"data-cy-app-order-element\":_vm.app.id},on:{\"focusin\":function($event){return _vm.$emit('update:focus')}}},[_c('svg',{attrs:{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"role\":\"presentation\"}},[_c('image',{staticClass:\"order-selector-element__icon\",attrs:{\"preserveAspectRatio\":\"xMinYMin meet\",\"x\":\"0\",\"y\":\"0\",\"width\":\"20\",\"height\":\"20\",\"xlink:href\":_vm.app.icon}})]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.label ?? _vm.app.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__actions\"},[_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isFirst && !_vm.app.default),expression:\"!isFirst && !app.default\"}],ref:\"buttonUp\",attrs:{\"aria-label\":_vm.t('settings', 'Move up'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"up\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowUp',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isFirst || !!_vm.app.default),expression:\"isFirst || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLast && !_vm.app.default),expression:\"!isLast && !app.default\"}],ref:\"buttonDown\",attrs:{\"aria-label\":_vm.t('settings', 'Move down'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"down\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveDown},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowDown',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLast || !!_vm.app.default),expression:\"isLast || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelectorElement.vue?vue&type=template&id=081ebc45&scoped=true\"\nimport script from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"081ebc45\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('div',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.statusInfoId,\"aria-live\":\"polite\",\"role\":\"status\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.statusInfo)+\"\\n\\t\")]),_vm._v(\" \"),_c('ol',{ref:\"listElement\",staticClass:\"order-selector\",attrs:{\"data-cy-app-order\":\"\"}},_vm._l((_vm.appList),function(app,index){return _c('AppOrderSelectorElement',_vm._g({key:`${app.id}${_vm.renderCount}`,ref:\"selectorElements\",refInFor:true,attrs:{\"app\":app,\"aria-details\":_vm.ariaDetails,\"aria-describedby\":_vm.statusInfoId,\"is-first\":index === 0 || !!_vm.appList[index - 1].default,\"is-last\":index === _vm.value.length - 1}},app.default ? {} : {\n\t\t\t\t'move:up': () => _vm.moveUp(index),\n\t\t\t\t'move:down': () => _vm.moveDown(index),\n\t\t\t\t'update:focus': () => _vm.updateStatusInfo(index),\n\t\t\t}))}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { tryOnMounted, tryOnScopeDispose, toValue, unrefElement, defaultDocument } from '@vueuse/core';\nimport Sortable from 'sortablejs';\nimport { isRef, nextTick } from 'vue-demi';\n\nfunction useSortable(el, list, options = {}) {\n let sortable;\n const { document = defaultDocument, ...resetOptions } = options;\n const defaultOptions = {\n onUpdate: (e) => {\n moveArrayElement(list, e.oldIndex, e.newIndex);\n }\n };\n const start = () => {\n const target = typeof el === \"string\" ? document == null ? void 0 : document.querySelector(el) : unrefElement(el);\n if (!target || sortable !== void 0)\n return;\n sortable = new Sortable(target, { ...defaultOptions, ...resetOptions });\n };\n const stop = () => {\n sortable == null ? void 0 : sortable.destroy();\n sortable = void 0;\n };\n const option = (name, value) => {\n if (value !== void 0)\n sortable == null ? void 0 : sortable.option(name, value);\n else\n return sortable == null ? void 0 : sortable.option(name);\n };\n tryOnMounted(start);\n tryOnScopeDispose(stop);\n return { stop, start, option };\n}\nfunction moveArrayElement(list, from, to) {\n const _valueIsRef = isRef(list);\n const array = _valueIsRef ? [...toValue(list)] : toValue(list);\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n nextTick(() => {\n array.splice(to, 0, element);\n if (_valueIsRef)\n list.value = array;\n });\n }\n}\n\nexport { moveArrayElement, useSortable };\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelector.vue?vue&type=template&id=76d01da8&scoped=true\"\nimport script from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76d01da8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenuSection.vue?vue&type=template&id=90f2e098&scoped=true\"\nimport script from \"./AppMenuSection.vue?vue&type=script&lang=ts\"\nexport * from \"./AppMenuSection.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppMenuSection.vue?vue&type=style&index=0&id=90f2e098&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90f2e098\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTheming.vue?vue&type=template&id=e3cd61f0&scoped=true\"\nimport script from \"./AdminTheming.vue?vue&type=script&lang=js\"\nexport * from \"./AdminTheming.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminTheming.vue?vue&type=style&index=0&id=e3cd61f0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3cd61f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Theming'),\"description\":_vm.t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.'),\"doc-url\":_vm.docUrl,\"data-admin-theming-settings\":\"\"}},[_c('div',{staticClass:\"admin-theming\"},[(!_vm.isThemable)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.notThemableErrorMessage))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.textFields),function(field){return _c('TextField',{key:field.name,attrs:{\"data-admin-theming-setting-field\":field.name,\"default-value\":field.defaultValue,\"display-name\":field.displayName,\"maxlength\":field.maxlength,\"name\":field.name,\"placeholder\":field.placeholder,\"type\":field.type,\"value\":field.value},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('ColorPickerField',{attrs:{\"name\":_vm.colorPickerField.name,\"default-value\":_vm.colorPickerField.defaultValue,\"display-name\":_vm.colorPickerField.displayName,\"value\":_vm.colorPickerField.value},on:{\"update:value\":function($event){return _vm.$set(_vm.colorPickerField, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),_vm._l((_vm.fileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"aria-label\":field.ariaLabel,\"data-admin-theming-setting-file\":field.name,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"name\":field.name},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('div',{staticClass:\"admin-theming__preview\",attrs:{\"data-admin-theming-preview\":\"\"}},[_c('div',{staticClass:\"admin-theming__preview-logo\",attrs:{\"data-admin-theming-preview-logo\":\"\"}})])],2)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Advanced options')}},[_c('div',{staticClass:\"admin-theming-advanced\"},[_vm._l((_vm.advancedTextFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_vm._l((_vm.advancedFileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('CheckboxField',{attrs:{\"name\":_vm.userThemingField.name,\"value\":_vm.userThemingField.value,\"default-value\":_vm.userThemingField.defaultValue,\"display-name\":_vm.userThemingField.displayName,\"label\":_vm.userThemingField.label,\"description\":_vm.userThemingField.description,\"data-admin-theming-setting-disable-user-theming\":\"\"},on:{\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),(!_vm.canThemeIcons)?_c('a',{attrs:{\"href\":_vm.docUrlIcons,\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.')))])]):_vm._e()],2)]),_vm._v(\" \"),_c('AppMenuSection',{attrs:{\"default-apps\":_vm.defaultApps},on:{\"update:defaultApps\":function($event){_vm.defaultApps=$event},\"update:default-apps\":function($event){_vm.defaultApps=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getRequestToken } from '@nextcloud/auth'\nimport Vue from 'vue'\n\nimport { refreshStyles } from './helpers/refreshStyles.js'\nimport App from './AdminTheming.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#admin-theming')\ntheming.$on('update:theming', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../core/img/logo/logo.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.admin-theming[data-v-e3cd61f0],.admin-theming-advanced[data-v-e3cd61f0]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-e3cd61f0]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-element-default);background-image:var(--image-background-plain, var(--image-background-default))}.admin-theming__preview-logo[data-v-e3cd61f0]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(${___CSS_LOADER_URL_REPLACEMENT_0___}))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/AdminTheming.vue\"],\"names\":[],\"mappings\":\"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,qDAAA,CAKA,+EAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA\",\"sourcesContent\":[\"\\n.admin-theming,\\n.admin-theming-advanced {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n}\\n\\n.admin-theming {\\n\\t&__preview {\\n\\t\\twidth: 230px;\\n\\t\\theight: 140px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center;\\n\\t\\ttext-align: center;\\n\\t\\tmargin-top: 10px;\\n\\t\\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\\n\\t\\t But without the user variables. That way the admin can preview the render as guest*/\\n\\t\\t/* As guest, there is no user color color-background-plain */\\n\\t\\tbackground-color: var(--color-primary-element-default);\\n\\t\\t/* As guest, there is no user background (--image-background)\\n\\t\\t1. Empty background if defined\\n\\t\\t2. Else default background\\n\\t\\t3. Finally default gradient (should not happened, the background is always defined anyway) */\\n\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default));\\n\\n\\t\\t&-logo {\\n\\t\\t\\twidth: 20%;\\n\\t\\t\\theight: 20%;\\n\\t\\t\\tmargin-top: 20px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tbackground-size: contain;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector[data-v-76d01da8]{width:max-content;min-width:260px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelector.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,iBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.order-selector {\\n\\twidth: max-content;\\n\\tmin-width: 260px; // align with NcSelect\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelectorElement.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA\",\"sourcesContent\":[\"\\n.order-selector-element {\\n\\t// hide default styling\\n\\tlist-style: none;\\n\\t// Align children\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\t// Spacing\\n\\tgap: 12px;\\n\\tpadding-inline: 12px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\tborder-color: var(--color-text-maxcontrast);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t.order-selector-element__icon {\\n\\t\\t\\topacity: 75%;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tflex: 0 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 6px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tflex: 1 1;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t&__placeholder {\\n\\t\\theight: 44px;\\n\\t\\twidth: 44px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `h3[data-v-90f2e098],h4[data-v-90f2e098]{font-weight:bold}h4[data-v-90f2e098],h5[data-v-90f2e098]{margin-block-start:12px}.info-note[data-v-90f2e098]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/AppMenuSection.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,gBAAA,CAED,wCACC,uBAAA,CAGD,4BACC,mCAAA\",\"sourcesContent\":[\"\\nh3, h4 {\\n\\tfont-weight: bold;\\n}\\nh4, h5 {\\n\\tmargin-block-start: 12px;\\n}\\n\\n.info-note {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-c41a3e80]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-c41a3e80]{display:flex;gap:0 4px}.field__description[data-v-c41a3e80]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/CheckboxField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-25e8f76e]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-25e8f76e]{display:flex;gap:0 4px}.field__color-preview[data-v-25e8f76e]{width:var(--default-clickable-area);border-radius:var(--border-radius-large);background-color:var(--color-primary-default)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/ColorPickerField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,uCACC,mCAAA,CACA,wCAAA,CACA,6CAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__color-preview {\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-primary-default);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-36abeca7]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-36abeca7]{display:flex;gap:0 4px}.field__loading-icon[data-v-36abeca7]{width:44px;height:44px}.field__preview[data-v-36abeca7]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-36abeca7]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-36abeca7]{background-image:var(--image-favicon)}input[type=file][data-v-36abeca7]{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/FileInputField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng \\n *\\n * @author Christopher Ng \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__loading-icon {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__preview {\\n\\t\\twidth: 70px;\\n\\t\\theight: 70px;\\n\\t\\tbackground-size: contain;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t&--logoheader {\\n\\t\\t\\tbackground-image: var(--image-logoheader);\\n\\t\\t}\\n\\n\\t\\t&--favicon {\\n\\t\\t\\tbackground-image: var(--image-favicon);\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.field[data-v-31f08db0]{max-width:400px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/TextField.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,eAAA\",\"sourcesContent\":[\"\\n.field {\\n\\tmax-width: 400px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"930a9f0a458cd206d9d1\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5544;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5544: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(36552)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","styleRefreshFields","emits","data","showSuccess","errorMessage","computed","id","this","name","methods","reset","handleSuccess","setTimeout","includes","$emit","mixins","FieldMixin","watch","value","localValue","save","url","generateUrl","valueToPost","axios","post","setting","e","response","message","undo","defaultValue","components","NcCheckboxRadioSwitch","NcNoteCard","TextValueMixin","props","type","String","required","Boolean","displayName","label","description","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","attrs","_v","_s","on","$event","_e","title","fillColor","default","size","Number","_b","$attrs","NcButton","NcColorPicker","Undo","Palette","debounceSave","debounce","scopedSlots","_u","key","fn","proxy","t","allowedMimeTypes","loadState","Delete","NcLoadingIcon","Upload","mimeName","mimeValue","defaultMimeValue","ariaLabel","showLoading","acceptMime","join","showReset","showRemove","startsWith","activateLocalFilePicker","$refs","input","click","onChange","file","target","files","formData","FormData","append","removeBackground","class","ref","NcTextField","placeholder","maxlength","indexOf","_k","keyCode","apply","arguments","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","Object","defineProperty","enumerable","configurable","writable","_extends","assign","i","length","source","hasOwnProperty","call","_objectSpread","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","event","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","style","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","isRectEqual","rect1","rect2","Math","round","throttle","callback","ms","args","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","push","pluginEvent","eventName","sortable","evt","_this","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","undefined","originalEvent","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","bind","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","rect","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","animationCallbackId","animationStates","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","get","captureAnimationState","slice","child","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","offsetWidth","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","path","composedPath","root","inputs","idx","checked","_saveInputCheckedState","button","isContentEditable","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","set","destroy","Array","querySelectorAll","removeAttribute","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","util","warn","defineComponent","IconArrowDown","IconArrowUp","ariaDescribedby","ariaDetails","app","isFirst","isLast","move:up","move:down","update:focus","setup","emit","buttonUp","buttonDown","needsFocus","moveUp","moveDown","keepFocus","$el","focus","_setupProxy","icon","directives","rawName","expression","AppOrderSelectorElement","Fragment","isArray","listElement","appList","newValue","renderCount","resetOptions","defaultOptions","onUpdate","_valueIsRef","array","moveArrayElement","start","querySelector","stop","useSortable","selectorElements","onUpdated","statusInfo","before","statusInfoId","random","updateStatusInfo","position","total","_l","_g","refInFor","AppOrderSelector","NcSelect","NcSettingsSection","defaultApps","every","hasCustomDefaultApp","selectedApps","allApps","values","map","saveSetting","then","catch","showError","model","$$v","backgroundMime","canThemeIcons","color","docUrl","docUrlIcons","faviconMime","isThemable","legalNoticeUrl","logoheaderMime","logoMime","notThemableErrorMessage","privacyPolicyUrl","slogan","userThemingDisabled","textFields","colorPickerField","fileInputFields","advancedTextFields","advancedFileInputFields","userThemingField","AppMenuSection","CheckboxField","ColorPickerField","FileInputField","TextField","field","$set","__webpack_nonce__","btoa","getRequestToken","Vue","OC","theming","App","$mount","$on","refreshStyles","head","theme","URL","searchParams","now","newTheme","onload","remove","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","r","getter","__esModule","definition","o","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","l","done","script","needAttach","scripts","s","charset","timeout","nc","setAttribute","onScriptComplete","prev","onerror","doneFns","toStringTag","nmd","paths","scriptUrl","importScripts","location","currentScript","Error","p","baseURI","self","installedChunks","installedChunkData","promise","resolve","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/theming-personal-theming.js b/dist/theming-personal-theming.js index f320071b631b4..a92fad8ed1adb 100644 --- a/dist/theming-personal-theming.js +++ b/dist/theming-personal-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-personal-theming.js.LICENSE.txt */ -(()=>{var e,n,r,o={52689:(e,n,r)=>{"use strict";var o=r(77958),a=r(20144),i=r(79753),l=r(43554),s=r(93664),c=r(9359),u=r(90580),d=r(64024),h=(r(97248),r(20296)),p=r.n(h),g=r(42416),f=r(54572),m=r(1082),v=r.n(m),b=r(11734),A=r(44893);const _={name:"ImageEditIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var y=r(51900);const C=(0,y.Z)(_,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-edit-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var w=r(25108);const k=(0,l.j)("theming","backgroundImage"),x=(0,l.j)("theming","shippedBackgrounds"),S=(0,l.j)("theming","themingDefaultBackground"),D=(0,l.j)("theming","defaultShippedBackground"),T=t=>(0,i.generateFilePath)("theming","","img/background/")+t,E={name:"BackgroundSettings",components:{Check:b.Z,Close:A.Z,ImageEdit:C,NcButton:f.Z,NcColorPicker:g.N},data:()=>({loading:!1,Theming:(0,l.j)("theming","data",{}),backgroundImage:k}),computed:{shippedBackgrounds(){return Object.keys(x).map((t=>({name:t,url:T(t),preview:T("preview/"+t),details:x[t]}))).filter((t=>!(!this.isGlobalBackgroundDeleted&&!this.isGlobalBackgroundDefault)||t.name!==D))},isGlobalBackgroundDefault:()=>!!S,isGlobalBackgroundDeleted:()=>"backgroundColor"===S,isBackgroundDisabled(){return"disabled"===this.backgroundImage||!this.backgroundImage}},methods:{invertTextColor(t){return this.calculateLuma(t)>.6},calculateLuma(t){const[e,n,r]=this.hexToRGB(t);return(.2126*e+.7152*n+.0722*r)/255},hexToRGB(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null},async update(t){this.backgroundImage=t.backgroundImage,this.Theming.color=t.backgroundColor,this.$emit("update:background"),this.loading=!1},async setDefault(){this.loading="default";const t=await s.Z.post((0,i.generateUrl)("/apps/theming/background/default"));this.update(t.data)},async setShipped(t){this.loading=t;const e=await s.Z.post((0,i.generateUrl)("/apps/theming/background/shipped"),{value:t});this.update(e.data)},async setFile(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.loading="custom";const n=await s.Z.post((0,i.generateUrl)("/apps/theming/background/custom"),{value:t,color:e});this.update(n.data)},async removeBackground(){this.loading="remove";const t=await s.Z.delete((0,i.generateUrl)("/apps/theming/background/custom"));this.update(t.data)},async pickColor(t){this.loading="color";const e=t?.target?.dataset?.color||this.Theming?.color||"#0082c9",n=await s.Z.post((0,i.generateUrl)("/apps/theming/background/color"),{color:e});this.update(n.data)},debouncePickColor:p()((function(){this.pickColor(...arguments)}),200),pickFile(){(0,d.fn)(t("theming","Select a background from your files")).allowDirectories(!1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).setMultiSelect(!1).addButton({id:"select",label:t("theming","Select background"),callback:t=>{this.applyFile(t[0]?.path)},type:"primary"}).build().pick()},async applyFile(e){if(!e||"string"!=typeof e||0===e.trim().length||"/"===e)return w.error("No valid background have been selected",{path:e}),void(0,d.x2)(t("theming","No background has been selected"));this.loading="custom";let n=null,r=null;try{const t=(0,i.generateRemoteUrl)("dav/files/"+(0,o.ts)().uid+e);n=await s.Z.get(t,{responseType:"blob"});const a=URL.createObjectURL(n.data),l=await this.getColorPaletteFromBlob(a);r=l?.DarkVibrant?.hex,this.setFile(e,r),w.debug("Extracted colour",r,"from custom image",e,l)}catch(t){this.setFile(e),w.error("Unable to extract colour from custom image",{error:t,path:e,response:n,color:r})}},getColorPaletteFromBlob:t=>new Promise(((e,n)=>{new(v())(t).getPalette(((t,r)=>{t&&n(t),e(r)}))}))}};var I=r(93379),O=r.n(I),M=r(7795),P=r.n(M),L=r(90569),B=r.n(L),N=r(3565),F=r.n(N),j=r(19216),R=r.n(j),Z=r(44589),H=r.n(Z),U=r(22065),V={};V.styleTagTransform=H(),V.setAttributes=F(),V.insert=B().bind(null,"head"),V.domAPI=P(),V.insertStyleElement=R(),O()(U.Z,V),U.Z&&U.Z.locals&&U.Z.locals;const Y=(0,y.Z)(E,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[e("button",{class:{"icon-loading":"custom"===t.loading,"background background__filepicker":!0,"background--active":"custom"===t.backgroundImage},attrs:{"aria-pressed":"custom"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("theming","Custom background"))+"\n\t\t"),"custom"!==t.backgroundImage?e("ImageEdit",{attrs:{size:26}}):t._e(),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),e("button",{class:{"icon-loading":"default"===t.loading,"background background__default":!0,"background--active":"default"===t.backgroundImage},style:{"--border-color":t.Theming.defaultColor},attrs:{"aria-pressed":"default"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("theming","Default background"))+"\n\t\t"),e("Check",{attrs:{size:44}})],1),t._v(" "),e("div",{staticClass:"background-color",attrs:{"data-user-theming-background-color":""}},[e("NcColorPicker",{on:{input:t.debouncePickColor},model:{value:t.Theming.color,callback:function(e){t.$set(t.Theming,"color",e)},expression:"Theming.color"}},[e("NcButton",{attrs:{type:"ternary"}},[t._v("\n\t\t\t\t"+t._s(t.t("theming","Change color"))+"\n\t\t\t")])],1)],1),t._v(" "),e("button",{class:{"background background__delete":!0,"background--active":t.isBackgroundDisabled},attrs:{"aria-pressed":t.isBackgroundDisabled,"data-user-theming-background-clear":"",tabindex:"0"},on:{click:t.removeBackground}},[t._v("\n\t\t"+t._s(t.t("theming","No background"))+"\n\t\t"),t.isBackgroundDisabled?t._e():e("Close",{attrs:{size:32}}),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{key:n.name,class:{"background background__shipped":!0,"icon-loading":t.loading===n.name,"background--active":t.backgroundImage===n.name},style:{backgroundImage:"url("+n.preview+")","--border-color":n.details.primary_color},attrs:{title:n.details.attribution,"aria-label":n.details.description,"aria-pressed":t.backgroundImage===n.name,"data-color-bright":"dark"===n.details.theming,"data-user-theming-background-shipped":n.name,tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}},[e("Check",{attrs:{size:44}})],1)}))],2)}),[],!1,null,"1175e65a",null).exports;var z=r(25108);const q={name:"ItemPreview",components:{NcCheckboxRadioSwitch:c.Z},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType(){return this.unique?"switch":"radio"},name(){return this.unique?null:this.type},img(){return(0,i.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get(){return this.selected},set(t){z.debug("Changed theme",this.theme.id,t),this.unique?this.$emit("change",{enabled:!0===t,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}};var G=r(62782),X={};X.styleTagTransform=H(),X.setAttributes=F(),X.insert=B().bind(null,"head"),X.domAPI=P(),X.insertStyleElement=R(),O()(G.Z,X),G.Z&&G.Z.locals&&G.Z.locals;const W=(0,y.Z)(q,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theming__preview",class:"theming__preview--"+t.theme.id},[e("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+t.img+")"},on:{click:t.onToggle}}),t._v(" "),e("div",{staticClass:"theming__preview-description"},[e("h3",[t._v(t._s(t.theme.title))]),t._v(" "),e("p",{staticClass:"theming__preview-explanation"},[t._v(t._s(t.theme.description))]),t._v(" "),t.enforced?e("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[t._v("\n\t\t\t"+t._s(t.t("theming","Theme selection is enforced"))+"\n\t\t")]):t._e(),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.checked,disabled:t.enforced,name:t.name,type:t.switchType},on:{"update:checked":function(e){t.checked=e}}},[t._v("\n\t\t\t"+t._s(t.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"1a08e35a",null).exports;var $=r(31352),K=r(9568),Q=r(64886);function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}function tt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function et(){return et=Object.assign||function(t){for(var e=1;e"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function gt(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function ft(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&pt(t,e):pt(t,e))||r&&t===n)return t;if(t===n)break}while(t=gt(t))}return null}var mt,vt=/\s+/g;function bt(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(vt," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(vt," ")}}function At(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"==typeof n?"":"px")}}function _t(t,e){var n="";if("string"==typeof t)n=t;else do{var r=At(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function yt(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,a=r.length;if(n)for(;o=a:o<=a))return r;if(r===Ct())break;r=Et(r,!1)}return!1}function xt(t,e,n){for(var r=0,o=0,a=t.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,["evt"]);Ft.pluginEvent.bind(Ie)(t,e,nt({dragEl:Zt,parentEl:Ht,ghostEl:Ut,rootEl:Vt,nextEl:Yt,lastDownEl:zt,cloneEl:qt,cloneHidden:Gt,dragStarted:ie,putSortable:Jt,activeSortable:Ie.active,originalEvent:r,oldIndex:Xt,oldDraggableIndex:$t,newIndex:Wt,newDraggableIndex:Kt,hideGhostForTarget:Se,unhideGhostForTarget:De,cloneNowHidden:function(){Gt=!0},cloneNowShown:function(){Gt=!1},dispatchSortableEvent:function(t){Rt({sortable:e,name:t,originalEvent:r})}},o))};function Rt(t){!function(t){var e=t.sortable,n=t.rootEl,r=t.name,o=t.targetEl,a=t.cloneEl,i=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,p=t.putSortable,g=t.extraEventProperties;if(e=e||n&&n[Lt]){var f,m=e.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||ot||at?(f=document.createEvent("Event")).initEvent(r,!0,!0):f=new CustomEvent(r,{bubbles:!0,cancelable:!0}),f.to=i||n,f.from=l||n,f.item=o||n,f.clone=a,f.oldIndex=s,f.newIndex=c,f.oldDraggableIndex=u,f.newDraggableIndex=d,f.originalEvent=h,f.pullMode=p?p.lastPutMode:void 0;var b=nt({},g,Ft.getEventProperties(r,e));for(var A in b)f[A]=b[A];n&&n.dispatchEvent(f),m[v]&&m[v].call(e,f)}}(nt({putSortable:Jt,cloneEl:qt,targetEl:Zt,rootEl:Vt,oldIndex:Xt,oldDraggableIndex:$t,newIndex:Wt,newDraggableIndex:Kt},t))}var Zt,Ht,Ut,Vt,Yt,zt,qt,Gt,Xt,Wt,$t,Kt,Qt,Jt,te,ee,ne,re,oe,ae,ie,le,se,ce,ue,de=!1,he=!1,pe=[],ge=!1,fe=!1,me=[],ve=!1,be=[],Ae="undefined"!=typeof document,_e=st,ye=at||ot?"cssFloat":"float",Ce=Ae&&!ct&&!st&&"draggable"in document.createElement("div"),we=function(){if(Ae){if(ot)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),ke=function(t,e){var n=At(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=xt(t,0,e),a=xt(t,1,e),i=o&&At(o),l=a&&At(a),s=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+wt(o).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+wt(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var u="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==u?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||s>=r&&"none"===n[ye]||a&&"none"===n[ye]&&s+c>r)?"vertical":"horizontal"},xe=function(t){function e(t,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||l))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(r,o,a,i),n)(r,o,a,i);var s=(n?r:o).options.group.name;return!0===t||"string"==typeof t&&t===s||t.join&&t.indexOf(s)>-1}}var n={},r=t.group;r&&"object"==J(r)||(r={name:r}),n.name=r.name,n.checkPull=e(r.pull,!0),n.checkPut=e(r.put),n.revertClone=r.revertClone,t.group=n},Se=function(){!we&&Ut&&At(Ut,"display","none")},De=function(){!we&&Ut&&At(Ut,"display","")};Ae&&document.addEventListener("click",(function(t){if(he)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),he=!1,!1}),!0);var Te=function(t){if(Zt){t=t.touches?t.touches[0]:t;var e=(o=t.clientX,a=t.clientY,pe.some((function(t){if(!St(t)){var e=wt(t),n=t[Lt].options.emptyInsertThreshold,r=o>=e.left-n&&o<=e.right+n,l=a>=e.top-n&&a<=e.bottom+n;return n&&r&&l?i=t:void 0}})),i);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[Lt]._onDragOver(n)}}var o,a,i},Ee=function(t){Zt&&Zt.parentNode[Lt]._isOutsideThisEl(t.target)};function Ie(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=et({},e),t[Lt]=this;var n,r,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return ke(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Ie.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var a in Ft.initializePlugins(this,t,o),o)!(a in e)&&(e[a]=o[a]);for(var i in xe(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&Ce,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?dt(t,"pointerdown",this._onTapStart):(dt(t,"mousedown",this._onTapStart),dt(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(dt(t,"dragover",this),dt(t,"dragenter",this)),pe.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),et(this,(r=[],{captureAnimationState:function(){r=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==At(t,"display")&&t!==Ie.ghost){r.push({target:t,rect:wt(t)});var e=nt({},r[r.length-1].rect);if(t.thisAnimationDuration){var n=_t(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){r.push(t)},removeAnimationState:function(t){r.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var r in e)if(e.hasOwnProperty(r)&&e[r]===t[n][r])return Number(n);return-1}(r,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var o=!1,a=0;r.forEach((function(t){var n=0,r=t.target,i=r.fromRect,l=wt(r),s=r.prevFromRect,c=r.prevToRect,u=t.rect,d=_t(r,!0);d&&(l.top-=d.f,l.left-=d.e),r.toRect=l,r.thisAnimationDuration&&It(s,l)&&!It(i,l)&&(u.top-l.top)/(u.left-l.left)==(i.top-l.top)/(i.left-l.left)&&(n=function(t,e,n,r){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*r.animation}(u,s,c,e.options)),It(l,i)||(r.prevFromRect=i,r.prevToRect=l,n||(n=e.options.animation),e.animate(r,u,l,n)),n&&(o=!0,a=Math.max(a,n),clearTimeout(r.animationResetTimer),r.animationResetTimer=setTimeout((function(){r.animationTime=0,r.prevFromRect=null,r.fromRect=null,r.prevToRect=null,r.thisAnimationDuration=null}),n),r.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof t&&t()}),a):"function"==typeof t&&t(),r=[]},animate:function(t,e,n,r){if(r){At(t,"transition",""),At(t,"transform","");var o=_t(this.el),a=o&&o.a,i=o&&o.d,l=(e.left-n.left)/(a||1),s=(e.top-n.top)/(i||1);t.animatingX=!!l,t.animatingY=!!s,At(t,"transform","translate3d("+l+"px,"+s+"px,0)"),function(t){t.offsetWidth}(t),At(t,"transition","transform "+r+"ms"+(this.options.easing?" "+this.options.easing:"")),At(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){At(t,"transition",""),At(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),r)}}}))}function Oe(t,e,n,r,o,a,i,l){var s,c,u=t[Lt],d=u.options.onMove;return!window.CustomEvent||ot||at?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=r,s.related=o||e,s.relatedRect=a||wt(e),s.willInsertAfter=l,s.originalEvent=i,t.dispatchEvent(s),d&&(c=d.call(u,s,i)),c}function Me(t){t.draggable=!1}function Pe(){ve=!1}function Le(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,r=0;n--;)r+=e.charCodeAt(n);return r.toString(36)}function Be(t){return setTimeout(t,0)}function Ne(t){return clearTimeout(t)}Ie.prototype={constructor:Ie,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(le=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Zt):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,r=this.options,o=r.preventOnFilter,a=t.type,i=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,l=(i||t).target,s=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||l,c=r.filter;if(function(t){be.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var r=e[n];r.checked&&be.push(r)}}(n),!Zt&&!(/mousedown|pointerdown/.test(a)&&0!==t.button||r.disabled||s.isContentEditable||(l=ft(l,r.draggable,n,!1))&&l.animated||zt===l)){if(Xt=Dt(l),$t=Dt(l,r.draggable),"function"==typeof c){if(c.call(this,t,l,this))return Rt({sortable:e,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),jt("filter",e,{evt:t}),void(o&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(r){if(r=ft(s,r.trim(),n,!1))return Rt({sortable:e,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),jt("filter",e,{evt:t}),!0}))))return void(o&&t.cancelable&&t.preventDefault());r.handle&&!ft(s,r.handle,n,!1)||this._prepareDragStart(t,i,l)}}},_prepareDragStart:function(t,e,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!Zt&&n.parentNode===a){var s=wt(n);if(Vt=a,Ht=(Zt=n).parentNode,Yt=Zt.nextSibling,zt=n,Qt=i.group,Ie.dragged=Zt,te={target:Zt,clientX:(e||t).clientX,clientY:(e||t).clientY},oe=te.clientX-s.left,ae=te.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Zt.style["will-change"]="all",r=function(){jt("delayEnded",o,{evt:t}),Ie.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!it&&o.nativeDraggable&&(Zt.draggable=!0),o._triggerDragStart(t,e),Rt({sortable:o,name:"choose",originalEvent:t}),bt(Zt,i.chosenClass,!0))},i.ignore.split(",").forEach((function(t){yt(Zt,t.trim(),Me)})),dt(l,"dragover",Te),dt(l,"mousemove",Te),dt(l,"touchmove",Te),dt(l,"mouseup",o._onDrop),dt(l,"touchend",o._onDrop),dt(l,"touchcancel",o._onDrop),it&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Zt.draggable=!0),jt("delayStart",this,{evt:t}),!i.delay||i.delayOnTouchOnly&&!e||this.nativeDraggable&&(at||ot))r();else{if(Ie.eventCanceled)return void this._onDrop();dt(l,"mouseup",o._disableDelayedDrag),dt(l,"touchend",o._disableDelayedDrag),dt(l,"touchcancel",o._disableDelayedDrag),dt(l,"mousemove",o._delayedDragTouchMoveHandler),dt(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&dt(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Zt&&Me(Zt),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;ht(t,"mouseup",this._disableDelayedDrag),ht(t,"touchend",this._disableDelayedDrag),ht(t,"touchcancel",this._disableDelayedDrag),ht(t,"mousemove",this._delayedDragTouchMoveHandler),ht(t,"touchmove",this._delayedDragTouchMoveHandler),ht(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?dt(document,"pointermove",this._onTouchMove):dt(document,e?"touchmove":"mousemove",this._onTouchMove):(dt(Zt,"dragend",this),dt(Vt,"dragstart",this._onDragStart));try{document.selection?Be((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(de=!1,Vt&&Zt){jt("dragStarted",this,{evt:e}),this.nativeDraggable&&dt(document,"dragover",Ee);var n=this.options;!t&&bt(Zt,n.dragClass,!1),bt(Zt,n.ghostClass,!0),Ie.active=this,t&&this._appendGhost(),Rt({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(ee){this._lastX=ee.clientX,this._lastY=ee.clientY,Se();for(var t=document.elementFromPoint(ee.clientX,ee.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ee.clientX,ee.clientY))!==e;)e=t;if(Zt.parentNode[Lt]._isOutsideThisEl(t),e)do{if(e[Lt]&&e[Lt]._onDragOver({clientX:ee.clientX,clientY:ee.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);De()}},_onTouchMove:function(t){if(te){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,a=Ut&&_t(Ut,!0),i=Ut&&a&&a.a,l=Ut&&a&&a.d,s=_e&&ue&&Tt(ue),c=(o.clientX-te.clientX+r.x)/(i||1)+(s?s[0]-me[0]:0)/(i||1),u=(o.clientY-te.clientY+r.y)/(l||1)+(s?s[1]-me[1]:0)/(l||1);if(!Ie.active&&!de){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+10||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+10}(t,o,this)&&!f.animated){if(f===Zt)return I(!1);if(f&&a===t.target&&(i=f),i&&(n=wt(i)),!1!==Oe(Vt,a,Zt,e,i,n,t,!!i))return E(),a.appendChild(Zt),Ht=a,O(),I(!0)}else if(i.parentNode===a){n=wt(i);var m,v,b,A=Zt.parentNode!==a,_=!function(t,e,n){var r=n?t.left:t.top,o=n?t.right:t.bottom,a=n?t.width:t.height,i=n?e.left:e.top,l=n?e.right:e.bottom,s=n?e.width:e.height;return r===i||o===l||r+a/2===i+s/2}(Zt.animated&&Zt.toRect||e,i.animated&&i.toRect||n,o),y=o?"top":"left",C=kt(i,"top","top")||kt(Zt,"top","top"),w=C?C.scrollTop:void 0;if(le!==i&&(v=n[y],ge=!1,fe=!_&&l.invertSwap||A),m=function(t,e,n,r,o,a,i,l){var s=r?t.clientY:t.clientX,c=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,h=!1;if(!i)if(l&&ceu+c*a/2:sd-ce)return-se}else if(s>u+c*(1-o)/2&&sd-c*a/2)?s>u+c/2?1:-1:0}(t,i,n,o,_?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,fe,le===i),0!==m){var k=Dt(Zt);do{k-=m,b=Ht.children[k]}while(b&&("none"===At(b,"display")||b===Ut))}if(0===m||b===i)return I(!1);le=i,se=m;var x=i.nextElementSibling,S=!1,D=Oe(Vt,a,Zt,e,i,n,t,S=1===m);if(!1!==D)return 1!==D&&-1!==D||(S=1===D),ve=!0,setTimeout(Pe,30),E(),S&&!x?a.appendChild(Zt):i.parentNode.insertBefore(Zt,S?x:i),C&&Mt(C,0,w-C.scrollTop),Ht=Zt.parentNode,void 0===v||fe||(ce=Math.abs(v-wt(i)[y])),O(),I(!0)}if(a.contains(Zt))return I(!1)}return!1}function T(l,s){jt(l,p,nt({evt:t,isOwner:u,axis:o?"vertical":"horizontal",revert:r,dragRect:e,targetRect:n,canSort:d,fromSortable:h,target:i,completed:I,onMove:function(n,r){return Oe(Vt,a,Zt,e,n,wt(n),t,r)},changed:O},s))}function E(){T("dragOverAnimationCapture"),p.captureAnimationState(),p!==h&&h.captureAnimationState()}function I(e){return T("dragOverCompleted",{insertion:e}),e&&(u?c._hideClone():c._showClone(p),p!==h&&(bt(Zt,Jt?Jt.options.ghostClass:c.options.ghostClass,!1),bt(Zt,l.ghostClass,!0)),Jt!==p&&p!==Ie.active?Jt=p:p===Ie.active&&Jt&&(Jt=null),h===p&&(p._ignoreWhileAnimating=i),p.animateAll((function(){T("dragOverAnimationComplete"),p._ignoreWhileAnimating=null})),p!==h&&(h.animateAll(),h._ignoreWhileAnimating=null)),(i===Zt&&!Zt.animated||i===a&&!i.animated)&&(le=null),l.dragoverBubble||t.rootEl||i===document||(Zt.parentNode[Lt]._isOutsideThisEl(t.target),!e&&Te(t)),!l.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),g=!0}function O(){Wt=Dt(Zt),Kt=Dt(Zt,l.draggable),Rt({sortable:p,name:"change",toEl:a,newIndex:Wt,newDraggableIndex:Kt,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){ht(document,"mousemove",this._onTouchMove),ht(document,"touchmove",this._onTouchMove),ht(document,"pointermove",this._onTouchMove),ht(document,"dragover",Te),ht(document,"mousemove",Te),ht(document,"touchmove",Te)},_offUpEvents:function(){var t=this.el.ownerDocument;ht(t,"mouseup",this._onDrop),ht(t,"touchend",this._onDrop),ht(t,"pointerup",this._onDrop),ht(t,"touchcancel",this._onDrop),ht(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;Wt=Dt(Zt),Kt=Dt(Zt,n.draggable),jt("drop",this,{evt:t}),Ht=Zt&&Zt.parentNode,Wt=Dt(Zt),Kt=Dt(Zt,n.draggable),Ie.eventCanceled||(de=!1,fe=!1,ge=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ne(this.cloneId),Ne(this._dragStartId),this.nativeDraggable&&(ht(document,"drop",this),ht(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),lt&&At(document.body,"user-select",""),At(Zt,"transform",""),t&&(ie&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),Ut&&Ut.parentNode&&Ut.parentNode.removeChild(Ut),(Vt===Ht||Jt&&"clone"!==Jt.lastPutMode)&&qt&&qt.parentNode&&qt.parentNode.removeChild(qt),Zt&&(this.nativeDraggable&&ht(Zt,"dragend",this),Me(Zt),Zt.style["will-change"]="",ie&&!de&&bt(Zt,Jt?Jt.options.ghostClass:this.options.ghostClass,!1),bt(Zt,this.options.chosenClass,!1),Rt({sortable:this,name:"unchoose",toEl:Ht,newIndex:null,newDraggableIndex:null,originalEvent:t}),Vt!==Ht?(Wt>=0&&(Rt({rootEl:Ht,name:"add",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"remove",toEl:Ht,originalEvent:t}),Rt({rootEl:Ht,name:"sort",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Jt&&Jt.save()):Wt!==Xt&&Wt>=0&&(Rt({sortable:this,name:"update",toEl:Ht,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Ie.active&&(null!=Wt&&-1!==Wt||(Wt=Xt,Kt=$t),Rt({sortable:this,name:"end",toEl:Ht,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){jt("nulling",this),Vt=Zt=Ht=Ut=Yt=qt=zt=Gt=te=ee=ie=Wt=Kt=Xt=$t=le=se=Jt=Qt=Ie.dragged=Ie.ghost=Ie.clone=Ie.active=null,be.forEach((function(t){t.checked=!0})),be.length=ne=re=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Zt&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,a=this.options;r!0,"move:down":()=>!0,"update:focus":()=>!0},setup(t,e){let{emit:n}=e;const r=(0,a.iH)(),o=(0,a.iH)();let i=0;return{buttonUp:r,buttonDown:o,moveUp:()=>{n("move:up"),i=1},moveDown:()=>{n("move:down"),i=-1},keepFocus:()=>{0!==i&&(1!==i&&!t.isLast||t.isFirst?(0,a.Y3)((()=>o.value.$el.focus())):(0,a.Y3)((()=>r.value.$el.focus()))),i=0},t:$.Iu}}});var nn=r(40773),rn={};rn.styleTagTransform=H(),rn.setAttributes=F(),rn.insert=B().bind(null,"head"),rn.domAPI=P(),rn.insertStyleElement=R(),O()(nn.Z,rn),nn.Z&&nn.Z.locals&&nn.Z.locals;const on=(0,y.Z)(en,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("li",{class:{"order-selector-element":!0,"order-selector-element--disabled":t.app.default},attrs:{"data-cy-app-order-element":t.app.id},on:{focusin:function(e){return t.$emit("update:focus")}}},[e("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",role:"presentation"}},[e("image",{staticClass:"order-selector-element__icon",attrs:{preserveAspectRatio:"xMinYMin meet",x:"0",y:"0",width:"20",height:"20","xlink:href":t.app.icon}})]),t._v(" "),e("div",{staticClass:"order-selector-element__label"},[t._v("\n\t\t"+t._s(t.app.label??t.app.id)+"\n\t")]),t._v(" "),e("div",{staticClass:"order-selector-element__actions"},[e("NcButton",{directives:[{name:"show",rawName:"v-show",value:!t.isFirst&&!t.app.default,expression:"!isFirst && !app.default"}],ref:"buttonUp",attrs:{"aria-label":t.t("settings","Move up"),"aria-describedby":t.ariaDescribedby,"aria-details":t.ariaDetails,"data-cy-app-order-button":"up",type:"tertiary-no-background"},on:{click:t.moveUp},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconArrowUp",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isFirst||!!t.app.default,expression:"isFirst || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}}),t._v(" "),e("NcButton",{directives:[{name:"show",rawName:"v-show",value:!t.isLast&&!t.app.default,expression:"!isLast && !app.default"}],ref:"buttonDown",attrs:{"aria-label":t.t("settings","Move down"),"aria-describedby":t.ariaDescribedby,"aria-details":t.ariaDetails,"data-cy-app-order-button":"down",type:"tertiary-no-background"},on:{click:t.moveDown},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconArrowDown",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isLast||!!t.app.default,expression:"isLast || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}})],1)])}),[],!1,null,"081ebc45",null).exports,an=(0,a.aZ)({name:"AppOrderSelector",components:{AppOrderSelectorElement:on,Fragment:Qe.H},props:{ariaDetails:{type:String,default:null},value:{type:Array,required:!0}},emits:{"update:value":t=>Array.isArray(t)},setup(t,e){let{emit:n}=e;const r=(0,a.iH)(null),o=(0,a.Fl)({get:()=>t.value,set:e=>{const r=[...e].sort(((t,n)=>(n.default?1:0)-(t.default?1:0)||e.indexOf(t)-e.indexOf(n)));r.some(((e,n)=>{let{id:r}=e;return r!==t.value[n].id}))?n("update:value",r):i.value+=1}}),i=(0,a.iH)(0);!function(t,e,n={}){let r;const{document:o=K.Td$,...i}=n,l={onUpdate:t=>{!function(t,e,n){const r=(0,a.dq)(t),o=r?[...(0,Q.Tn)(t)]:(0,Q.Tn)(t);if(n>=0&&n{o.splice(n,0,i),r&&(t.value=o)}))}}(e,t.oldIndex,t.newIndex)}},s=()=>{const e="string"==typeof t?null==o?void 0:o.querySelector(t):(0,K.NXq)(t);e&&void 0===r&&(r=new Ke(e,{...l,...i}))},c=()=>{null==r||r.destroy(),r=void 0};(0,Q.u7)(s),(0,Q.IY)(c)}(r,o,{filter:".order-selector-element--disabled"});const l=(0,a.iH)([]);(0,a.ic)((()=>{l.value.forEach((t=>t.keepFocus()))}));const s=(0,a.iH)("");return{appList:o,listElement:r,moveDown:e=>{const r=e>0?t.value.slice(0,e):[];r.push(t.value[e+1]);const o=e{const r=e>1?t.value.slice(0,e-1):[];if(t.value[e-1]?.default)return;const o=[t.value[e-1]];e{s.value=(0,$.Iu)("theming","Current selected app: {app}, position {position} of {total}",{app:t.value[e].label,position:e+1,total:t.value.length})},renderCount:i,selectorElements:l}}}),ln=an;var sn=r(37049),cn={};cn.styleTagTransform=H(),cn.setAttributes=F(),cn.insert=B().bind(null,"head"),cn.domAPI=P(),cn.insertStyleElement=R(),O()(sn.Z,cn),sn.Z&&sn.Z.locals&&sn.Z.locals;var un=(0,y.Z)(ln,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("Fragment",[e("div",{staticClass:"hidden-visually",attrs:{id:t.statusInfoId,"aria-live":"polite",role:"status"}},[t._v("\n\t\t"+t._s(t.statusInfo)+"\n\t")]),t._v(" "),e("ol",{ref:"listElement",staticClass:"order-selector",attrs:{"data-cy-app-order":""}},t._l(t.appList,(function(n,r){return e("AppOrderSelectorElement",t._g({key:`${n.id}${t.renderCount}`,ref:"selectorElements",refInFor:!0,attrs:{app:n,"aria-details":t.ariaDetails,"aria-describedby":t.statusInfoId,"is-first":0===r||!!t.appList[r-1].default,"is-last":r===t.value.length-1}},n.default?{}:{"move:up":()=>t.moveUp(r),"move:down":()=>t.moveDown(r),"update:focus":()=>t.updateStatusInfo(r)}))})),1)])}),[],!1,null,"35797e31",null);const dn=un.exports,hn={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pn=(0,y.Z)(hn,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon undo-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var gn=r(50323),fn=r(25108);const mn=(0,a.aZ)({name:"UserAppMenuSection",components:{AppOrderSelector:dn,IconUndo:pn,NcButton:f.Z,NcNoteCard:gn.Z,NcSettingsSection:u.Z},setup(){const{userAppOrder:t,enforcedDefaultApp:e}=(0,l.j)("theming","navigationBar"),n=Object.values((0,l.j)("core","apps")).filter((t=>{let{type:e}=t;return"link"===e})).map((t=>({...t,label:t.name,default:t.default&&t.app===e}))),r=(0,a.iH)(!Array.isArray(t)||Object.values(t).length>0),o=(0,a.Fl)((()=>n.some(((t,e)=>{let{id:n}=t;return n!==p.value[e].id})))),c="theming-apporder-changed-infocard",u="theming-apporder-changed-infocard",h=(0,a.Fl)((()=>(o.value?`${c} `:"")+(e?u:""))),p=(0,a.iH)([...n]),g=async(t,e)=>{const n=(0,i.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:t});return await s.Z.post(n,{configValue:JSON.stringify(e)})};return{appOrder:p,updateAppOrder:t=>{const e={};t.forEach(((t,n)=>{let{app:r,id:o}=t;e[o]={order:n,app:r}})),g("apporder",e).then((()=>{p.value=t,r.value=!0})).catch((t=>{fn.warn("Could not set the app order",t),(0,d.x2)((0,$.Iu)("theming","Could not set the app order"))}))},resetAppOrder:async()=>{try{await g("apporder",[]),r.value=!1;const{data:t}=await s.Z.get((0,i.generateOcsUrl)("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});p.value=t.ocs.data.map((t=>({...t,label:t.name,default:t.default&&t.app===e})))}catch(t){fn.warn(t),(0,d.x2)((0,$.Iu)("theming","Could not reset the app order"))}},enforcedDefaultApp:e,hasAppOrderChanged:o,hasCustomAppOrder:r,ariaDetailsAppOrder:h,elementIdAppOrderChanged:c,elementIdEnforcedDefaultApp:u,t:$.Iu}}}),vn=mn;var bn=r(36567),An={};An.styleTagTransform=H(),An.setAttributes=F(),An.insert=B().bind(null,"head"),An.domAPI=P(),An.insertStyleElement=R(),O()(bn.Z,An),bn.Z&&bn.Z.locals&&bn.Z.locals;const _n=(0,y.Z)(vn,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcSettingsSection",{attrs:{name:t.t("theming","Navigation bar settings")}},[e("p",[t._v("\n\t\t"+t._s(t.t("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo."))+"\n\t")]),t._v(" "),t.enforcedDefaultApp?e("NcNoteCard",{attrs:{id:t.elementIdEnforcedDefaultApp,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The default app can not be changed because it was configured by the administrator."))+"\n\t")]):t._e(),t._v(" "),t.hasAppOrderChanged?e("NcNoteCard",{attrs:{id:t.elementIdAppOrderChanged,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The app order was changed, to see it in action you have to reload the page."))+"\n\t")]):t._e(),t._v(" "),e("AppOrderSelector",{staticClass:"user-app-menu-order",attrs:{"aria-details":t.ariaDetailsAppOrder,value:t.appOrder},on:{"update:value":t.updateAppOrder}}),t._v(" "),e("NcButton",{attrs:{"data-test-id":"btn-apporder-reset",disabled:!t.hasCustomAppOrder,type:"tertiary"},on:{click:t.resetAppOrder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconUndo",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("theming","Reset default app order"))+"\n\t")])],1)}),[],!1,null,"ee0f3d1a",null).exports;var yn=r(25108);const Cn=(0,l.j)("theming","themes",[]),wn=(0,l.j)("theming","enforceTheme",""),kn=(0,l.j)("theming","shortcutsDisabled",!1),xn=(0,l.j)("theming","isUserThemingDisabled"),Sn={name:"UserThemes",components:{ItemPreview:W,NcCheckboxRadioSwitch:c.Z,NcSettingsSection:u.Z,BackgroundSettings:Y,UserAppMenuSection:_n},data:()=>({availableThemes:Cn,enforceTheme:wn,shortcutsDisabled:kn,isUserThemingDisabled:xn}),computed:{themes(){return this.availableThemes.filter((t=>1===t.type))},fonts(){return this.availableThemes.filter((t=>2===t.type))},selectedTheme(){return this.themes.find((t=>!0===t.enabled))||this.themes[0]},description(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","
")},guidelinesLink:()=>'',descriptionDetail(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"")},issuetrackerLink:()=>'',designteamLink:()=>''},watch:{shortcutsDisabled(t){this.changeShortcutsDisabled(t)}},methods:{refreshGlobalStyles(){[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))},updateBackground(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.refreshGlobalStyles()},changeTheme(t){let{enabled:e,id:n}=t;this.themes.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},changeFont(t){let{enabled:e,id:n}=t;this.fonts.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},async changeShortcutsDisabled(t){t?await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"}):await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"})},updateBodyAttributes(){const t=this.themes.filter((t=>!0===t.enabled)).map((t=>t.id)),e=this.fonts.filter((t=>!0===t.enabled)).map((t=>t.id));this.themes.forEach((t=>{document.body.toggleAttribute(`data-theme-${t.id}`,t.enabled)})),this.fonts.forEach((t=>{document.body.toggleAttribute(`data-theme-${t.id}`,t.enabled)})),document.body.setAttribute("data-themes",[...t,...e].join(","))},async selectItem(e,n){try{e?await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:n}),method:"PUT"}):await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:n}),method:"DELETE"})}catch(e){yn.error(e,e.response),OC.Notification.showTemporary(t("theming",e.response.data.ocs.meta.message+". Unable to apply the setting."))}}}};var Dn=r(29512),Tn={};Tn.styleTagTransform=H(),Tn.setAttributes=F(),Tn.insert=B().bind(null,"head"),Tn.domAPI=P(),Tn.insertStyleElement=R(),O()(Dn.Z,Tn),Dn.Z&&Dn.Z.locals&&Dn.Z.locals;const En=(0,y.Z)(Sn,(function(){var t=this,e=t._self._c;return e("section",[e("NcSettingsSection",{staticClass:"theming",attrs:{name:t.t("theming","Appearance and accessibility settings"),"limit-width":!1}},[e("p",{domProps:{innerHTML:t._s(t.description)}}),t._v(" "),e("p",{domProps:{innerHTML:t._s(t.descriptionDetail)}}),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.themes,(function(n){return e("ItemPreview",{key:n.id,attrs:{enforced:n.id===t.enforceTheme,selected:t.selectedTheme.id===n.id,theme:n,unique:1===t.themes.length,type:"theme"},on:{change:t.changeTheme}})})),1),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.fonts,(function(n){return e("ItemPreview",{key:n.id,attrs:{selected:n.enabled,theme:n,unique:1===t.fonts.length,type:"font"},on:{change:t.changeFont}})})),1)]),t._v(" "),e("NcSettingsSection",{staticClass:"background",attrs:{name:t.t("theming","Background"),"data-user-theming-background-disabled":""}},[t.isUserThemingDisabled?[e("p",[t._v(t._s(t.t("theming","Customization has been disabled by your administrator")))])]:[e("p",[t._v(t._s(t.t("theming","Set a custom background")))]),t._v(" "),e("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":t.refreshGlobalStyles}})]],2),t._v(" "),e("NcSettingsSection",{attrs:{name:t.t("theming","Keyboard shortcuts")}},[e("p",[t._v(t._s(t.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.shortcutsDisabled,type:"switch"},on:{"update:checked":function(e){t.shortcutsDisabled=e},change:t.changeShortcutsDisabled}},[t._v("\n\t\t\t"+t._s(t.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),t._v(" "),e("UserAppMenuSection")],1)}),[],!1,null,"d643b9e0",null).exports;r.nc=btoa((0,o.IH)()),a.ZP.prototype.OC=OC,a.ZP.prototype.t=t;const In=new(a.ZP.extend(En));In.$mount("#theming"),In.$on("update:background",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))}))},29512:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".theming p[data-v-d643b9e0]{max-width:800px}.theming[data-v-d643b9e0] a{font-weight:bold}.theming[data-v-d643b9e0] a:hover,.theming[data-v-d643b9e0] a:focus{text-decoration:underline}.theming__preview-list[data-v-d643b9e0]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-d643b9e0]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-d643b9e0]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]);const l=i},37049:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".order-selector[data-v-35797e31]{width:max-content;min-width:260px}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelector.vue"],names:[],mappings:"AACA,iCACC,iBAAA,CACA,eAAA",sourcesContent:["\n.order-selector {\n\twidth: max-content;\n\tmin-width: 260px; // align with NcSelect\n}\n"],sourceRoot:""}]);const l=i},40773:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelectorElement.vue"],names:[],mappings:"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA",sourcesContent:["\n.order-selector-element {\n\t// hide default styling\n\tlist-style: none;\n\t// Align children\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\t// Spacing\n\tgap: 12px;\n\tpadding-inline: 12px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&--disabled {\n\t\tborder-color: var(--color-text-maxcontrast);\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t.order-selector-element__icon {\n\t\t\topacity: 75%;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tflex: 0 0;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 6px;\n\t}\n\n\t&__label {\n\t\tflex: 1 1;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&__placeholder {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t}\n\n\t&__icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n}\n"],sourceRoot:""}]);const l=i},22065:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA",sourcesContent:["\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background-color {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-color: var(--color-main-background) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},62782:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".theming__preview[data-v-1a08e35a]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-1a08e35a],.theming__preview *[data-v-1a08e35a]{user-select:none}.theming__preview-image[data-v-1a08e35a]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-1a08e35a]{margin-bottom:10px}.theming__preview-description[data-v-1a08e35a]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-1a08e35a]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-1a08e35a]{padding:12px 0}.theming__preview--default[data-v-1a08e35a]{grid-column:span 2}.theming__preview-warning[data-v-1a08e35a]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-1a08e35a]{flex-direction:column}.theming__preview-image[data-v-1a08e35a]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-explanation {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},36567:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".user-app-menu-order[data-v-ee0f3d1a]{margin-block:12px}","",{version:3,sources:["webpack://./apps/theming/src/components/UserAppMenuSection.vue"],names:[],mappings:"AACA,sCACC,iBAAA",sourcesContent:["\n.user-app-menu-order {\n\tmargin-block: 12px;\n}\n"],sourceRoot:""}]);const l=i},89881:(t,e,n)=>{var r=n(47816),o=n(99291)(r);t.exports=o},80760:(t,e,n)=>{var r=n(89881);t.exports=function(t,e){var n=[];return r(t,(function(t,r,o){e(t,r,o)&&n.push(t)})),n}},47816:(t,e,n)=>{var r=n(28483),o=n(3674);t.exports=function(t,e){return t&&r(t,e,o)}},99291:(t,e,n)=>{var r=n(98612);t.exports=function(t,e){return function(n,o){if(null==n)return n;if(!r(n))return t(n,o);for(var a=n.length,i=e?a:-1,l=Object(n);(e?i--:++i{var r=n(5976),o=n(77813),a=n(16612),i=n(81704),l=Object.prototype,s=l.hasOwnProperty,c=r((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&a(e[0],e[1],c)&&(r=1);++n{var r=n(34963),o=n(80760),a=n(67206),i=n(1469);t.exports=function(t,e){return(i(t)?r:o)(t,a(e,3))}},1082:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},o=r(n(8110)),a=r(n(21904));o.default.DefaultOpts.ImageClass=a.default,t.exports=o.default},31564:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(n(8110)),a=n(66678),i=function(){function t(t,e){void 0===e&&(e={}),this._src=t,this._opts=e,this._opts.filters=a(o.default.DefaultOpts.filters)}return t.prototype.maxColorCount=function(t){return this._opts.colorCount=t,this},t.prototype.maxDimension=function(t){return this._opts.maxDimension=t,this},t.prototype.addFilter=function(t){return this._opts.filters.push(t),this},t.prototype.removeFilter=function(t){var e=this._opts.filters.indexOf(t);return e>0&&this._opts.filters.splice(e),this},t.prototype.clearFilters=function(){return this._opts.filters=[],this},t.prototype.quality=function(t){return this._opts.quality=t,this},t.prototype.useImageClass=function(t){return this._opts.ImageClass=t,this},t.prototype.useGenerator=function(t){return this._opts.generator=t,this},t.prototype.useQuantizer=function(t){return this._opts.quantizer=t,this},t.prototype.build=function(){return new o.default(this._src,this._opts)},t.prototype.getPalette=function(t){return this.build().getPalette(t)},t.prototype.getSwatches=function(t){return this.build().getPalette(t)},t}();e.default=i},97248:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Swatch=void 0;var r=n(67294),o=n(63105),a=function(){function t(t,e){this._rgb=t,this._population=e}return t.applyFilter=function(t,e){return"function"==typeof e?o(t,(function(t){var n=t.r,r=t.g,o=t.b;return e(n,r,o,255)})):t},Object.defineProperty(t.prototype,"r",{get:function(){return this._rgb[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this._rgb[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this._rgb[2]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rgb",{get:function(){return this._rgb},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hsl",{get:function(){if(!this._hsl){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hsl=r.rgbToHsl(e,n,o)}return this._hsl},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hex",{get:function(){if(!this._hex){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hex=r.rgbToHex(e,n,o)}return this._hex},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"population",{get:function(){return this._population},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{rgb:this.rgb,population:this.population}},t.prototype.getRgb=function(){return this._rgb},t.prototype.getHsl=function(){return this.hsl},t.prototype.getPopulation=function(){return this._population},t.prototype.getHex=function(){return this.hex},t.prototype.getYiq=function(){if(!this._yiq){var t=this._rgb;this._yiq=(299*t[0]+587*t[1]+114*t[2])/1e3}return this._yiq},Object.defineProperty(t.prototype,"titleTextColor",{get:function(){return this._titleTextColor||(this._titleTextColor=this.getYiq()<200?"#fff":"#000"),this._titleTextColor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bodyTextColor",{get:function(){return this._bodyTextColor||(this._bodyTextColor=this.getYiq()<150?"#fff":"#000"),this._bodyTextColor},enumerable:!1,configurable:!0}),t.prototype.getTitleTextColor=function(){return this.titleTextColor},t.prototype.getBodyTextColor=function(){return this.bodyTextColor},t}();e.Swatch=a},68498:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){return r>=125&&!(t>250&&e>250&&n>250)}},63096:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.combineFilters=void 0;var r=n(68498);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}}),e.combineFilters=function(t){return Array.isArray(t)&&0!==t.length?function(e,n,r,o){if(0===o)return!1;for(var a=0;a{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(97248),o=n(67294),a=n(91747),i={targetDarkLuma:.26,maxDarkLuma:.45,minLightLuma:.55,targetLightLuma:.74,minNormalLuma:.3,targetNormalLuma:.5,maxNormalLuma:.7,targetMutesSaturation:.3,maxMutesSaturation:.4,targetVibrantSaturation:1,minVibrantSaturation:.35,weightSaturation:3,weightLuma:6.5,weightPopulation:.5};function l(t,e,n,r,o,a,i,l,s,c){var u=null,d=0;return e.forEach((function(e){var h=e.getHsl(),p=h[1],g=h[2];if(p>=l&&p<=s&&g>=o&&g<=a&&!function(t,e){return t.Vibrant===e||t.DarkVibrant===e||t.LightVibrant===e||t.Muted===e||t.DarkMuted===e||t.LightMuted===e}(t,e)){var f=function(t,e,n,r,o,a,i){function l(t,e){return 1-Math.abs(t-e)}return function(){for(var t=[],e=0;ed)&&(u=e,d=f)}})),u}e.default=function(t,e){e=a({},e,i);var n=function(t){var e=0;return t.forEach((function(t){e=Math.max(e,t.getPopulation())})),e}(t),s=function(t,e,n){var r={};return r.Vibrant=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.LightVibrant=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.DarkVibrant=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.Muted=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.LightMuted=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.DarkMuted=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r}(t,n,e);return function(t,e,n){if(null===t.Vibrant&&null===t.DarkVibrant&&null===t.LightVibrant){if(null===t.DarkVibrant&&null!==t.DarkMuted){var a=t.DarkMuted.getHsl(),i=a[0],l=a[1],s=a[2];s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.LightMuted){var c=t.LightMuted.getHsl();i=c[0],l=c[1],s=c[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}}if(null===t.Vibrant&&null!==t.DarkVibrant){var u=t.DarkVibrant.getHsl();i=u[0],l=u[1],s=u[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}else if(null===t.Vibrant&&null!==t.LightVibrant){var d=t.LightVibrant.getHsl();i=d[0],l=d[1],s=d[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkVibrant&&null!==t.Vibrant){var h=t.Vibrant.getHsl();i=h[0],l=h[1],s=h[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.Vibrant){var p=t.Vibrant.getHsl();i=p[0],l=p[1],s=p[2],s=n.targetLightLuma,t.LightVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.Muted&&null!==t.Vibrant){var g=t.Vibrant.getHsl();i=g[0],l=g[1],s=g[2],s=n.targetMutesSaturation,t.Muted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkMuted&&null!==t.DarkVibrant){var f=t.DarkVibrant.getHsl();i=f[0],l=f[1],s=f[2],s=n.targetMutesSaturation,t.DarkMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightMuted&&null!==t.LightVibrant){var m=t.LightVibrant.getHsl();i=m[0],l=m[1],s=m[2],s=n.targetMutesSaturation,t.LightMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}}(s,0,e),s}},77234:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(73977);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}})},83614:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImageBase=void 0;var n=function(){function t(){}return t.prototype.scaleDown=function(t){var e=this.getWidth(),n=this.getHeight(),r=1;if(t.maxDimension>0){var o=Math.max(e,n);o>t.maxDimension&&(r=t.maxDimension/o)}else r=1/t.quality;r<1&&this.resize(e*r,n*r,r)},t.prototype.applyFilter=function(t){var e=this.getImageData();if("function"==typeof t)for(var n=e.data,r=n.length/4,o=void 0,a=0;a{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WebWorker=void 0;var r=n(20628);Object.defineProperty(e,"MMCQ",{enumerable:!0,get:function(){return r.default}}),e.WebWorker=null},20628:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=n(97248),a=r(n(5828)),i=r(n(37514));function l(t,e){for(var n=t.size();t.size()0))break;var o=r.split(),a=o[0],i=o[1];if(t.push(a),i&&i.count()>0&&t.push(i),t.size()===n)break;n=t.size()}}e.default=function(t,e){if(0===t.length||e.colorCount<2||e.colorCount>256)throw new Error("Wrong MMCQ parameters");var n=a.default.build(t),r=n.hist,s=(Object.keys(r).length,new i.default((function(t,e){return t.count()-e.count()})));s.push(n),l(s,.75*e.colorCount);var c=new i.default((function(t,e){return t.count()*t.volume()-e.count()*e.volume()}));return c.contents=s.contents,l(c,e.colorCount-c.size()),function(t){for(var e=[];t.size();){var n=t.pop(),r=n.avg();r[0],r[1],r[2],e.push(new o.Swatch(r,n.count()))}return e}(c)}},37514:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this._comparator=t,this.contents=[],this._sorted=!1}return t.prototype._sort=function(){this._sorted||(this.contents.sort(this._comparator),this._sorted=!0)},t.prototype.push=function(t){this.contents.push(t),this._sorted=!1},t.prototype.peek=function(t){return this._sort(),t="number"==typeof t?t:this.contents.length-1,this.contents[t]},t.prototype.pop=function(){return this._sort(),this.contents.pop()},t.prototype.size=function(){return this.contents.length},t.prototype.map=function(t){return this._sort(),this.contents.map(t)},t}();e.default=n},5828:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(67294),o=function(){function t(t,e,n,r,o,a,i){this._volume=-1,this._count=-1,this.dimension={r1:t,r2:e,g1:n,g2:r,b1:o,b2:a},this.hist=i}return t.build=function(e,n){var o,a,i,l,s,c,u,d,h,p=1<<3*r.SIGBITS,g=new Uint32Array(p);o=i=s=0,a=l=c=Number.MAX_VALUE;for(var f=e.length/4,m=0;m>=r.RSHIFT,d>>=r.RSHIFT,h>>=r.RSHIFT,g[r.getColorIndex(u,d,h)]+=1,u>o&&(o=u),ui&&(i=d),ds&&(s=h),h>=r.RSHIFT,n>>=r.RSHIFT,o>>=r.RSHIFT,e>=i&&e<=l&&n>=s&&n<=c&&o>=u&&o<=d},t.prototype.split=function(){var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=this.count();if(!c)return[];if(1===c)return[this.clone()];var u,d,h=o-n+1,p=i-a+1,g=s-l+1,f=Math.max(h,p,g),m=null;u=d=0;var v=null;if(f===h){v="r",m=new Uint32Array(o+1);for(var b=n;b<=o;b++){u=0;for(var A=a;A<=i;A++)for(var _=l;_<=s;_++)u+=t[r.getColorIndex(b,A,_)];d+=u,m[b]=d}}else if(f===p)for(v="g",m=new Uint32Array(i+1),A=a;A<=i;A++){for(u=0,b=n;b<=o;b++)for(_=l;_<=s;_++)u+=t[r.getColorIndex(b,A,_)];d+=u,m[A]=d}else for(v="b",m=new Uint32Array(s+1),_=l;_<=s;_++){for(u=0,b=n;b<=o;b++)for(A=a;A<=i;A++)u+=t[r.getColorIndex(b,A,_)];d+=u,m[_]=d}for(var y=-1,C=new Uint32Array(m.length),w=0;wd/2&&(y=w),C[w]=d-k}var x=this;return function(t){var e=t+"1",n=t+"2",r=x.dimension[e],o=x.dimension[n],a=x.clone(),i=x.clone(),l=y-r,s=o-y;for(l<=s?(o=Math.min(o-1,~~(y+s/2)),o=Math.max(0,o)):(o=Math.max(r,~~(y-1-l/2)),o=Math.min(x.dimension[n],o));!m[o];)o++;for(var c=C[o];!c&&m[o-1];)c=C[--o];return a.dimension[n]=o,i.dimension[e]=o+1,[a,i]}(v)},t}();e.default=o},67294:(t,e)=>{"use strict";function n(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return null===e?null:[e[1],e[2],e[3]].map((function(t){return parseInt(t,16)}))}function r(t,e,n){return e/=255,n/=255,t=(t/=255)>.04045?Math.pow((t+.005)/1.055,2.4):t/12.92,e=e>.04045?Math.pow((e+.005)/1.055,2.4):e/12.92,n=n>.04045?Math.pow((n+.005)/1.055,2.4):n/12.92,[.4124*(t*=100)+.3576*(e*=100)+.1805*(n*=100),.2126*t+.7152*e+.0722*n,.0193*t+.1192*e+.9505*n]}function o(t,e,n){return e/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(e=e>.008856?Math.pow(e,1/3):7.787*e+16/116)-16,500*(t-e),200*(e-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function a(t,e,n){var a=r(t,e,n);return o(a[0],a[1],a[2])}function i(t,e){var n=t[0],r=t[1],o=t[2],a=e[0],i=e[1],l=e[2],s=n-a,c=r-i,u=o-l,d=Math.sqrt(r*r+o*o),h=a-n,p=Math.sqrt(i*i+l*l)-d,g=Math.sqrt(s*s+c*c+u*u),f=Math.sqrt(g)>Math.sqrt(Math.abs(h))+Math.sqrt(Math.abs(p))?Math.sqrt(g*g-h*h-p*p):0;return h/=1,p/=1*(1+.045*d),f/=1*(1+.015*d),Math.sqrt(h*h+p*p+f*f)}function l(t,e){return i(a.apply(void 0,t),a.apply(void 0,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.getColorIndex=e.getColorDiffStatus=e.hexDiff=e.rgbDiff=e.deltaE94=e.rgbToCIELab=e.xyzToCIELab=e.rgbToXyz=e.hslToRgb=e.rgbToHsl=e.rgbToHex=e.hexToRgb=e.defer=e.RSHIFT=e.SIGBITS=e.DELTAE94_DIFF_STATUS=void 0,e.DELTAE94_DIFF_STATUS={NA:0,PERFECT:1,CLOSE:2,GOOD:10,SIMILAR:50},e.SIGBITS=5,e.RSHIFT=8-e.SIGBITS,e.defer=function(){var t,e,n=new Promise((function(n,r){t=n,e=r}));return{resolve:t,reject:e,promise:n}},e.hexToRgb=n,e.rgbToHex=function(t,e,n){return"#"+((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1,7)},e.rgbToHsl=function(t,e,n){t/=255,e/=255,n/=255;var r,o,a=Math.max(t,e,n),i=Math.min(t,e,n),l=(a+i)/2;if(a===i)r=o=0;else{var s=a-i;switch(o=l>.5?s/(2-a-i):s/(a+i),a){case t:r=(e-n)/s+(e1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(0===e)r=o=a=n;else{var l=n<.5?n*(1+e):n+e-n*e,s=2*n-l;r=i(s,l,t+1/3),o=i(s,l,t),a=i(s,l,t-1/3)}return[255*r,255*o,255*a]},e.rgbToXyz=r,e.xyzToCIELab=o,e.rgbToCIELab=a,e.deltaE94=i,e.rgbDiff=l,e.hexDiff=function(t,e){return l(n(t),n(e))},e.getColorDiffStatus=function(t){return t{}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(u=0;u=o)&&Object.keys(i.O).every((t=>i.O[t](n[s])))?n.splice(s--,1):(l=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,n)=>(i.f[n](t,e),e)),[])),i.u=t=>t+"-"+t+".js?v="+{4720:"67ff1816113751e83e78",6512:"930a9f0a458cd206d9d1"}[t],i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},r="nextcloud:",i.l=(t,e,o,a)=>{if(n[t])n[t].push(e);else{var l,s;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{l.onerror=l.onload=null,clearTimeout(p);var o=n[t];if(delete n[t],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((t=>t(r))),e)return e(r)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=h.bind(null,l.onerror),l.onload=h.bind(null,l.onload),s&&document.head.appendChild(l)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=1474,(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&!t;)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b=document.baseURI||self.location.href;var t={1474:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(((n,o)=>r=t[e]=[n,o]));n.push(r[2]=o);var a=i.p+i.u(e),l=new Error;i.l(a,(n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;l.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",l.name="ChunkLoadError",l.type=o,l.request=a,r[1](l)}}),"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,n)=>{var r,o,a=n[0],l=n[1],s=n[2],c=0;if(a.some((e=>0!==t[e]))){for(r in l)i.o(l,r)&&(i.m[r]=l[r]);if(s)var u=s(i)}for(e&&e(n);ci(52689)));l=i.O(l)})(); -//# sourceMappingURL=theming-personal-theming.js.map?v=ef365cb983171d4be6f1 \ No newline at end of file +(()=>{var e,n,r,o={72347:(e,n,r)=>{"use strict";var o=r(77958),a=r(20144),i=r(79753),l=r(43554),s=r(93664),c=r(9359),u=r(90580),d=r(64024),h=(r(97248),r(20296)),p=r.n(h),g=r(42416),f=r(54572),m=r(1082),v=r.n(m),b=r(11734),A=r(44893);const _={name:"ImageEditIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var y=r(51900);const C=(0,y.Z)(_,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-edit-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var w=r(25108);const k=(0,l.j)("theming","backgroundImage"),x=(0,l.j)("theming","shippedBackgrounds"),S=(0,l.j)("theming","themingDefaultBackground"),D=(0,l.j)("theming","defaultShippedBackground"),T=t=>(0,i.generateFilePath)("theming","","img/background/")+t,E={name:"BackgroundSettings",components:{Check:b.Z,Close:A.Z,ImageEdit:C,NcButton:f.Z,NcColorPicker:g.N},data:()=>({loading:!1,Theming:(0,l.j)("theming","data",{}),backgroundImage:k}),computed:{shippedBackgrounds(){return Object.keys(x).map((t=>({name:t,url:T(t),preview:T("preview/"+t),details:x[t]}))).filter((t=>!(!this.isGlobalBackgroundDeleted&&!this.isGlobalBackgroundDefault)||t.name!==D))},isGlobalBackgroundDefault:()=>!!S,isGlobalBackgroundDeleted:()=>"backgroundColor"===S,isBackgroundDisabled(){return"disabled"===this.backgroundImage||!this.backgroundImage}},methods:{invertTextColor(t){return this.calculateLuma(t)>.6},calculateLuma(t){const[e,n,r]=this.hexToRGB(t);return(.2126*e+.7152*n+.0722*r)/255},hexToRGB(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null},async update(t){this.backgroundImage=t.backgroundImage,this.Theming.color=t.backgroundColor,this.$emit("update:background"),this.loading=!1},async setDefault(){this.loading="default";const t=await s.Z.post((0,i.generateUrl)("/apps/theming/background/default"));this.update(t.data)},async setShipped(t){this.loading=t;const e=await s.Z.post((0,i.generateUrl)("/apps/theming/background/shipped"),{value:t});this.update(e.data)},async setFile(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.loading="custom";const n=await s.Z.post((0,i.generateUrl)("/apps/theming/background/custom"),{value:t,color:e});this.update(n.data)},async removeBackground(){this.loading="remove";const t=await s.Z.delete((0,i.generateUrl)("/apps/theming/background/custom"));this.update(t.data)},async pickColor(t){this.loading="color";const e=t?.target?.dataset?.color||this.Theming?.color||"#0082c9",n=await s.Z.post((0,i.generateUrl)("/apps/theming/background/color"),{color:e});this.update(n.data)},debouncePickColor:p()((function(){this.pickColor(...arguments)}),200),pickFile(){(0,d.fn)(t("theming","Select a background from your files")).allowDirectories(!1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).setMultiSelect(!1).addButton({id:"select",label:t("theming","Select background"),callback:t=>{this.applyFile(t[0]?.path)},type:"primary"}).build().pick()},async applyFile(e){if(!e||"string"!=typeof e||0===e.trim().length||"/"===e)return w.error("No valid background have been selected",{path:e}),void(0,d.x2)(t("theming","No background has been selected"));this.loading="custom";let n=null,r=null;try{const t=(0,i.generateRemoteUrl)("dav/files/"+(0,o.ts)().uid+e);n=await s.Z.get(t,{responseType:"blob"});const a=URL.createObjectURL(n.data),l=await this.getColorPaletteFromBlob(a);r=l?.DarkVibrant?.hex,this.setFile(e,r),w.debug("Extracted colour",r,"from custom image",e,l)}catch(t){this.setFile(e),w.error("Unable to extract colour from custom image",{error:t,path:e,response:n,color:r})}},getColorPaletteFromBlob:t=>new Promise(((e,n)=>{new(v())(t).getPalette(((t,r)=>{t&&n(t),e(r)}))}))}};var I=r(93379),O=r.n(I),M=r(7795),P=r.n(M),L=r(90569),B=r.n(L),N=r(3565),F=r.n(N),j=r(19216),R=r.n(j),Z=r(44589),H=r.n(Z),U=r(22065),V={};V.styleTagTransform=H(),V.setAttributes=F(),V.insert=B().bind(null,"head"),V.domAPI=P(),V.insertStyleElement=R(),O()(U.Z,V),U.Z&&U.Z.locals&&U.Z.locals;const Y=(0,y.Z)(E,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[e("button",{class:{"icon-loading":"custom"===t.loading,"background background__filepicker":!0,"background--active":"custom"===t.backgroundImage},attrs:{"aria-pressed":"custom"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("theming","Custom background"))+"\n\t\t"),"custom"!==t.backgroundImage?e("ImageEdit",{attrs:{size:26}}):t._e(),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),e("button",{class:{"icon-loading":"default"===t.loading,"background background__default":!0,"background--active":"default"===t.backgroundImage},style:{"--border-color":t.Theming.defaultColor},attrs:{"aria-pressed":"default"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("theming","Default background"))+"\n\t\t"),e("Check",{attrs:{size:44}})],1),t._v(" "),e("div",{staticClass:"background-color",attrs:{"data-user-theming-background-color":""}},[e("NcColorPicker",{on:{input:t.debouncePickColor},model:{value:t.Theming.color,callback:function(e){t.$set(t.Theming,"color",e)},expression:"Theming.color"}},[e("NcButton",{attrs:{type:"ternary"}},[t._v("\n\t\t\t\t"+t._s(t.t("theming","Change color"))+"\n\t\t\t")])],1)],1),t._v(" "),e("button",{class:{"background background__delete":!0,"background--active":t.isBackgroundDisabled},attrs:{"aria-pressed":t.isBackgroundDisabled,"data-user-theming-background-clear":"",tabindex:"0"},on:{click:t.removeBackground}},[t._v("\n\t\t"+t._s(t.t("theming","No background"))+"\n\t\t"),t.isBackgroundDisabled?t._e():e("Close",{attrs:{size:32}}),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{key:n.name,class:{"background background__shipped":!0,"icon-loading":t.loading===n.name,"background--active":t.backgroundImage===n.name},style:{backgroundImage:"url("+n.preview+")","--border-color":n.details.primary_color},attrs:{title:n.details.attribution,"aria-label":n.details.description,"aria-pressed":t.backgroundImage===n.name,"data-color-bright":"dark"===n.details.theming,"data-user-theming-background-shipped":n.name,tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}},[e("Check",{attrs:{size:44}})],1)}))],2)}),[],!1,null,"1175e65a",null).exports;var z=r(25108);const q={name:"ItemPreview",components:{NcCheckboxRadioSwitch:c.Z},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType(){return this.unique?"switch":"radio"},name(){return this.unique?null:this.type},img(){return(0,i.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get(){return this.selected},set(t){z.debug("Changed theme",this.theme.id,t),this.unique?this.$emit("change",{enabled:!0===t,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}};var G=r(62782),X={};X.styleTagTransform=H(),X.setAttributes=F(),X.insert=B().bind(null,"head"),X.domAPI=P(),X.insertStyleElement=R(),O()(G.Z,X),G.Z&&G.Z.locals&&G.Z.locals;const W=(0,y.Z)(q,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theming__preview",class:"theming__preview--"+t.theme.id},[e("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+t.img+")"},on:{click:t.onToggle}}),t._v(" "),e("div",{staticClass:"theming__preview-description"},[e("h3",[t._v(t._s(t.theme.title))]),t._v(" "),e("p",{staticClass:"theming__preview-explanation"},[t._v(t._s(t.theme.description))]),t._v(" "),t.enforced?e("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[t._v("\n\t\t\t"+t._s(t.t("theming","Theme selection is enforced"))+"\n\t\t")]):t._e(),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.checked,disabled:t.enforced,name:t.name,type:t.switchType},on:{"update:checked":function(e){t.checked=e}}},[t._v("\n\t\t\t"+t._s(t.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"1a08e35a",null).exports;var $=r(31352),K=r(9568),Q=r(64886);function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}function tt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function et(){return et=Object.assign||function(t){for(var e=1;e"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function gt(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function ft(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&pt(t,e):pt(t,e))||r&&t===n)return t;if(t===n)break}while(t=gt(t))}return null}var mt,vt=/\s+/g;function bt(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(vt," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(vt," ")}}function At(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"==typeof n?"":"px")}}function _t(t,e){var n="";if("string"==typeof t)n=t;else do{var r=At(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function yt(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,a=r.length;if(n)for(;o=a:o<=a))return r;if(r===Ct())break;r=Et(r,!1)}return!1}function xt(t,e,n){for(var r=0,o=0,a=t.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,["evt"]);Ft.pluginEvent.bind(Ie)(t,e,nt({dragEl:Zt,parentEl:Ht,ghostEl:Ut,rootEl:Vt,nextEl:Yt,lastDownEl:zt,cloneEl:qt,cloneHidden:Gt,dragStarted:ie,putSortable:Jt,activeSortable:Ie.active,originalEvent:r,oldIndex:Xt,oldDraggableIndex:$t,newIndex:Wt,newDraggableIndex:Kt,hideGhostForTarget:Se,unhideGhostForTarget:De,cloneNowHidden:function(){Gt=!0},cloneNowShown:function(){Gt=!1},dispatchSortableEvent:function(t){Rt({sortable:e,name:t,originalEvent:r})}},o))};function Rt(t){!function(t){var e=t.sortable,n=t.rootEl,r=t.name,o=t.targetEl,a=t.cloneEl,i=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,h=t.originalEvent,p=t.putSortable,g=t.extraEventProperties;if(e=e||n&&n[Lt]){var f,m=e.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||ot||at?(f=document.createEvent("Event")).initEvent(r,!0,!0):f=new CustomEvent(r,{bubbles:!0,cancelable:!0}),f.to=i||n,f.from=l||n,f.item=o||n,f.clone=a,f.oldIndex=s,f.newIndex=c,f.oldDraggableIndex=u,f.newDraggableIndex=d,f.originalEvent=h,f.pullMode=p?p.lastPutMode:void 0;var b=nt({},g,Ft.getEventProperties(r,e));for(var A in b)f[A]=b[A];n&&n.dispatchEvent(f),m[v]&&m[v].call(e,f)}}(nt({putSortable:Jt,cloneEl:qt,targetEl:Zt,rootEl:Vt,oldIndex:Xt,oldDraggableIndex:$t,newIndex:Wt,newDraggableIndex:Kt},t))}var Zt,Ht,Ut,Vt,Yt,zt,qt,Gt,Xt,Wt,$t,Kt,Qt,Jt,te,ee,ne,re,oe,ae,ie,le,se,ce,ue,de=!1,he=!1,pe=[],ge=!1,fe=!1,me=[],ve=!1,be=[],Ae="undefined"!=typeof document,_e=st,ye=at||ot?"cssFloat":"float",Ce=Ae&&!ct&&!st&&"draggable"in document.createElement("div"),we=function(){if(Ae){if(ot)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),ke=function(t,e){var n=At(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=xt(t,0,e),a=xt(t,1,e),i=o&&At(o),l=a&&At(a),s=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+wt(o).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+wt(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var u="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==u?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||s>=r&&"none"===n[ye]||a&&"none"===n[ye]&&s+c>r)?"vertical":"horizontal"},xe=function(t){function e(t,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||l))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(r,o,a,i),n)(r,o,a,i);var s=(n?r:o).options.group.name;return!0===t||"string"==typeof t&&t===s||t.join&&t.indexOf(s)>-1}}var n={},r=t.group;r&&"object"==J(r)||(r={name:r}),n.name=r.name,n.checkPull=e(r.pull,!0),n.checkPut=e(r.put),n.revertClone=r.revertClone,t.group=n},Se=function(){!we&&Ut&&At(Ut,"display","none")},De=function(){!we&&Ut&&At(Ut,"display","")};Ae&&document.addEventListener("click",(function(t){if(he)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),he=!1,!1}),!0);var Te=function(t){if(Zt){t=t.touches?t.touches[0]:t;var e=(o=t.clientX,a=t.clientY,pe.some((function(t){if(!St(t)){var e=wt(t),n=t[Lt].options.emptyInsertThreshold,r=o>=e.left-n&&o<=e.right+n,l=a>=e.top-n&&a<=e.bottom+n;return n&&r&&l?i=t:void 0}})),i);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[Lt]._onDragOver(n)}}var o,a,i},Ee=function(t){Zt&&Zt.parentNode[Lt]._isOutsideThisEl(t.target)};function Ie(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=et({},e),t[Lt]=this;var n,r,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return ke(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Ie.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var a in Ft.initializePlugins(this,t,o),o)!(a in e)&&(e[a]=o[a]);for(var i in xe(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&Ce,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?dt(t,"pointerdown",this._onTapStart):(dt(t,"mousedown",this._onTapStart),dt(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(dt(t,"dragover",this),dt(t,"dragenter",this)),pe.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),et(this,(r=[],{captureAnimationState:function(){r=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==At(t,"display")&&t!==Ie.ghost){r.push({target:t,rect:wt(t)});var e=nt({},r[r.length-1].rect);if(t.thisAnimationDuration){var n=_t(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){r.push(t)},removeAnimationState:function(t){r.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var r in e)if(e.hasOwnProperty(r)&&e[r]===t[n][r])return Number(n);return-1}(r,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var o=!1,a=0;r.forEach((function(t){var n=0,r=t.target,i=r.fromRect,l=wt(r),s=r.prevFromRect,c=r.prevToRect,u=t.rect,d=_t(r,!0);d&&(l.top-=d.f,l.left-=d.e),r.toRect=l,r.thisAnimationDuration&&It(s,l)&&!It(i,l)&&(u.top-l.top)/(u.left-l.left)==(i.top-l.top)/(i.left-l.left)&&(n=function(t,e,n,r){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*r.animation}(u,s,c,e.options)),It(l,i)||(r.prevFromRect=i,r.prevToRect=l,n||(n=e.options.animation),e.animate(r,u,l,n)),n&&(o=!0,a=Math.max(a,n),clearTimeout(r.animationResetTimer),r.animationResetTimer=setTimeout((function(){r.animationTime=0,r.prevFromRect=null,r.fromRect=null,r.prevToRect=null,r.thisAnimationDuration=null}),n),r.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof t&&t()}),a):"function"==typeof t&&t(),r=[]},animate:function(t,e,n,r){if(r){At(t,"transition",""),At(t,"transform","");var o=_t(this.el),a=o&&o.a,i=o&&o.d,l=(e.left-n.left)/(a||1),s=(e.top-n.top)/(i||1);t.animatingX=!!l,t.animatingY=!!s,At(t,"transform","translate3d("+l+"px,"+s+"px,0)"),function(t){t.offsetWidth}(t),At(t,"transition","transform "+r+"ms"+(this.options.easing?" "+this.options.easing:"")),At(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){At(t,"transition",""),At(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),r)}}}))}function Oe(t,e,n,r,o,a,i,l){var s,c,u=t[Lt],d=u.options.onMove;return!window.CustomEvent||ot||at?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=r,s.related=o||e,s.relatedRect=a||wt(e),s.willInsertAfter=l,s.originalEvent=i,t.dispatchEvent(s),d&&(c=d.call(u,s,i)),c}function Me(t){t.draggable=!1}function Pe(){ve=!1}function Le(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,r=0;n--;)r+=e.charCodeAt(n);return r.toString(36)}function Be(t){return setTimeout(t,0)}function Ne(t){return clearTimeout(t)}Ie.prototype={constructor:Ie,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(le=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,Zt):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,r=this.options,o=r.preventOnFilter,a=t.type,i=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,l=(i||t).target,s=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||l,c=r.filter;if(function(t){be.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var r=e[n];r.checked&&be.push(r)}}(n),!Zt&&!(/mousedown|pointerdown/.test(a)&&0!==t.button||r.disabled||s.isContentEditable||(l=ft(l,r.draggable,n,!1))&&l.animated||zt===l)){if(Xt=Dt(l),$t=Dt(l,r.draggable),"function"==typeof c){if(c.call(this,t,l,this))return Rt({sortable:e,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),jt("filter",e,{evt:t}),void(o&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(r){if(r=ft(s,r.trim(),n,!1))return Rt({sortable:e,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),jt("filter",e,{evt:t}),!0}))))return void(o&&t.cancelable&&t.preventDefault());r.handle&&!ft(s,r.handle,n,!1)||this._prepareDragStart(t,i,l)}}},_prepareDragStart:function(t,e,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!Zt&&n.parentNode===a){var s=wt(n);if(Vt=a,Ht=(Zt=n).parentNode,Yt=Zt.nextSibling,zt=n,Qt=i.group,Ie.dragged=Zt,te={target:Zt,clientX:(e||t).clientX,clientY:(e||t).clientY},oe=te.clientX-s.left,ae=te.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,Zt.style["will-change"]="all",r=function(){jt("delayEnded",o,{evt:t}),Ie.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!it&&o.nativeDraggable&&(Zt.draggable=!0),o._triggerDragStart(t,e),Rt({sortable:o,name:"choose",originalEvent:t}),bt(Zt,i.chosenClass,!0))},i.ignore.split(",").forEach((function(t){yt(Zt,t.trim(),Me)})),dt(l,"dragover",Te),dt(l,"mousemove",Te),dt(l,"touchmove",Te),dt(l,"mouseup",o._onDrop),dt(l,"touchend",o._onDrop),dt(l,"touchcancel",o._onDrop),it&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Zt.draggable=!0),jt("delayStart",this,{evt:t}),!i.delay||i.delayOnTouchOnly&&!e||this.nativeDraggable&&(at||ot))r();else{if(Ie.eventCanceled)return void this._onDrop();dt(l,"mouseup",o._disableDelayedDrag),dt(l,"touchend",o._disableDelayedDrag),dt(l,"touchcancel",o._disableDelayedDrag),dt(l,"mousemove",o._delayedDragTouchMoveHandler),dt(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&dt(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Zt&&Me(Zt),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;ht(t,"mouseup",this._disableDelayedDrag),ht(t,"touchend",this._disableDelayedDrag),ht(t,"touchcancel",this._disableDelayedDrag),ht(t,"mousemove",this._delayedDragTouchMoveHandler),ht(t,"touchmove",this._delayedDragTouchMoveHandler),ht(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?dt(document,"pointermove",this._onTouchMove):dt(document,e?"touchmove":"mousemove",this._onTouchMove):(dt(Zt,"dragend",this),dt(Vt,"dragstart",this._onDragStart));try{document.selection?Be((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(de=!1,Vt&&Zt){jt("dragStarted",this,{evt:e}),this.nativeDraggable&&dt(document,"dragover",Ee);var n=this.options;!t&&bt(Zt,n.dragClass,!1),bt(Zt,n.ghostClass,!0),Ie.active=this,t&&this._appendGhost(),Rt({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(ee){this._lastX=ee.clientX,this._lastY=ee.clientY,Se();for(var t=document.elementFromPoint(ee.clientX,ee.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ee.clientX,ee.clientY))!==e;)e=t;if(Zt.parentNode[Lt]._isOutsideThisEl(t),e)do{if(e[Lt]&&e[Lt]._onDragOver({clientX:ee.clientX,clientY:ee.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);De()}},_onTouchMove:function(t){if(te){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,a=Ut&&_t(Ut,!0),i=Ut&&a&&a.a,l=Ut&&a&&a.d,s=_e&&ue&&Tt(ue),c=(o.clientX-te.clientX+r.x)/(i||1)+(s?s[0]-me[0]:0)/(i||1),u=(o.clientY-te.clientY+r.y)/(l||1)+(s?s[1]-me[1]:0)/(l||1);if(!Ie.active&&!de){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+10||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+10}(t,o,this)&&!f.animated){if(f===Zt)return I(!1);if(f&&a===t.target&&(i=f),i&&(n=wt(i)),!1!==Oe(Vt,a,Zt,e,i,n,t,!!i))return E(),a.appendChild(Zt),Ht=a,O(),I(!0)}else if(i.parentNode===a){n=wt(i);var m,v,b,A=Zt.parentNode!==a,_=!function(t,e,n){var r=n?t.left:t.top,o=n?t.right:t.bottom,a=n?t.width:t.height,i=n?e.left:e.top,l=n?e.right:e.bottom,s=n?e.width:e.height;return r===i||o===l||r+a/2===i+s/2}(Zt.animated&&Zt.toRect||e,i.animated&&i.toRect||n,o),y=o?"top":"left",C=kt(i,"top","top")||kt(Zt,"top","top"),w=C?C.scrollTop:void 0;if(le!==i&&(v=n[y],ge=!1,fe=!_&&l.invertSwap||A),m=function(t,e,n,r,o,a,i,l){var s=r?t.clientY:t.clientX,c=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,h=!1;if(!i)if(l&&ceu+c*a/2:sd-ce)return-se}else if(s>u+c*(1-o)/2&&sd-c*a/2)?s>u+c/2?1:-1:0}(t,i,n,o,_?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,fe,le===i),0!==m){var k=Dt(Zt);do{k-=m,b=Ht.children[k]}while(b&&("none"===At(b,"display")||b===Ut))}if(0===m||b===i)return I(!1);le=i,se=m;var x=i.nextElementSibling,S=!1,D=Oe(Vt,a,Zt,e,i,n,t,S=1===m);if(!1!==D)return 1!==D&&-1!==D||(S=1===D),ve=!0,setTimeout(Pe,30),E(),S&&!x?a.appendChild(Zt):i.parentNode.insertBefore(Zt,S?x:i),C&&Mt(C,0,w-C.scrollTop),Ht=Zt.parentNode,void 0===v||fe||(ce=Math.abs(v-wt(i)[y])),O(),I(!0)}if(a.contains(Zt))return I(!1)}return!1}function T(l,s){jt(l,p,nt({evt:t,isOwner:u,axis:o?"vertical":"horizontal",revert:r,dragRect:e,targetRect:n,canSort:d,fromSortable:h,target:i,completed:I,onMove:function(n,r){return Oe(Vt,a,Zt,e,n,wt(n),t,r)},changed:O},s))}function E(){T("dragOverAnimationCapture"),p.captureAnimationState(),p!==h&&h.captureAnimationState()}function I(e){return T("dragOverCompleted",{insertion:e}),e&&(u?c._hideClone():c._showClone(p),p!==h&&(bt(Zt,Jt?Jt.options.ghostClass:c.options.ghostClass,!1),bt(Zt,l.ghostClass,!0)),Jt!==p&&p!==Ie.active?Jt=p:p===Ie.active&&Jt&&(Jt=null),h===p&&(p._ignoreWhileAnimating=i),p.animateAll((function(){T("dragOverAnimationComplete"),p._ignoreWhileAnimating=null})),p!==h&&(h.animateAll(),h._ignoreWhileAnimating=null)),(i===Zt&&!Zt.animated||i===a&&!i.animated)&&(le=null),l.dragoverBubble||t.rootEl||i===document||(Zt.parentNode[Lt]._isOutsideThisEl(t.target),!e&&Te(t)),!l.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),g=!0}function O(){Wt=Dt(Zt),Kt=Dt(Zt,l.draggable),Rt({sortable:p,name:"change",toEl:a,newIndex:Wt,newDraggableIndex:Kt,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){ht(document,"mousemove",this._onTouchMove),ht(document,"touchmove",this._onTouchMove),ht(document,"pointermove",this._onTouchMove),ht(document,"dragover",Te),ht(document,"mousemove",Te),ht(document,"touchmove",Te)},_offUpEvents:function(){var t=this.el.ownerDocument;ht(t,"mouseup",this._onDrop),ht(t,"touchend",this._onDrop),ht(t,"pointerup",this._onDrop),ht(t,"touchcancel",this._onDrop),ht(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;Wt=Dt(Zt),Kt=Dt(Zt,n.draggable),jt("drop",this,{evt:t}),Ht=Zt&&Zt.parentNode,Wt=Dt(Zt),Kt=Dt(Zt,n.draggable),Ie.eventCanceled||(de=!1,fe=!1,ge=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ne(this.cloneId),Ne(this._dragStartId),this.nativeDraggable&&(ht(document,"drop",this),ht(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),lt&&At(document.body,"user-select",""),At(Zt,"transform",""),t&&(ie&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),Ut&&Ut.parentNode&&Ut.parentNode.removeChild(Ut),(Vt===Ht||Jt&&"clone"!==Jt.lastPutMode)&&qt&&qt.parentNode&&qt.parentNode.removeChild(qt),Zt&&(this.nativeDraggable&&ht(Zt,"dragend",this),Me(Zt),Zt.style["will-change"]="",ie&&!de&&bt(Zt,Jt?Jt.options.ghostClass:this.options.ghostClass,!1),bt(Zt,this.options.chosenClass,!1),Rt({sortable:this,name:"unchoose",toEl:Ht,newIndex:null,newDraggableIndex:null,originalEvent:t}),Vt!==Ht?(Wt>=0&&(Rt({rootEl:Ht,name:"add",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"remove",toEl:Ht,originalEvent:t}),Rt({rootEl:Ht,name:"sort",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Jt&&Jt.save()):Wt!==Xt&&Wt>=0&&(Rt({sortable:this,name:"update",toEl:Ht,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Ie.active&&(null!=Wt&&-1!==Wt||(Wt=Xt,Kt=$t),Rt({sortable:this,name:"end",toEl:Ht,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){jt("nulling",this),Vt=Zt=Ht=Ut=Yt=qt=zt=Gt=te=ee=ie=Wt=Kt=Xt=$t=le=se=Jt=Qt=Ie.dragged=Ie.ghost=Ie.clone=Ie.active=null,be.forEach((function(t){t.checked=!0})),be.length=ne=re=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":Zt&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,a=this.options;r!0,"move:down":()=>!0,"update:focus":()=>!0},setup(t,e){let{emit:n}=e;const r=(0,a.iH)(),o=(0,a.iH)();let i=0;return{buttonUp:r,buttonDown:o,moveUp:()=>{n("move:up"),i=1},moveDown:()=>{n("move:down"),i=-1},keepFocus:()=>{0!==i&&(1!==i&&!t.isLast||t.isFirst?(0,a.Y3)((()=>o.value.$el.focus())):(0,a.Y3)((()=>r.value.$el.focus()))),i=0},t:$.Iu}}});var nn=r(40773),rn={};rn.styleTagTransform=H(),rn.setAttributes=F(),rn.insert=B().bind(null,"head"),rn.domAPI=P(),rn.insertStyleElement=R(),O()(nn.Z,rn),nn.Z&&nn.Z.locals&&nn.Z.locals;const on=(0,y.Z)(en,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("li",{class:{"order-selector-element":!0,"order-selector-element--disabled":t.app.default},attrs:{"data-cy-app-order-element":t.app.id},on:{focusin:function(e){return t.$emit("update:focus")}}},[e("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",role:"presentation"}},[e("image",{staticClass:"order-selector-element__icon",attrs:{preserveAspectRatio:"xMinYMin meet",x:"0",y:"0",width:"20",height:"20","xlink:href":t.app.icon}})]),t._v(" "),e("div",{staticClass:"order-selector-element__label"},[t._v("\n\t\t"+t._s(t.app.label??t.app.id)+"\n\t")]),t._v(" "),e("div",{staticClass:"order-selector-element__actions"},[e("NcButton",{directives:[{name:"show",rawName:"v-show",value:!t.isFirst&&!t.app.default,expression:"!isFirst && !app.default"}],ref:"buttonUp",attrs:{"aria-label":t.t("settings","Move up"),"aria-describedby":t.ariaDescribedby,"aria-details":t.ariaDetails,"data-cy-app-order-button":"up",type:"tertiary-no-background"},on:{click:t.moveUp},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconArrowUp",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isFirst||!!t.app.default,expression:"isFirst || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}}),t._v(" "),e("NcButton",{directives:[{name:"show",rawName:"v-show",value:!t.isLast&&!t.app.default,expression:"!isLast && !app.default"}],ref:"buttonDown",attrs:{"aria-label":t.t("settings","Move down"),"aria-describedby":t.ariaDescribedby,"aria-details":t.ariaDetails,"data-cy-app-order-button":"down",type:"tertiary-no-background"},on:{click:t.moveDown},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconArrowDown",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.isLast||!!t.app.default,expression:"isLast || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}})],1)])}),[],!1,null,"081ebc45",null).exports,an=(0,a.aZ)({name:"AppOrderSelector",components:{AppOrderSelectorElement:on,Fragment:Qe.H},props:{ariaDetails:{type:String,default:null},value:{type:Array,required:!0}},emits:{"update:value":t=>Array.isArray(t)},setup(t,e){let{emit:n}=e;const r=(0,a.iH)(null),o=(0,a.Fl)({get:()=>t.value,set:e=>{const r=[...e].sort(((t,n)=>(n.default?1:0)-(t.default?1:0)||e.indexOf(t)-e.indexOf(n)));r.some(((e,n)=>{let{id:r}=e;return r!==t.value[n].id}))?n("update:value",r):i.value+=1}}),i=(0,a.iH)(0);!function(t,e,n={}){let r;const{document:o=K.Td$,...i}=n,l={onUpdate:t=>{!function(t,e,n){const r=(0,a.dq)(t),o=r?[...(0,Q.Tn)(t)]:(0,Q.Tn)(t);if(n>=0&&n{o.splice(n,0,i),r&&(t.value=o)}))}}(e,t.oldIndex,t.newIndex)}},s=()=>{const e="string"==typeof t?null==o?void 0:o.querySelector(t):(0,K.NXq)(t);e&&void 0===r&&(r=new Ke(e,{...l,...i}))},c=()=>{null==r||r.destroy(),r=void 0};(0,Q.u7)(s),(0,Q.IY)(c)}(r,o,{filter:".order-selector-element--disabled"});const l=(0,a.iH)([]);(0,a.ic)((()=>{l.value.forEach((t=>t.keepFocus()))}));const s=(0,a.iH)("");return{appList:o,listElement:r,moveDown:e=>{const r=e>0?t.value.slice(0,e):[];r.push(t.value[e+1]);const o=e{const r=e>1?t.value.slice(0,e-1):[];if(t.value[e-1]?.default)return;const o=[t.value[e-1]];e{s.value=(0,$.Iu)("theming","Current selected app: {app}, position {position} of {total}",{app:t.value[e].label,position:e+1,total:t.value.length})},renderCount:i,selectorElements:l}}}),ln=an;var sn=r(45797),cn={};cn.styleTagTransform=H(),cn.setAttributes=F(),cn.insert=B().bind(null,"head"),cn.domAPI=P(),cn.insertStyleElement=R(),O()(sn.Z,cn),sn.Z&&sn.Z.locals&&sn.Z.locals;var un=(0,y.Z)(ln,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("Fragment",[e("div",{staticClass:"hidden-visually",attrs:{id:t.statusInfoId,"aria-live":"polite",role:"status"}},[t._v("\n\t\t"+t._s(t.statusInfo)+"\n\t")]),t._v(" "),e("ol",{ref:"listElement",staticClass:"order-selector",attrs:{"data-cy-app-order":""}},t._l(t.appList,(function(n,r){return e("AppOrderSelectorElement",t._g({key:`${n.id}${t.renderCount}`,ref:"selectorElements",refInFor:!0,attrs:{app:n,"aria-details":t.ariaDetails,"aria-describedby":t.statusInfoId,"is-first":0===r||!!t.appList[r-1].default,"is-last":r===t.value.length-1}},n.default?{}:{"move:up":()=>t.moveUp(r),"move:down":()=>t.moveDown(r),"update:focus":()=>t.updateStatusInfo(r)}))})),1)])}),[],!1,null,"76d01da8",null);const dn=un.exports,hn={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pn=(0,y.Z)(hn,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon undo-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var gn=r(50323),fn=r(25108);const mn=(0,a.aZ)({name:"UserAppMenuSection",components:{AppOrderSelector:dn,IconUndo:pn,NcButton:f.Z,NcNoteCard:gn.Z,NcSettingsSection:u.Z},setup(){const{userAppOrder:t,enforcedDefaultApp:e}=(0,l.j)("theming","navigationBar"),n=Object.values((0,l.j)("core","apps")).filter((t=>{let{type:e}=t;return"link"===e})).map((t=>({...t,label:t.name,default:t.default&&t.app===e}))),r=(0,a.iH)(!Array.isArray(t)||Object.values(t).length>0),o=(0,a.Fl)((()=>n.some(((t,e)=>{let{id:n}=t;return n!==p.value[e].id})))),c="theming-apporder-changed-infocard",u="theming-apporder-changed-infocard",h=(0,a.Fl)((()=>(o.value?`${c} `:"")+(e?u:""))),p=(0,a.iH)([...n]),g=async(t,e)=>{const n=(0,i.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:t});return await s.Z.post(n,{configValue:JSON.stringify(e)})};return{appOrder:p,updateAppOrder:t=>{const e={};t.forEach(((t,n)=>{let{app:r,id:o}=t;e[o]={order:n,app:r}})),g("apporder",e).then((()=>{p.value=t,r.value=!0})).catch((t=>{fn.warn("Could not set the app order",t),(0,d.x2)((0,$.Iu)("theming","Could not set the app order"))}))},resetAppOrder:async()=>{try{await g("apporder",[]),r.value=!1;const{data:t}=await s.Z.get((0,i.generateOcsUrl)("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});p.value=t.ocs.data.map((t=>({...t,label:t.name,default:t.default&&t.app===e})))}catch(t){fn.warn(t),(0,d.x2)((0,$.Iu)("theming","Could not reset the app order"))}},enforcedDefaultApp:e,hasAppOrderChanged:o,hasCustomAppOrder:r,ariaDetailsAppOrder:h,elementIdAppOrderChanged:c,elementIdEnforcedDefaultApp:u,t:$.Iu}}}),vn=mn;var bn=r(62461),An={};An.styleTagTransform=H(),An.setAttributes=F(),An.insert=B().bind(null,"head"),An.domAPI=P(),An.insertStyleElement=R(),O()(bn.Z,An),bn.Z&&bn.Z.locals&&bn.Z.locals;const _n=(0,y.Z)(vn,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcSettingsSection",{attrs:{name:t.t("theming","Navigation bar settings")}},[e("p",[t._v("\n\t\t"+t._s(t.t("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo."))+"\n\t")]),t._v(" "),t.enforcedDefaultApp?e("NcNoteCard",{attrs:{id:t.elementIdEnforcedDefaultApp,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The default app can not be changed because it was configured by the administrator."))+"\n\t")]):t._e(),t._v(" "),t.hasAppOrderChanged?e("NcNoteCard",{attrs:{id:t.elementIdAppOrderChanged,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The app order was changed, to see it in action you have to reload the page."))+"\n\t")]):t._e(),t._v(" "),e("AppOrderSelector",{staticClass:"user-app-menu-order",attrs:{"aria-details":t.ariaDetailsAppOrder,value:t.appOrder},on:{"update:value":t.updateAppOrder}}),t._v(" "),e("NcButton",{attrs:{"data-test-id":"btn-apporder-reset",disabled:!t.hasCustomAppOrder,type:"tertiary"},on:{click:t.resetAppOrder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconUndo",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("theming","Reset default app order"))+"\n\t")])],1)}),[],!1,null,"3d6952db",null).exports;var yn=r(25108);const Cn=(0,l.j)("theming","themes",[]),wn=(0,l.j)("theming","enforceTheme",""),kn=(0,l.j)("theming","shortcutsDisabled",!1),xn=(0,l.j)("theming","isUserThemingDisabled"),Sn={name:"UserThemes",components:{ItemPreview:W,NcCheckboxRadioSwitch:c.Z,NcSettingsSection:u.Z,BackgroundSettings:Y,UserAppMenuSection:_n},data:()=>({availableThemes:Cn,enforceTheme:wn,shortcutsDisabled:kn,isUserThemingDisabled:xn}),computed:{themes(){return this.availableThemes.filter((t=>1===t.type))},fonts(){return this.availableThemes.filter((t=>2===t.type))},selectedTheme(){return this.themes.find((t=>!0===t.enabled))||this.themes[0]},description(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","")},guidelinesLink:()=>'',descriptionDetail(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"")},issuetrackerLink:()=>'',designteamLink:()=>''},watch:{shortcutsDisabled(t){this.changeShortcutsDisabled(t)}},methods:{refreshGlobalStyles(){[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))},updateBackground(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.refreshGlobalStyles()},changeTheme(t){let{enabled:e,id:n}=t;this.themes.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},changeFont(t){let{enabled:e,id:n}=t;this.fonts.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},async changeShortcutsDisabled(t){t?await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"}):await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"})},updateBodyAttributes(){const t=this.themes.filter((t=>!0===t.enabled)).map((t=>t.id)),e=this.fonts.filter((t=>!0===t.enabled)).map((t=>t.id));this.themes.forEach((t=>{document.body.toggleAttribute(`data-theme-${t.id}`,t.enabled)})),this.fonts.forEach((t=>{document.body.toggleAttribute(`data-theme-${t.id}`,t.enabled)})),document.body.setAttribute("data-themes",[...t,...e].join(","))},async selectItem(e,n){try{e?await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:n}),method:"PUT"}):await(0,s.Z)({url:(0,i.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:n}),method:"DELETE"})}catch(e){yn.error(e,e.response),OC.Notification.showTemporary(t("theming",e.response.data.ocs.meta.message+". Unable to apply the setting."))}}}};var Dn=r(29512),Tn={};Tn.styleTagTransform=H(),Tn.setAttributes=F(),Tn.insert=B().bind(null,"head"),Tn.domAPI=P(),Tn.insertStyleElement=R(),O()(Dn.Z,Tn),Dn.Z&&Dn.Z.locals&&Dn.Z.locals;const En=(0,y.Z)(Sn,(function(){var t=this,e=t._self._c;return e("section",[e("NcSettingsSection",{staticClass:"theming",attrs:{name:t.t("theming","Appearance and accessibility settings"),"limit-width":!1}},[e("p",{domProps:{innerHTML:t._s(t.description)}}),t._v(" "),e("p",{domProps:{innerHTML:t._s(t.descriptionDetail)}}),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.themes,(function(n){return e("ItemPreview",{key:n.id,attrs:{enforced:n.id===t.enforceTheme,selected:t.selectedTheme.id===n.id,theme:n,unique:1===t.themes.length,type:"theme"},on:{change:t.changeTheme}})})),1),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.fonts,(function(n){return e("ItemPreview",{key:n.id,attrs:{selected:n.enabled,theme:n,unique:1===t.fonts.length,type:"font"},on:{change:t.changeFont}})})),1)]),t._v(" "),e("NcSettingsSection",{staticClass:"background",attrs:{name:t.t("theming","Background"),"data-user-theming-background-disabled":""}},[t.isUserThemingDisabled?[e("p",[t._v(t._s(t.t("theming","Customization has been disabled by your administrator")))])]:[e("p",[t._v(t._s(t.t("theming","Set a custom background")))]),t._v(" "),e("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":t.refreshGlobalStyles}})]],2),t._v(" "),e("NcSettingsSection",{attrs:{name:t.t("theming","Keyboard shortcuts")}},[e("p",[t._v(t._s(t.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.shortcutsDisabled,type:"switch"},on:{"update:checked":function(e){t.shortcutsDisabled=e},change:t.changeShortcutsDisabled}},[t._v("\n\t\t\t"+t._s(t.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),t._v(" "),e("UserAppMenuSection")],1)}),[],!1,null,"d643b9e0",null).exports;r.nc=btoa((0,o.IH)()),a.ZP.prototype.OC=OC,a.ZP.prototype.t=t;const In=new(a.ZP.extend(En));In.$mount("#theming"),In.$on("update:background",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))}))},29512:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".theming p[data-v-d643b9e0]{max-width:800px}.theming[data-v-d643b9e0] a{font-weight:bold}.theming[data-v-d643b9e0] a:hover,.theming[data-v-d643b9e0] a:focus{text-decoration:underline}.theming__preview-list[data-v-d643b9e0]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-d643b9e0]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-d643b9e0]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]);const l=i},45797:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".order-selector[data-v-76d01da8]{width:max-content;min-width:260px}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelector.vue"],names:[],mappings:"AACA,iCACC,iBAAA,CACA,eAAA",sourcesContent:["\n.order-selector {\n\twidth: max-content;\n\tmin-width: 260px; // align with NcSelect\n}\n"],sourceRoot:""}]);const l=i},40773:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelectorElement.vue"],names:[],mappings:"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA",sourcesContent:["\n.order-selector-element {\n\t// hide default styling\n\tlist-style: none;\n\t// Align children\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\t// Spacing\n\tgap: 12px;\n\tpadding-inline: 12px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&--disabled {\n\t\tborder-color: var(--color-text-maxcontrast);\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t.order-selector-element__icon {\n\t\t\topacity: 75%;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tflex: 0 0;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 6px;\n\t}\n\n\t&__label {\n\t\tflex: 1 1;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&__placeholder {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t}\n\n\t&__icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n}\n"],sourceRoot:""}]);const l=i},22065:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA",sourcesContent:["\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background-color {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-color: var(--color-main-background) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},62782:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".theming__preview[data-v-1a08e35a]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-1a08e35a],.theming__preview *[data-v-1a08e35a]{user-select:none}.theming__preview-image[data-v-1a08e35a]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-1a08e35a]{margin-bottom:10px}.theming__preview-description[data-v-1a08e35a]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-1a08e35a]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-1a08e35a]{padding:12px 0}.theming__preview--default[data-v-1a08e35a]{grid-column:span 2}.theming__preview-warning[data-v-1a08e35a]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-1a08e35a]{flex-direction:column}.theming__preview-image[data-v-1a08e35a]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-explanation {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},62461:(t,e,n)=>{"use strict";n.d(e,{Z:()=>l});var r=n(87537),o=n.n(r),a=n(23645),i=n.n(a)()(o());i.push([t.id,".user-app-menu-order[data-v-3d6952db]{margin-block:12px}","",{version:3,sources:["webpack://./apps/theming/src/components/UserAppMenuSection.vue"],names:[],mappings:"AACA,sCACC,iBAAA",sourcesContent:["\n.user-app-menu-order {\n\tmargin-block: 12px;\n}\n"],sourceRoot:""}]);const l=i},89881:(t,e,n)=>{var r=n(47816),o=n(99291)(r);t.exports=o},80760:(t,e,n)=>{var r=n(89881);t.exports=function(t,e){var n=[];return r(t,(function(t,r,o){e(t,r,o)&&n.push(t)})),n}},47816:(t,e,n)=>{var r=n(28483),o=n(3674);t.exports=function(t,e){return t&&r(t,e,o)}},99291:(t,e,n)=>{var r=n(98612);t.exports=function(t,e){return function(n,o){if(null==n)return n;if(!r(n))return t(n,o);for(var a=n.length,i=e?a:-1,l=Object(n);(e?i--:++i{var r=n(5976),o=n(77813),a=n(16612),i=n(81704),l=Object.prototype,s=l.hasOwnProperty,c=r((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&a(e[0],e[1],c)&&(r=1);++n{var r=n(34963),o=n(80760),a=n(67206),i=n(1469);t.exports=function(t,e){return(i(t)?r:o)(t,a(e,3))}},1082:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},o=r(n(8110)),a=r(n(21904));o.default.DefaultOpts.ImageClass=a.default,t.exports=o.default},31564:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(n(8110)),a=n(66678),i=function(){function t(t,e){void 0===e&&(e={}),this._src=t,this._opts=e,this._opts.filters=a(o.default.DefaultOpts.filters)}return t.prototype.maxColorCount=function(t){return this._opts.colorCount=t,this},t.prototype.maxDimension=function(t){return this._opts.maxDimension=t,this},t.prototype.addFilter=function(t){return this._opts.filters.push(t),this},t.prototype.removeFilter=function(t){var e=this._opts.filters.indexOf(t);return e>0&&this._opts.filters.splice(e),this},t.prototype.clearFilters=function(){return this._opts.filters=[],this},t.prototype.quality=function(t){return this._opts.quality=t,this},t.prototype.useImageClass=function(t){return this._opts.ImageClass=t,this},t.prototype.useGenerator=function(t){return this._opts.generator=t,this},t.prototype.useQuantizer=function(t){return this._opts.quantizer=t,this},t.prototype.build=function(){return new o.default(this._src,this._opts)},t.prototype.getPalette=function(t){return this.build().getPalette(t)},t.prototype.getSwatches=function(t){return this.build().getPalette(t)},t}();e.default=i},97248:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Swatch=void 0;var r=n(67294),o=n(63105),a=function(){function t(t,e){this._rgb=t,this._population=e}return t.applyFilter=function(t,e){return"function"==typeof e?o(t,(function(t){var n=t.r,r=t.g,o=t.b;return e(n,r,o,255)})):t},Object.defineProperty(t.prototype,"r",{get:function(){return this._rgb[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this._rgb[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this._rgb[2]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rgb",{get:function(){return this._rgb},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hsl",{get:function(){if(!this._hsl){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hsl=r.rgbToHsl(e,n,o)}return this._hsl},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hex",{get:function(){if(!this._hex){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hex=r.rgbToHex(e,n,o)}return this._hex},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"population",{get:function(){return this._population},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{rgb:this.rgb,population:this.population}},t.prototype.getRgb=function(){return this._rgb},t.prototype.getHsl=function(){return this.hsl},t.prototype.getPopulation=function(){return this._population},t.prototype.getHex=function(){return this.hex},t.prototype.getYiq=function(){if(!this._yiq){var t=this._rgb;this._yiq=(299*t[0]+587*t[1]+114*t[2])/1e3}return this._yiq},Object.defineProperty(t.prototype,"titleTextColor",{get:function(){return this._titleTextColor||(this._titleTextColor=this.getYiq()<200?"#fff":"#000"),this._titleTextColor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bodyTextColor",{get:function(){return this._bodyTextColor||(this._bodyTextColor=this.getYiq()<150?"#fff":"#000"),this._bodyTextColor},enumerable:!1,configurable:!0}),t.prototype.getTitleTextColor=function(){return this.titleTextColor},t.prototype.getBodyTextColor=function(){return this.bodyTextColor},t}();e.Swatch=a},68498:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){return r>=125&&!(t>250&&e>250&&n>250)}},63096:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.combineFilters=void 0;var r=n(68498);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}}),e.combineFilters=function(t){return Array.isArray(t)&&0!==t.length?function(e,n,r,o){if(0===o)return!1;for(var a=0;a{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(97248),o=n(67294),a=n(91747),i={targetDarkLuma:.26,maxDarkLuma:.45,minLightLuma:.55,targetLightLuma:.74,minNormalLuma:.3,targetNormalLuma:.5,maxNormalLuma:.7,targetMutesSaturation:.3,maxMutesSaturation:.4,targetVibrantSaturation:1,minVibrantSaturation:.35,weightSaturation:3,weightLuma:6.5,weightPopulation:.5};function l(t,e,n,r,o,a,i,l,s,c){var u=null,d=0;return e.forEach((function(e){var h=e.getHsl(),p=h[1],g=h[2];if(p>=l&&p<=s&&g>=o&&g<=a&&!function(t,e){return t.Vibrant===e||t.DarkVibrant===e||t.LightVibrant===e||t.Muted===e||t.DarkMuted===e||t.LightMuted===e}(t,e)){var f=function(t,e,n,r,o,a,i){function l(t,e){return 1-Math.abs(t-e)}return function(){for(var t=[],e=0;ed)&&(u=e,d=f)}})),u}e.default=function(t,e){e=a({},e,i);var n=function(t){var e=0;return t.forEach((function(t){e=Math.max(e,t.getPopulation())})),e}(t),s=function(t,e,n){var r={};return r.Vibrant=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.LightVibrant=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.DarkVibrant=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.Muted=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.LightMuted=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.DarkMuted=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r}(t,n,e);return function(t,e,n){if(null===t.Vibrant&&null===t.DarkVibrant&&null===t.LightVibrant){if(null===t.DarkVibrant&&null!==t.DarkMuted){var a=t.DarkMuted.getHsl(),i=a[0],l=a[1],s=a[2];s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.LightMuted){var c=t.LightMuted.getHsl();i=c[0],l=c[1],s=c[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}}if(null===t.Vibrant&&null!==t.DarkVibrant){var u=t.DarkVibrant.getHsl();i=u[0],l=u[1],s=u[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}else if(null===t.Vibrant&&null!==t.LightVibrant){var d=t.LightVibrant.getHsl();i=d[0],l=d[1],s=d[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkVibrant&&null!==t.Vibrant){var h=t.Vibrant.getHsl();i=h[0],l=h[1],s=h[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.Vibrant){var p=t.Vibrant.getHsl();i=p[0],l=p[1],s=p[2],s=n.targetLightLuma,t.LightVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.Muted&&null!==t.Vibrant){var g=t.Vibrant.getHsl();i=g[0],l=g[1],s=g[2],s=n.targetMutesSaturation,t.Muted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkMuted&&null!==t.DarkVibrant){var f=t.DarkVibrant.getHsl();i=f[0],l=f[1],s=f[2],s=n.targetMutesSaturation,t.DarkMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightMuted&&null!==t.LightVibrant){var m=t.LightVibrant.getHsl();i=m[0],l=m[1],s=m[2],s=n.targetMutesSaturation,t.LightMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}}(s,0,e),s}},77234:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(73977);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}})},83614:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImageBase=void 0;var n=function(){function t(){}return t.prototype.scaleDown=function(t){var e=this.getWidth(),n=this.getHeight(),r=1;if(t.maxDimension>0){var o=Math.max(e,n);o>t.maxDimension&&(r=t.maxDimension/o)}else r=1/t.quality;r<1&&this.resize(e*r,n*r,r)},t.prototype.applyFilter=function(t){var e=this.getImageData();if("function"==typeof t)for(var n=e.data,r=n.length/4,o=void 0,a=0;a{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WebWorker=void 0;var r=n(20628);Object.defineProperty(e,"MMCQ",{enumerable:!0,get:function(){return r.default}}),e.WebWorker=null},20628:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=n(97248),a=r(n(5828)),i=r(n(37514));function l(t,e){for(var n=t.size();t.size()0))break;var o=r.split(),a=o[0],i=o[1];if(t.push(a),i&&i.count()>0&&t.push(i),t.size()===n)break;n=t.size()}}e.default=function(t,e){if(0===t.length||e.colorCount<2||e.colorCount>256)throw new Error("Wrong MMCQ parameters");var n=a.default.build(t),r=n.hist,s=(Object.keys(r).length,new i.default((function(t,e){return t.count()-e.count()})));s.push(n),l(s,.75*e.colorCount);var c=new i.default((function(t,e){return t.count()*t.volume()-e.count()*e.volume()}));return c.contents=s.contents,l(c,e.colorCount-c.size()),function(t){for(var e=[];t.size();){var n=t.pop(),r=n.avg();r[0],r[1],r[2],e.push(new o.Swatch(r,n.count()))}return e}(c)}},37514:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this._comparator=t,this.contents=[],this._sorted=!1}return t.prototype._sort=function(){this._sorted||(this.contents.sort(this._comparator),this._sorted=!0)},t.prototype.push=function(t){this.contents.push(t),this._sorted=!1},t.prototype.peek=function(t){return this._sort(),t="number"==typeof t?t:this.contents.length-1,this.contents[t]},t.prototype.pop=function(){return this._sort(),this.contents.pop()},t.prototype.size=function(){return this.contents.length},t.prototype.map=function(t){return this._sort(),this.contents.map(t)},t}();e.default=n},5828:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(67294),o=function(){function t(t,e,n,r,o,a,i){this._volume=-1,this._count=-1,this.dimension={r1:t,r2:e,g1:n,g2:r,b1:o,b2:a},this.hist=i}return t.build=function(e,n){var o,a,i,l,s,c,u,d,h,p=1<<3*r.SIGBITS,g=new Uint32Array(p);o=i=s=0,a=l=c=Number.MAX_VALUE;for(var f=e.length/4,m=0;m>=r.RSHIFT,d>>=r.RSHIFT,h>>=r.RSHIFT,g[r.getColorIndex(u,d,h)]+=1,u>o&&(o=u),ui&&(i=d),ds&&(s=h),h>=r.RSHIFT,n>>=r.RSHIFT,o>>=r.RSHIFT,e>=i&&e<=l&&n>=s&&n<=c&&o>=u&&o<=d},t.prototype.split=function(){var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=this.count();if(!c)return[];if(1===c)return[this.clone()];var u,d,h=o-n+1,p=i-a+1,g=s-l+1,f=Math.max(h,p,g),m=null;u=d=0;var v=null;if(f===h){v="r",m=new Uint32Array(o+1);for(var b=n;b<=o;b++){u=0;for(var A=a;A<=i;A++)for(var _=l;_<=s;_++)u+=t[r.getColorIndex(b,A,_)];d+=u,m[b]=d}}else if(f===p)for(v="g",m=new Uint32Array(i+1),A=a;A<=i;A++){for(u=0,b=n;b<=o;b++)for(_=l;_<=s;_++)u+=t[r.getColorIndex(b,A,_)];d+=u,m[A]=d}else for(v="b",m=new Uint32Array(s+1),_=l;_<=s;_++){for(u=0,b=n;b<=o;b++)for(A=a;A<=i;A++)u+=t[r.getColorIndex(b,A,_)];d+=u,m[_]=d}for(var y=-1,C=new Uint32Array(m.length),w=0;wd/2&&(y=w),C[w]=d-k}var x=this;return function(t){var e=t+"1",n=t+"2",r=x.dimension[e],o=x.dimension[n],a=x.clone(),i=x.clone(),l=y-r,s=o-y;for(l<=s?(o=Math.min(o-1,~~(y+s/2)),o=Math.max(0,o)):(o=Math.max(r,~~(y-1-l/2)),o=Math.min(x.dimension[n],o));!m[o];)o++;for(var c=C[o];!c&&m[o-1];)c=C[--o];return a.dimension[n]=o,i.dimension[e]=o+1,[a,i]}(v)},t}();e.default=o},67294:(t,e)=>{"use strict";function n(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return null===e?null:[e[1],e[2],e[3]].map((function(t){return parseInt(t,16)}))}function r(t,e,n){return e/=255,n/=255,t=(t/=255)>.04045?Math.pow((t+.005)/1.055,2.4):t/12.92,e=e>.04045?Math.pow((e+.005)/1.055,2.4):e/12.92,n=n>.04045?Math.pow((n+.005)/1.055,2.4):n/12.92,[.4124*(t*=100)+.3576*(e*=100)+.1805*(n*=100),.2126*t+.7152*e+.0722*n,.0193*t+.1192*e+.9505*n]}function o(t,e,n){return e/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(e=e>.008856?Math.pow(e,1/3):7.787*e+16/116)-16,500*(t-e),200*(e-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function a(t,e,n){var a=r(t,e,n);return o(a[0],a[1],a[2])}function i(t,e){var n=t[0],r=t[1],o=t[2],a=e[0],i=e[1],l=e[2],s=n-a,c=r-i,u=o-l,d=Math.sqrt(r*r+o*o),h=a-n,p=Math.sqrt(i*i+l*l)-d,g=Math.sqrt(s*s+c*c+u*u),f=Math.sqrt(g)>Math.sqrt(Math.abs(h))+Math.sqrt(Math.abs(p))?Math.sqrt(g*g-h*h-p*p):0;return h/=1,p/=1*(1+.045*d),f/=1*(1+.015*d),Math.sqrt(h*h+p*p+f*f)}function l(t,e){return i(a.apply(void 0,t),a.apply(void 0,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.getColorIndex=e.getColorDiffStatus=e.hexDiff=e.rgbDiff=e.deltaE94=e.rgbToCIELab=e.xyzToCIELab=e.rgbToXyz=e.hslToRgb=e.rgbToHsl=e.rgbToHex=e.hexToRgb=e.defer=e.RSHIFT=e.SIGBITS=e.DELTAE94_DIFF_STATUS=void 0,e.DELTAE94_DIFF_STATUS={NA:0,PERFECT:1,CLOSE:2,GOOD:10,SIMILAR:50},e.SIGBITS=5,e.RSHIFT=8-e.SIGBITS,e.defer=function(){var t,e,n=new Promise((function(n,r){t=n,e=r}));return{resolve:t,reject:e,promise:n}},e.hexToRgb=n,e.rgbToHex=function(t,e,n){return"#"+((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1,7)},e.rgbToHsl=function(t,e,n){t/=255,e/=255,n/=255;var r,o,a=Math.max(t,e,n),i=Math.min(t,e,n),l=(a+i)/2;if(a===i)r=o=0;else{var s=a-i;switch(o=l>.5?s/(2-a-i):s/(a+i),a){case t:r=(e-n)/s+(e1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(0===e)r=o=a=n;else{var l=n<.5?n*(1+e):n+e-n*e,s=2*n-l;r=i(s,l,t+1/3),o=i(s,l,t),a=i(s,l,t-1/3)}return[255*r,255*o,255*a]},e.rgbToXyz=r,e.xyzToCIELab=o,e.rgbToCIELab=a,e.deltaE94=i,e.rgbDiff=l,e.hexDiff=function(t,e){return l(n(t),n(e))},e.getColorDiffStatus=function(t){return t{}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(u=0;u=o)&&Object.keys(i.O).every((t=>i.O[t](n[s])))?n.splice(s--,1):(l=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,n)=>(i.f[n](t,e),e)),[])),i.u=t=>t+"-"+t+".js?v="+{4720:"67ff1816113751e83e78",6512:"930a9f0a458cd206d9d1"}[t],i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},r="nextcloud:",i.l=(t,e,o,a)=>{if(n[t])n[t].push(e);else{var l,s;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{l.onerror=l.onload=null,clearTimeout(p);var o=n[t];if(delete n[t],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((t=>t(r))),e)return e(r)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=h.bind(null,l.onerror),l.onload=h.bind(null,l.onload),s&&document.head.appendChild(l)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=1474,(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&!t;)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b=document.baseURI||self.location.href;var t={1474:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(((n,o)=>r=t[e]=[n,o]));n.push(r[2]=o);var a=i.p+i.u(e),l=new Error;i.l(a,(n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;l.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",l.name="ChunkLoadError",l.type=o,l.request=a,r[1](l)}}),"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,n)=>{var r,o,a=n[0],l=n[1],s=n[2],c=0;if(a.some((e=>0!==t[e]))){for(r in l)i.o(l,r)&&(i.m[r]=l[r]);if(s)var u=s(i)}for(e&&e(n);ci(72347)));l=i.O(l)})(); +//# sourceMappingURL=theming-personal-theming.js.map?v=eb9d7284a650de502fec \ No newline at end of file diff --git a/dist/theming-personal-theming.js.map b/dist/theming-personal-theming.js.map index dee5e3979977b..e75ba4c5038d0 100644 --- a/dist/theming-personal-theming.js.map +++ b/dist/theming-personal-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-personal-theming.js?v=ef365cb983171d4be6f1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageEdit.vue?e9bd","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=template&id=7bb2aa9c","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?0f9a","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?da76","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7631","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?69ad","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/@vueuse/integrations/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?649a","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?aad4","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue","webpack:///nextcloud/node_modules/@vueuse/integrations/useSortable.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?96a5","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?dbd7","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Undo.vue?d998","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=template&id=bc8e3c2a","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?fab3","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?402e","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/UserThemes.vue?6be3","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?b683","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/lodash/_baseEach.js","webpack:///nextcloud/node_modules/lodash/_baseFilter.js","webpack:///nextcloud/node_modules/lodash/_baseForOwn.js","webpack:///nextcloud/node_modules/lodash/_createBaseEach.js","webpack:///nextcloud/node_modules/lodash/defaults.js","webpack:///nextcloud/node_modules/lodash/filter.js","webpack:///nextcloud/node_modules/node-vibrant/lib/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/builder.js","webpack:///nextcloud/node_modules/node-vibrant/lib/color.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/base.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/mmcq.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/pqueue.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/vbox.js","webpack:///nextcloud/node_modules/node-vibrant/lib/util.js","webpack:///nextcloud/node_modules/node-vibrant/lib/vibrant.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageEdit.vue?vue&type=template&id=7bb2aa9c\"\nimport script from \"./ImageEdit.vue?vue&type=script&lang=js\"\nexport * from \"./ImageEdit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-edit-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=1175e65a&scoped=true\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1175e65a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'custom',\n\t\t\t'background background__filepicker': true,\n\t\t\t'background--active': _vm.backgroundImage === 'custom'\n\t\t},attrs:{\"aria-pressed\":_vm.backgroundImage === 'custom',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),(_vm.backgroundImage !== 'custom')?_c('ImageEdit',{attrs:{\"size\":26}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'default',\n\t\t\t'background background__default': true,\n\t\t\t'background--active': _vm.backgroundImage === 'default'\n\t\t},style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"aria-pressed\":_vm.backgroundImage === 'default',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('div',{staticClass:\"background-color\",attrs:{\"data-user-theming-background-color\":\"\"}},[_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('NcButton',{attrs:{\"type\":\"ternary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'background background__delete': true,\n\t\t\t'background--active': _vm.isBackgroundDisabled\n\t\t},attrs:{\"aria-pressed\":_vm.isBackgroundDisabled,\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'No background'))+\"\\n\\t\\t\"),(!_vm.isBackgroundDisabled)?_c('Close',{attrs:{\"size\":32}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{key:shippedBackground.name,class:{\n\t\t\t'background background__shipped': true,\n\t\t\t'icon-loading': _vm.loading === shippedBackground.name,\n\t\t\t'background--active': _vm.backgroundImage === shippedBackground.name\n\t\t},style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"title\":shippedBackground.details.attribution,\"aria-label\":shippedBackground.details.description,\"aria-pressed\":_vm.backgroundImage === shippedBackground.name,\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',{staticClass:\"theming__preview-explanation\"},[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=1a08e35a&scoped=true\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a08e35a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Navigation bar settings')}},[_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.enforcedDefaultApp)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdEnforcedDefaultApp,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The default app can not be changed because it was configured by the administrator.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasAppOrderChanged)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdAppOrderChanged,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The app order was changed, to see it in action you have to reload the page.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('AppOrderSelector',{staticClass:\"user-app-menu-order\",attrs:{\"aria-details\":_vm.ariaDetailsAppOrder,\"value\":_vm.appOrder},on:{\"update:value\":_vm.updateAppOrder}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"data-test-id\":\"btn-apporder-reset\",\"disabled\":!_vm.hasCustomAppOrder,\"type\":\"tertiary\"},on:{\"click\":_vm.resetAppOrder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconUndo',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Reset default app order'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{class:{\n\t\t'order-selector-element': true,\n\t\t'order-selector-element--disabled': _vm.app.default\n\t},attrs:{\"data-cy-app-order-element\":_vm.app.id},on:{\"focusin\":function($event){return _vm.$emit('update:focus')}}},[_c('svg',{attrs:{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"role\":\"presentation\"}},[_c('image',{staticClass:\"order-selector-element__icon\",attrs:{\"preserveAspectRatio\":\"xMinYMin meet\",\"x\":\"0\",\"y\":\"0\",\"width\":\"20\",\"height\":\"20\",\"xlink:href\":_vm.app.icon}})]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.label ?? _vm.app.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__actions\"},[_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isFirst && !_vm.app.default),expression:\"!isFirst && !app.default\"}],ref:\"buttonUp\",attrs:{\"aria-label\":_vm.t('settings', 'Move up'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"up\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowUp',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isFirst || !!_vm.app.default),expression:\"isFirst || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLast && !_vm.app.default),expression:\"!isLast && !app.default\"}],ref:\"buttonDown\",attrs:{\"aria-label\":_vm.t('settings', 'Move down'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"down\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveDown},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowDown',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLast || !!_vm.app.default),expression:\"isLast || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelectorElement.vue?vue&type=template&id=081ebc45&scoped=true\"\nimport script from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"081ebc45\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('div',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.statusInfoId,\"aria-live\":\"polite\",\"role\":\"status\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.statusInfo)+\"\\n\\t\")]),_vm._v(\" \"),_c('ol',{ref:\"listElement\",staticClass:\"order-selector\",attrs:{\"data-cy-app-order\":\"\"}},_vm._l((_vm.appList),function(app,index){return _c('AppOrderSelectorElement',_vm._g({key:`${app.id}${_vm.renderCount}`,ref:\"selectorElements\",refInFor:true,attrs:{\"app\":app,\"aria-details\":_vm.ariaDetails,\"aria-describedby\":_vm.statusInfoId,\"is-first\":index === 0 || !!_vm.appList[index - 1].default,\"is-last\":index === _vm.value.length - 1}},app.default ? {} : {\n\t\t\t\t'move:up': () => _vm.moveUp(index),\n\t\t\t\t'move:down': () => _vm.moveDown(index),\n\t\t\t\t'update:focus': () => _vm.updateStatusInfo(index),\n\t\t\t}))}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { tryOnMounted, tryOnScopeDispose, toValue, unrefElement, defaultDocument } from '@vueuse/core';\nimport Sortable from 'sortablejs';\nimport { isRef, nextTick } from 'vue-demi';\n\nfunction useSortable(el, list, options = {}) {\n let sortable;\n const { document = defaultDocument, ...resetOptions } = options;\n const defaultOptions = {\n onUpdate: (e) => {\n moveArrayElement(list, e.oldIndex, e.newIndex);\n }\n };\n const start = () => {\n const target = typeof el === \"string\" ? document == null ? void 0 : document.querySelector(el) : unrefElement(el);\n if (!target || sortable !== void 0)\n return;\n sortable = new Sortable(target, { ...defaultOptions, ...resetOptions });\n };\n const stop = () => {\n sortable == null ? void 0 : sortable.destroy();\n sortable = void 0;\n };\n const option = (name, value) => {\n if (value !== void 0)\n sortable == null ? void 0 : sortable.option(name, value);\n else\n return sortable == null ? void 0 : sortable.option(name);\n };\n tryOnMounted(start);\n tryOnScopeDispose(stop);\n return { stop, start, option };\n}\nfunction moveArrayElement(list, from, to) {\n const _valueIsRef = isRef(list);\n const array = _valueIsRef ? [...toValue(list)] : toValue(list);\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n nextTick(() => {\n array.splice(to, 0, element);\n if (_valueIsRef)\n list.value = array;\n });\n }\n}\n\nexport { moveArrayElement, useSortable };\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelector.vue?vue&type=template&id=35797e31&scoped=true\"\nimport script from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35797e31\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Undo.vue?vue&type=template&id=bc8e3c2a\"\nimport script from \"./Undo.vue?vue&type=script&lang=js\"\nexport * from \"./Undo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserAppMenuSection.vue?vue&type=template&id=ee0f3d1a&scoped=true\"\nimport script from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nexport * from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee0f3d1a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=d643b9e0&scoped=true\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d643b9e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"name\":_vm.t('theming', 'Appearance and accessibility settings'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"name\":_vm.t('theming', 'Background'),\"data-user-theming-background-disabled\":\"\"}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('UserAppMenuSection')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getRequestToken } from '@nextcloud/auth'\nimport Vue from 'vue'\n\nimport { refreshStyles } from './helpers/refreshStyles.js'\nimport App from './UserThemes.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming p[data-v-d643b9e0]{max-width:800px}.theming[data-v-d643b9e0] a{font-weight:bold}.theming[data-v-d643b9e0] a:hover,.theming[data-v-d643b9e0] a:focus{text-decoration:underline}.theming__preview-list[data-v-d643b9e0]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-d643b9e0]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-d643b9e0]{display:flex;flex-direction:column}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector[data-v-35797e31]{width:max-content;min-width:260px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelector.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,iBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.order-selector {\\n\\twidth: max-content;\\n\\tmin-width: 260px; // align with NcSelect\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelectorElement.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA\",\"sourcesContent\":[\"\\n.order-selector-element {\\n\\t// hide default styling\\n\\tlist-style: none;\\n\\t// Align children\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\t// Spacing\\n\\tgap: 12px;\\n\\tpadding-inline: 12px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\tborder-color: var(--color-text-maxcontrast);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t.order-selector-element__icon {\\n\\t\\t\\topacity: 75%;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tflex: 0 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 6px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tflex: 1 1;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t&__placeholder {\\n\\t\\theight: 44px;\\n\\t\\twidth: 44px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA\",\"sourcesContent\":[\"\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background-color {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-color: var(--color-main-background) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t.check-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) {\\n\\t\\t\\t.check-icon {\\n\\t\\t\\t\\t// Show checkmark\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming__preview[data-v-1a08e35a]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-1a08e35a],.theming__preview *[data-v-1a08e35a]{user-select:none}.theming__preview-image[data-v-1a08e35a]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-1a08e35a]{margin-bottom:10px}.theming__preview-description[data-v-1a08e35a]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-1a08e35a]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-1a08e35a]{padding:12px 0}.theming__preview--default[data-v-1a08e35a]{grid-column:span 2}.theming__preview-warning[data-v-1a08e35a]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-1a08e35a]{flex-direction:column}.theming__preview-image[data-v-1a08e35a]{margin:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-explanation {\\n\\t\\tmargin-bottom: 10px;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3 {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: math.div(1024px, 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-app-menu-order[data-v-ee0f3d1a]{margin-block:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/UserAppMenuSection.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,iBAAA\",\"sourcesContent\":[\"\\n.user-app-menu-order {\\n\\tmargin-block: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\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 * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar browser_1 = __importDefault(require(\"./image/browser\"));\nvibrant_1.default.DefaultOpts.ImageClass = browser_1.default;\nmodule.exports = vibrant_1.default;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar clone = require(\"lodash/clone\");\nvar Builder = /** @class */ (function () {\n function Builder(src, opts) {\n if (opts === void 0) { opts = {}; }\n this._src = src;\n this._opts = opts;\n this._opts.filters = clone(vibrant_1.default.DefaultOpts.filters);\n }\n Builder.prototype.maxColorCount = function (n) {\n this._opts.colorCount = n;\n return this;\n };\n Builder.prototype.maxDimension = function (d) {\n this._opts.maxDimension = d;\n return this;\n };\n Builder.prototype.addFilter = function (f) {\n this._opts.filters.push(f);\n return this;\n };\n Builder.prototype.removeFilter = function (f) {\n var i = this._opts.filters.indexOf(f);\n if (i > 0)\n this._opts.filters.splice(i);\n return this;\n };\n Builder.prototype.clearFilters = function () {\n this._opts.filters = [];\n return this;\n };\n Builder.prototype.quality = function (q) {\n this._opts.quality = q;\n return this;\n };\n Builder.prototype.useImageClass = function (imageClass) {\n this._opts.ImageClass = imageClass;\n return this;\n };\n Builder.prototype.useGenerator = function (generator) {\n this._opts.generator = generator;\n return this;\n };\n Builder.prototype.useQuantizer = function (quantizer) {\n this._opts.quantizer = quantizer;\n return this;\n };\n Builder.prototype.build = function () {\n return new vibrant_1.default(this._src, this._opts);\n };\n Builder.prototype.getPalette = function (cb) {\n return this.build().getPalette(cb);\n };\n Builder.prototype.getSwatches = function (cb) {\n return this.build().getPalette(cb);\n };\n return Builder;\n}());\nexports.default = Builder;\n//# sourceMappingURL=builder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Swatch = void 0;\nvar util_1 = require(\"./util\");\nvar filter = require(\"lodash/filter\");\nvar Swatch = /** @class */ (function () {\n function Swatch(rgb, population) {\n this._rgb = rgb;\n this._population = population;\n }\n Swatch.applyFilter = function (colors, f) {\n return typeof f === 'function'\n ? filter(colors, function (_a) {\n var r = _a.r, g = _a.g, b = _a.b;\n return f(r, g, b, 255);\n })\n : colors;\n };\n Object.defineProperty(Swatch.prototype, \"r\", {\n get: function () { return this._rgb[0]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"g\", {\n get: function () { return this._rgb[1]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"b\", {\n get: function () { return this._rgb[2]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"rgb\", {\n get: function () { return this._rgb; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hsl\", {\n get: function () {\n if (!this._hsl) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hsl = util_1.rgbToHsl(r, g, b);\n }\n return this._hsl;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hex\", {\n get: function () {\n if (!this._hex) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hex = util_1.rgbToHex(r, g, b);\n }\n return this._hex;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"population\", {\n get: function () { return this._population; },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.toJSON = function () {\n return {\n rgb: this.rgb,\n population: this.population\n };\n };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getRgb = function () { return this._rgb; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHsl = function () { return this.hsl; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getPopulation = function () { return this._population; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHex = function () { return this.hex; };\n Swatch.prototype.getYiq = function () {\n if (!this._yiq) {\n var rgb = this._rgb;\n this._yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n }\n return this._yiq;\n };\n Object.defineProperty(Swatch.prototype, \"titleTextColor\", {\n get: function () {\n if (!this._titleTextColor) {\n this._titleTextColor = this.getYiq() < 200 ? '#fff' : '#000';\n }\n return this._titleTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"bodyTextColor\", {\n get: function () {\n if (!this._bodyTextColor) {\n this._bodyTextColor = this.getYiq() < 150 ? '#fff' : '#000';\n }\n return this._bodyTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.getTitleTextColor = function () {\n return this.titleTextColor;\n };\n Swatch.prototype.getBodyTextColor = function () {\n return this.bodyTextColor;\n };\n return Swatch;\n}());\nexports.Swatch = Swatch;\n//# sourceMappingURL=color.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction defaultFilter(r, g, b, a) {\n return a >= 125 &&\n !(r > 250 && g > 250 && b > 250);\n}\nexports.default = defaultFilter;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineFilters = void 0;\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\nfunction combineFilters(filters) {\n // TODO: caching\n if (!Array.isArray(filters) || filters.length === 0)\n return null;\n return function (r, g, b, a) {\n if (a === 0)\n return false;\n for (var i = 0; i < filters.length; i++) {\n if (!filters[i](r, g, b, a))\n return false;\n }\n return true;\n };\n}\nexports.combineFilters = combineFilters;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar util_1 = require(\"../util\");\nvar defaults = require(\"lodash/defaults\");\nvar DefaultOpts = {\n targetDarkLuma: 0.26,\n maxDarkLuma: 0.45,\n minLightLuma: 0.55,\n targetLightLuma: 0.74,\n minNormalLuma: 0.3,\n targetNormalLuma: 0.5,\n maxNormalLuma: 0.7,\n targetMutesSaturation: 0.3,\n maxMutesSaturation: 0.4,\n targetVibrantSaturation: 1.0,\n minVibrantSaturation: 0.35,\n weightSaturation: 3,\n weightLuma: 6.5,\n weightPopulation: 0.5\n};\nfunction _findMaxPopulation(swatches) {\n var p = 0;\n swatches.forEach(function (s) {\n p = Math.max(p, s.getPopulation());\n });\n return p;\n}\nfunction _isAlreadySelected(palette, s) {\n return palette.Vibrant === s ||\n palette.DarkVibrant === s ||\n palette.LightVibrant === s ||\n palette.Muted === s ||\n palette.DarkMuted === s ||\n palette.LightMuted === s;\n}\nfunction _createComparisonValue(saturation, targetSaturation, luma, targetLuma, population, maxPopulation, opts) {\n function weightedMean() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var sum = 0;\n var weightSum = 0;\n for (var i = 0; i < values.length; i += 2) {\n var value = values[i];\n var weight = values[i + 1];\n sum += value * weight;\n weightSum += weight;\n }\n return sum / weightSum;\n }\n function invertDiff(value, targetValue) {\n return 1 - Math.abs(value - targetValue);\n }\n return weightedMean(invertDiff(saturation, targetSaturation), opts.weightSaturation, invertDiff(luma, targetLuma), opts.weightLuma, population / maxPopulation, opts.weightPopulation);\n}\nfunction _findColorVariation(palette, swatches, maxPopulation, targetLuma, minLuma, maxLuma, targetSaturation, minSaturation, maxSaturation, opts) {\n var max = null;\n var maxValue = 0;\n swatches.forEach(function (swatch) {\n var _a = swatch.getHsl(), s = _a[1], l = _a[2];\n if (s >= minSaturation && s <= maxSaturation &&\n l >= minLuma && l <= maxLuma &&\n !_isAlreadySelected(palette, swatch)) {\n var value = _createComparisonValue(s, targetSaturation, l, targetLuma, swatch.getPopulation(), maxPopulation, opts);\n if (max === null || value > maxValue) {\n max = swatch;\n maxValue = value;\n }\n }\n });\n return max;\n}\nfunction _generateVariationColors(swatches, maxPopulation, opts) {\n var palette = {};\n // mVibrantSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.Vibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mLightVibrantSwatch = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.LightVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mDarkVibrantSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.DarkVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mMutedSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.Muted = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mLightMutedColor = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.LightMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mDarkMutedSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.DarkMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n return palette;\n}\nfunction _generateEmptySwatches(palette, maxPopulation, opts) {\n if (palette.Vibrant === null && palette.DarkVibrant === null && palette.LightVibrant === null) {\n if (palette.DarkVibrant === null && palette.DarkMuted !== null) {\n var _a = palette.DarkMuted.getHsl(), h = _a[0], s = _a[1], l = _a[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.LightMuted !== null) {\n var _b = palette.LightMuted.getHsl(), h = _b[0], s = _b[1], l = _b[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n }\n if (palette.Vibrant === null && palette.DarkVibrant !== null) {\n var _c = palette.DarkVibrant.getHsl(), h = _c[0], s = _c[1], l = _c[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n else if (palette.Vibrant === null && palette.LightVibrant !== null) {\n var _d = palette.LightVibrant.getHsl(), h = _d[0], s = _d[1], l = _d[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkVibrant === null && palette.Vibrant !== null) {\n var _e = palette.Vibrant.getHsl(), h = _e[0], s = _e[1], l = _e[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.Vibrant !== null) {\n var _f = palette.Vibrant.getHsl(), h = _f[0], s = _f[1], l = _f[2];\n l = opts.targetLightLuma;\n palette.LightVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.Muted === null && palette.Vibrant !== null) {\n var _g = palette.Vibrant.getHsl(), h = _g[0], s = _g[1], l = _g[2];\n l = opts.targetMutesSaturation;\n palette.Muted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkMuted === null && palette.DarkVibrant !== null) {\n var _h = palette.DarkVibrant.getHsl(), h = _h[0], s = _h[1], l = _h[2];\n l = opts.targetMutesSaturation;\n palette.DarkMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightMuted === null && palette.LightVibrant !== null) {\n var _j = palette.LightVibrant.getHsl(), h = _j[0], s = _j[1], l = _j[2];\n l = opts.targetMutesSaturation;\n palette.LightMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n}\nvar DefaultGenerator = function (swatches, opts) {\n opts = defaults({}, opts, DefaultOpts);\n var maxPopulation = _findMaxPopulation(swatches);\n var palette = _generateVariationColors(swatches, maxPopulation, opts);\n _generateEmptySwatches(palette, maxPopulation, opts);\n return palette;\n};\nexports.default = DefaultGenerator;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageBase = void 0;\nvar ImageBase = /** @class */ (function () {\n function ImageBase() {\n }\n ImageBase.prototype.scaleDown = function (opts) {\n var width = this.getWidth();\n var height = this.getHeight();\n var ratio = 1;\n if (opts.maxDimension > 0) {\n var maxSide = Math.max(width, height);\n if (maxSide > opts.maxDimension)\n ratio = opts.maxDimension / maxSide;\n }\n else {\n ratio = 1 / opts.quality;\n }\n if (ratio < 1)\n this.resize(width * ratio, height * ratio, ratio);\n };\n ImageBase.prototype.applyFilter = function (filter) {\n var imageData = this.getImageData();\n if (typeof filter === 'function') {\n var pixels = imageData.data;\n var n = pixels.length / 4;\n var offset = void 0, r = void 0, g = void 0, b = void 0, a = void 0;\n for (var i = 0; i < n; i++) {\n offset = i * 4;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Mark ignored color\n if (!filter(r, g, b, a))\n pixels[offset + 3] = 0;\n }\n }\n return Promise.resolve(imageData);\n };\n return ImageBase;\n}());\nexports.ImageBase = ImageBase;\n//# sourceMappingURL=base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_1 = require(\"./base\");\nvar Url = __importStar(require(\"url\"));\nfunction isRelativeUrl(url) {\n var u = Url.parse(url);\n return u.protocol === null &&\n u.host === null &&\n u.port === null;\n}\nfunction isSameOrigin(a, b) {\n var ua = Url.parse(a);\n var ub = Url.parse(b);\n // https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\n return ua.protocol === ub.protocol &&\n ua.hostname === ub.hostname &&\n ua.port === ub.port;\n}\nvar BrowserImage = /** @class */ (function (_super) {\n __extends(BrowserImage, _super);\n function BrowserImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BrowserImage.prototype._initCanvas = function () {\n var img = this.image;\n var canvas = this._canvas = document.createElement('canvas');\n var context = this._context = canvas.getContext('2d');\n canvas.className = 'vibrant-canvas';\n canvas.style.display = 'none';\n this._width = canvas.width = img.width;\n this._height = canvas.height = img.height;\n context.drawImage(img, 0, 0);\n document.body.appendChild(canvas);\n };\n BrowserImage.prototype.load = function (image) {\n var _this = this;\n var img = null;\n var src = null;\n if (typeof image === 'string') {\n img = document.createElement('img');\n if (!isRelativeUrl(image) && !isSameOrigin(window.location.href, image)) {\n img.crossOrigin = 'anonymous';\n }\n src = img.src = image;\n }\n else if (image instanceof HTMLImageElement) {\n img = image;\n src = image.src;\n }\n else {\n return Promise.reject(new Error(\"Cannot load buffer as an image in browser\"));\n }\n this.image = img;\n return new Promise(function (resolve, reject) {\n var onImageLoad = function () {\n _this._initCanvas();\n resolve(_this);\n };\n if (img.complete) {\n // Already loaded\n onImageLoad();\n }\n else {\n img.onload = onImageLoad;\n img.onerror = function (e) { return reject(new Error(\"Fail to load image: \" + src)); };\n }\n });\n };\n BrowserImage.prototype.clear = function () {\n this._context.clearRect(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.update = function (imageData) {\n this._context.putImageData(imageData, 0, 0);\n };\n BrowserImage.prototype.getWidth = function () {\n return this._width;\n };\n BrowserImage.prototype.getHeight = function () {\n return this._height;\n };\n BrowserImage.prototype.resize = function (targetWidth, targetHeight, ratio) {\n var _a = this, canvas = _a._canvas, context = _a._context, img = _a.image;\n this._width = canvas.width = targetWidth;\n this._height = canvas.height = targetHeight;\n context.scale(ratio, ratio);\n context.drawImage(img, 0, 0);\n };\n BrowserImage.prototype.getPixelCount = function () {\n return this._width * this._height;\n };\n BrowserImage.prototype.getImageData = function () {\n return this._context.getImageData(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.remove = function () {\n if (this._canvas && this._canvas.parentNode) {\n this._canvas.parentNode.removeChild(this._canvas);\n }\n };\n return BrowserImage;\n}(base_1.ImageBase));\nexports.default = BrowserImage;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebWorker = void 0;\nvar mmcq_1 = require(\"./mmcq\");\nObject.defineProperty(exports, \"MMCQ\", { enumerable: true, get: function () { return mmcq_1.default; } });\nexports.WebWorker = null;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar vbox_1 = __importDefault(require(\"./vbox\"));\nvar pqueue_1 = __importDefault(require(\"./pqueue\"));\nvar fractByPopulations = 0.75;\nfunction _splitBoxes(pq, target) {\n var lastSize = pq.size();\n while (pq.size() < target) {\n var vbox = pq.pop();\n if (vbox && vbox.count() > 0) {\n var _a = vbox.split(), vbox1 = _a[0], vbox2 = _a[1];\n pq.push(vbox1);\n if (vbox2 && vbox2.count() > 0)\n pq.push(vbox2);\n // No more new boxes, converged\n if (pq.size() === lastSize) {\n break;\n }\n else {\n lastSize = pq.size();\n }\n }\n else {\n break;\n }\n }\n}\nvar MMCQ = function (pixels, opts) {\n if (pixels.length === 0 || opts.colorCount < 2 || opts.colorCount > 256) {\n throw new Error('Wrong MMCQ parameters');\n }\n var vbox = vbox_1.default.build(pixels);\n var hist = vbox.hist;\n var colorCount = Object.keys(hist).length;\n var pq = new pqueue_1.default(function (a, b) { return a.count() - b.count(); });\n pq.push(vbox);\n // first set of colors, sorted by population\n _splitBoxes(pq, fractByPopulations * opts.colorCount);\n // Re-order\n var pq2 = new pqueue_1.default(function (a, b) { return a.count() * a.volume() - b.count() * b.volume(); });\n pq2.contents = pq.contents;\n // next set - generate the median cuts using the (npix * vol) sorting.\n _splitBoxes(pq2, opts.colorCount - pq2.size());\n // calculate the actual colors\n return generateSwatches(pq2);\n};\nfunction generateSwatches(pq) {\n var swatches = [];\n while (pq.size()) {\n var v = pq.pop();\n var color = v.avg();\n var r = color[0], g = color[1], b = color[2];\n swatches.push(new color_1.Swatch(color, v.count()));\n }\n return swatches;\n}\nexports.default = MMCQ;\n//# sourceMappingURL=mmcq.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PQueue = /** @class */ (function () {\n function PQueue(comparator) {\n this._comparator = comparator;\n this.contents = [];\n this._sorted = false;\n }\n PQueue.prototype._sort = function () {\n if (!this._sorted) {\n this.contents.sort(this._comparator);\n this._sorted = true;\n }\n };\n PQueue.prototype.push = function (item) {\n this.contents.push(item);\n this._sorted = false;\n };\n PQueue.prototype.peek = function (index) {\n this._sort();\n index = typeof index === 'number' ? index : this.contents.length - 1;\n return this.contents[index];\n };\n PQueue.prototype.pop = function () {\n this._sort();\n return this.contents.pop();\n };\n PQueue.prototype.size = function () {\n return this.contents.length;\n };\n PQueue.prototype.map = function (mapper) {\n this._sort();\n return this.contents.map(mapper);\n };\n return PQueue;\n}());\nexports.default = PQueue;\n//# sourceMappingURL=pqueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util\");\nvar VBox = /** @class */ (function () {\n function VBox(r1, r2, g1, g2, b1, b2, hist) {\n this._volume = -1;\n this._count = -1;\n this.dimension = { r1: r1, r2: r2, g1: g1, g2: g2, b1: b1, b2: b2 };\n this.hist = hist;\n }\n VBox.build = function (pixels, shouldIgnore) {\n var hn = 1 << (3 * util_1.SIGBITS);\n var hist = new Uint32Array(hn);\n var rmax;\n var rmin;\n var gmax;\n var gmin;\n var bmax;\n var bmin;\n var r;\n var g;\n var b;\n var a;\n rmax = gmax = bmax = 0;\n rmin = gmin = bmin = Number.MAX_VALUE;\n var n = pixels.length / 4;\n var i = 0;\n while (i < n) {\n var offset = i * 4;\n i++;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Ignored pixels' alpha is marked as 0 in filtering stage\n if (a === 0)\n continue;\n r = r >> util_1.RSHIFT;\n g = g >> util_1.RSHIFT;\n b = b >> util_1.RSHIFT;\n var index = util_1.getColorIndex(r, g, b);\n hist[index] += 1;\n if (r > rmax)\n rmax = r;\n if (r < rmin)\n rmin = r;\n if (g > gmax)\n gmax = g;\n if (g < gmin)\n gmin = g;\n if (b > bmax)\n bmax = b;\n if (b < bmin)\n bmin = b;\n }\n return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, hist);\n };\n VBox.prototype.invalidate = function () {\n this._volume = this._count = -1;\n this._avg = null;\n };\n VBox.prototype.volume = function () {\n if (this._volume < 0) {\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n this._volume = (r2 - r1 + 1) * (g2 - g1 + 1) * (b2 - b1 + 1);\n }\n return this._volume;\n };\n VBox.prototype.count = function () {\n if (this._count < 0) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var c = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n c += hist[index];\n }\n }\n }\n this._count = c;\n }\n return this._count;\n };\n VBox.prototype.clone = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n return new VBox(r1, r2, g1, g2, b1, b2, hist);\n };\n VBox.prototype.avg = function () {\n if (!this._avg) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var ntot = 0;\n var mult = 1 << (8 - util_1.SIGBITS);\n var rsum = void 0;\n var gsum = void 0;\n var bsum = void 0;\n rsum = gsum = bsum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n var h = hist[index];\n ntot += h;\n rsum += (h * (r + 0.5) * mult);\n gsum += (h * (g + 0.5) * mult);\n bsum += (h * (b + 0.5) * mult);\n }\n }\n }\n if (ntot) {\n this._avg = [\n ~~(rsum / ntot),\n ~~(gsum / ntot),\n ~~(bsum / ntot)\n ];\n }\n else {\n this._avg = [\n ~~(mult * (r1 + r2 + 1) / 2),\n ~~(mult * (g1 + g2 + 1) / 2),\n ~~(mult * (b1 + b2 + 1) / 2)\n ];\n }\n }\n return this._avg;\n };\n VBox.prototype.contains = function (rgb) {\n var r = rgb[0], g = rgb[1], b = rgb[2];\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n r >>= util_1.RSHIFT;\n g >>= util_1.RSHIFT;\n b >>= util_1.RSHIFT;\n return r >= r1 && r <= r2 &&\n g >= g1 && g <= g2 &&\n b >= b1 && b <= b2;\n };\n VBox.prototype.split = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var count = this.count();\n if (!count)\n return [];\n if (count === 1)\n return [this.clone()];\n var rw = r2 - r1 + 1;\n var gw = g2 - g1 + 1;\n var bw = b2 - b1 + 1;\n var maxw = Math.max(rw, gw, bw);\n var accSum = null;\n var sum;\n var total;\n sum = total = 0;\n var maxd = null;\n if (maxw === rw) {\n maxd = 'r';\n accSum = new Uint32Array(r2 + 1);\n for (var r = r1; r <= r2; r++) {\n sum = 0;\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[r] = total;\n }\n }\n else if (maxw === gw) {\n maxd = 'g';\n accSum = new Uint32Array(g2 + 1);\n for (var g = g1; g <= g2; g++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[g] = total;\n }\n }\n else {\n maxd = 'b';\n accSum = new Uint32Array(b2 + 1);\n for (var b = b1; b <= b2; b++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[b] = total;\n }\n }\n var splitPoint = -1;\n var reverseSum = new Uint32Array(accSum.length);\n for (var i = 0; i < accSum.length; i++) {\n var d = accSum[i];\n if (splitPoint < 0 && d > total / 2)\n splitPoint = i;\n reverseSum[i] = total - d;\n }\n var vbox = this;\n function doCut(d) {\n var dim1 = d + '1';\n var dim2 = d + '2';\n var d1 = vbox.dimension[dim1];\n var d2 = vbox.dimension[dim2];\n var vbox1 = vbox.clone();\n var vbox2 = vbox.clone();\n var left = splitPoint - d1;\n var right = d2 - splitPoint;\n if (left <= right) {\n d2 = Math.min(d2 - 1, ~~(splitPoint + right / 2));\n d2 = Math.max(0, d2);\n }\n else {\n d2 = Math.max(d1, ~~(splitPoint - 1 - left / 2));\n d2 = Math.min(vbox.dimension[dim2], d2);\n }\n while (!accSum[d2])\n d2++;\n var c2 = reverseSum[d2];\n while (!c2 && accSum[d2 - 1])\n c2 = reverseSum[--d2];\n vbox1.dimension[dim2] = d2;\n vbox2.dimension[dim1] = d2 + 1;\n return [vbox1, vbox2];\n }\n return doCut(maxd);\n };\n return VBox;\n}());\nexports.default = VBox;\n//# sourceMappingURL=vbox.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getColorIndex = exports.getColorDiffStatus = exports.hexDiff = exports.rgbDiff = exports.deltaE94 = exports.rgbToCIELab = exports.xyzToCIELab = exports.rgbToXyz = exports.hslToRgb = exports.rgbToHsl = exports.rgbToHex = exports.hexToRgb = exports.defer = exports.RSHIFT = exports.SIGBITS = exports.DELTAE94_DIFF_STATUS = void 0;\nexports.DELTAE94_DIFF_STATUS = {\n NA: 0,\n PERFECT: 1,\n CLOSE: 2,\n GOOD: 10,\n SIMILAR: 50\n};\nexports.SIGBITS = 5;\nexports.RSHIFT = 8 - exports.SIGBITS;\nfunction defer() {\n var resolve;\n var reject;\n // eslint-disable-next-line promise/param-names\n var promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n // @ts-ignore\n return { resolve: resolve, reject: reject, promise: promise };\n}\nexports.defer = defer;\nfunction hexToRgb(hex) {\n var m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return m === null ? null : [m[1], m[2], m[3]].map(function (s) { return parseInt(s, 16); });\n}\nexports.hexToRgb = hexToRgb;\nfunction rgbToHex(r, g, b) {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1, 7);\n}\nexports.rgbToHex = rgbToHex;\nfunction rgbToHsl(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n // @ts-ignore\n h /= 6;\n }\n // @ts-ignore\n return [h, s, l];\n}\nexports.rgbToHsl = rgbToHsl;\nfunction hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n function hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - (l * s);\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - (1 / 3));\n }\n return [\n r * 255,\n g * 255,\n b * 255\n ];\n}\nexports.hslToRgb = hslToRgb;\nfunction rgbToXyz(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n r = r > 0.04045 ? Math.pow((r + 0.005) / 1.055, 2.4) : r / 12.92;\n g = g > 0.04045 ? Math.pow((g + 0.005) / 1.055, 2.4) : g / 12.92;\n b = b > 0.04045 ? Math.pow((b + 0.005) / 1.055, 2.4) : b / 12.92;\n r *= 100;\n g *= 100;\n b *= 100;\n var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x, y, z];\n}\nexports.rgbToXyz = rgbToXyz;\nfunction xyzToCIELab(x, y, z) {\n var REF_X = 95.047;\n var REF_Y = 100;\n var REF_Z = 108.883;\n x /= REF_X;\n y /= REF_Y;\n z /= REF_Z;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n var L = 116 * y - 16;\n var a = 500 * (x - y);\n var b = 200 * (y - z);\n return [L, a, b];\n}\nexports.xyzToCIELab = xyzToCIELab;\nfunction rgbToCIELab(r, g, b) {\n var _a = rgbToXyz(r, g, b), x = _a[0], y = _a[1], z = _a[2];\n return xyzToCIELab(x, y, z);\n}\nexports.rgbToCIELab = rgbToCIELab;\nfunction deltaE94(lab1, lab2) {\n var WEIGHT_L = 1;\n var WEIGHT_C = 1;\n var WEIGHT_H = 1;\n var L1 = lab1[0], a1 = lab1[1], b1 = lab1[2];\n var L2 = lab2[0], a2 = lab2[1], b2 = lab2[2];\n var dL = L1 - L2;\n var da = a1 - a2;\n var db = b1 - b2;\n var xC1 = Math.sqrt(a1 * a1 + b1 * b1);\n var xC2 = Math.sqrt(a2 * a2 + b2 * b2);\n var xDL = L2 - L1;\n var xDC = xC2 - xC1;\n var xDE = Math.sqrt(dL * dL + da * da + db * db);\n var xDH = (Math.sqrt(xDE) > Math.sqrt(Math.abs(xDL)) + Math.sqrt(Math.abs(xDC)))\n ? Math.sqrt(xDE * xDE - xDL * xDL - xDC * xDC)\n : 0;\n var xSC = 1 + 0.045 * xC1;\n var xSH = 1 + 0.015 * xC1;\n xDL /= WEIGHT_L;\n xDC /= WEIGHT_C * xSC;\n xDH /= WEIGHT_H * xSH;\n return Math.sqrt(xDL * xDL + xDC * xDC + xDH * xDH);\n}\nexports.deltaE94 = deltaE94;\nfunction rgbDiff(rgb1, rgb2) {\n var lab1 = rgbToCIELab.apply(undefined, rgb1);\n var lab2 = rgbToCIELab.apply(undefined, rgb2);\n return deltaE94(lab1, lab2);\n}\nexports.rgbDiff = rgbDiff;\nfunction hexDiff(hex1, hex2) {\n var rgb1 = hexToRgb(hex1);\n var rgb2 = hexToRgb(hex2);\n return rgbDiff(rgb1, rgb2);\n}\nexports.hexDiff = hexDiff;\nfunction getColorDiffStatus(d) {\n if (d < exports.DELTAE94_DIFF_STATUS.NA) {\n return 'N/A';\n }\n // Not perceptible by human eyes\n if (d <= exports.DELTAE94_DIFF_STATUS.PERFECT) {\n return 'Perfect';\n }\n // Perceptible through close observation\n if (d <= exports.DELTAE94_DIFF_STATUS.CLOSE) {\n return 'Close';\n }\n // Perceptible at a glance\n if (d <= exports.DELTAE94_DIFF_STATUS.GOOD) {\n return 'Good';\n }\n // Colors are more similar than opposite\n if (d < exports.DELTAE94_DIFF_STATUS.SIMILAR) {\n return 'Similar';\n }\n return 'Wrong';\n}\nexports.getColorDiffStatus = getColorDiffStatus;\nfunction getColorIndex(r, g, b) {\n return (r << (2 * exports.SIGBITS)) + (g << exports.SIGBITS) + b;\n}\nexports.getColorIndex = getColorIndex;\n//# sourceMappingURL=util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"./color\");\nvar builder_1 = __importDefault(require(\"./builder\"));\nvar Util = __importStar(require(\"./util\"));\nvar Quantizer = __importStar(require(\"./quantizer\"));\nvar Generator = __importStar(require(\"./generator\"));\nvar Filters = __importStar(require(\"./filter\"));\nvar defaults = require(\"lodash/defaults\");\nvar Vibrant = /** @class */ (function () {\n function Vibrant(_src, opts) {\n this._src = _src;\n this.opts = defaults({}, opts, Vibrant.DefaultOpts);\n this.opts.combinedFilter = Filters.combineFilters(this.opts.filters);\n }\n Vibrant.from = function (src) {\n return new builder_1.default(src);\n };\n Vibrant.prototype._process = function (image, opts) {\n var quantizer = opts.quantizer, generator = opts.generator;\n image.scaleDown(opts);\n return image.applyFilter(opts.combinedFilter)\n .then(function (imageData) { return quantizer(imageData.data, opts); })\n .then(function (colors) { return color_1.Swatch.applyFilter(colors, opts.combinedFilter); })\n .then(function (colors) { return Promise.resolve(generator(colors)); });\n };\n Vibrant.prototype.palette = function () {\n return this.swatches();\n };\n Vibrant.prototype.swatches = function () {\n return this._palette;\n };\n Vibrant.prototype.getPalette = function (cb) {\n var _this = this;\n var image = new this.opts.ImageClass();\n var result = image.load(this._src)\n .then(function (image) { return _this._process(image, _this.opts); })\n .then(function (palette) {\n _this._palette = palette;\n image.remove();\n return palette;\n }, function (err) {\n image.remove();\n throw err;\n });\n if (cb)\n result.then(function (palette) { return cb(null, palette); }, function (err) { return cb(err); });\n return result;\n };\n Vibrant.Builder = builder_1.default;\n Vibrant.Quantizer = Quantizer;\n Vibrant.Generator = Generator;\n Vibrant.Filter = Filters;\n Vibrant.Util = Util;\n Vibrant.Swatch = color_1.Swatch;\n Vibrant.DefaultOpts = {\n colorCount: 64,\n quality: 5,\n generator: Generator.Default,\n ImageClass: null,\n quantizer: Quantizer.MMCQ,\n filters: [Filters.Default]\n };\n return Vibrant;\n}());\nexports.default = Vibrant;\n//# sourceMappingURL=vibrant.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"930a9f0a458cd206d9d1\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1474;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1474: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(52689)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","backgroundImage","loadState","shippedBackgroundList","themingDefaultBackground","defaultShippedBackground","prefixWithBaseUrl","url","generateFilePath","components","Check","Close","ImageEdit","NcButton","NcColorPicker","data","loading","Theming","computed","shippedBackgrounds","Object","keys","map","fileName","preview","details","filter","background","isGlobalBackgroundDeleted","isGlobalBackgroundDefault","isBackgroundDisabled","methods","invertTextColor","color","calculateLuma","red","green","blue","hexToRGB","hex","result","exec","parseInt","update","backgroundColor","setDefault","axios","post","generateUrl","setShipped","shipped","value","setFile","path","arguments","length","undefined","removeBackground","delete","pickColor","event","target","dataset","debouncePickColor","debounce","pickFile","getFilePickerBuilder","t","allowDirectories","setMimeTypeFilter","setMultiSelect","addButton","id","label","callback","nodes","applyFile","build","pick","trim","console","error","showError","response","fileUrl","generateRemoteUrl","getCurrentUser","uid","get","responseType","blobUrl","URL","createObjectURL","palette","getColorPaletteFromBlob","DarkVibrant","debug","Promise","resolve","reject","Vibrant","getPalette","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","class","style","defaultColor","model","$$v","$set","expression","_l","shippedBackground","key","primary_color","attribution","description","theming","NcCheckboxRadioSwitch","enforced","Boolean","selected","theme","required","unique","switchType","img","checked","set","enabled","onToggle","enableLabel","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","defineProperty","enumerable","configurable","writable","_extends","assign","i","source","hasOwnProperty","call","apply","_objectSpread","ownKeys","getOwnPropertySymbols","concat","sym","getOwnPropertyDescriptor","forEach","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","fn","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","defaultView","getComputedStyle","currentStyle","indexOf","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","isRectEqual","rect1","rect2","Math","round","throttle","ms","args","setTimeout","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","push","pluginEvent","eventName","sortable","evt","_this","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","originalEvent","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","bind","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","rect","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","animationCallbackId","animationStates","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","slice","child","fromRect","thisAnimationDuration","childMatrix","f","e","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","offsetWidth","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","inputs","idx","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","destroy","Array","querySelectorAll","removeAttribute","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","util","warn","defineComponent","IconArrowDown","IconArrowUp","ariaDescribedby","ariaDetails","app","isFirst","isLast","move:up","move:down","update:focus","setup","emit","buttonUp","ref","buttonDown","needsFocus","moveUp","moveDown","keepFocus","$el","focus","_setupProxy","icon","directives","rawName","scopedSlots","_u","proxy","AppOrderSelectorElement","Fragment","isArray","listElement","appList","newValue","renderCount","resetOptions","defaultOptions","onUpdate","_valueIsRef","array","moveArrayElement","start","querySelector","stop","useSortable","selectorElements","onUpdated","statusInfo","before","statusInfoId","random","updateStatusInfo","position","total","_g","refInFor","AppOrderSelector","IconUndo","NcNoteCard","NcSettingsSection","userAppOrder","enforcedDefaultApp","initialAppOrder","values","hasCustomAppOrder","hasAppOrderChanged","appOrder","elementIdAppOrderChanged","elementIdEnforcedDefaultApp","ariaDetailsAppOrder","saveSetting","generateOcsUrl","appId","configKey","configValue","JSON","stringify","updateAppOrder","then","catch","resetAppOrder","headers","ocs","availableThemes","enforceTheme","shortcutsDisabled","isUserThemingDisabled","ItemPreview","BackgroundSettings","UserAppMenuSection","themes","fonts","selectedTheme","guidelinesLink","descriptionDetail","issuetrackerLink","designteamLink","watch","newState","changeShortcutsDisabled","refreshGlobalStyles","head","searchParams","now","newTheme","onload","remove","append","updateBackground","changeTheme","updateBodyAttributes","selectItem","changeFont","font","method","enabledThemesIDs","enabledFontsIDs","toggleAttribute","setAttribute","themeId","OC","Notification","showTemporary","meta","message","domProps","__webpack_nonce__","btoa","getRequestToken","Vue","App","$mount","$on","refreshStyles","___CSS_LOADER_EXPORT___","module","baseForOwn","baseEach","createBaseEach","exports","collection","predicate","baseFor","object","iteratee","isArrayLike","eachFunc","fromRight","iterable","baseRest","eq","isIterateeCall","keysIn","objectProto","sources","guard","propsIndex","propsLength","arrayFilter","baseFilter","baseIteratee","__importDefault","mod","__esModule","vibrant_1","browser_1","DefaultOpts","ImageClass","Builder","opts","_src","_opts","filters","maxColorCount","colorCount","maxDimension","addFilter","removeFilter","clearFilters","quality","q","useImageClass","imageClass","useGenerator","generator","useQuantizer","quantizer","cb","getSwatches","Swatch","util_1","rgb","population","_rgb","_population","applyFilter","colors","_a","r","g","_hsl","rgbToHsl","_hex","rgbToHex","toJSON","getRgb","getHsl","hsl","getPopulation","getHex","getYiq","_yiq","_titleTextColor","_bodyTextColor","getTitleTextColor","titleTextColor","getBodyTextColor","bodyTextColor","combineFilters","default_1","color_1","targetDarkLuma","maxDarkLuma","minLightLuma","targetLightLuma","minNormalLuma","targetNormalLuma","maxNormalLuma","targetMutesSaturation","maxMutesSaturation","targetVibrantSaturation","minVibrantSaturation","weightSaturation","weightLuma","weightPopulation","_findColorVariation","swatches","maxPopulation","targetLuma","minLuma","maxLuma","targetSaturation","minSaturation","maxSaturation","maxValue","swatch","s","l","LightVibrant","Muted","DarkMuted","LightMuted","_isAlreadySelected","saturation","luma","invertDiff","targetValue","_i","weightSum","weight","weightedMean","_createComparisonValue","p","_findMaxPopulation","_generateVariationColors","h","hslToRgb","_d","_f","_h","_j","_generateEmptySwatches","ImageBase","scaleDown","getWidth","getHeight","ratio","maxSide","resize","imageData","getImageData","pixels","offset","extendStatics","__extends","setPrototypeOf","__proto__","__","__createBinding","o","m","k","k2","__setModuleDefault","v","__importStar","base_1","Url","BrowserImage","_super","_initCanvas","image","canvas","_canvas","context","_context","getContext","_width","_height","drawImage","load","ua","ub","u","parse","protocol","port","location","hostname","crossOrigin","HTMLImageElement","Error","onImageLoad","complete","onerror","clearRect","putImageData","targetWidth","targetHeight","scale","getPixelCount","WebWorker","mmcq_1","vbox_1","pqueue_1","_splitBoxes","pq","lastSize","vbox","pop","count","vbox1","vbox2","hist","pq2","volume","contents","avg","generateSwatches","PQueue","comparator","_comparator","_sorted","_sort","peek","mapper","VBox","r1","r2","g1","g2","b1","b2","_volume","_count","dimension","shouldIgnore","rmax","rmin","gmax","gmin","bmax","bmin","hn","SIGBITS","Uint32Array","MAX_VALUE","RSHIFT","getColorIndex","invalidate","_avg","ntot","mult","rsum","gsum","bsum","rw","gw","bw","maxw","accSum","maxd","splitPoint","reverseSum","dim1","dim2","d1","d2","min","c2","doCut","hexToRgb","rgbToXyz","xyzToCIELab","z","rgbToCIELab","deltaE94","lab1","lab2","L1","a1","L2","a2","dL","da","db","xC1","xDL","xDC","xDE","xDH","rgbDiff","rgb1","rgb2","getColorDiffStatus","hexDiff","defer","DELTAE94_DIFF_STATUS","NA","PERFECT","CLOSE","GOOD","SIMILAR","promise","_resolve","_reject","hue2rgb","hex1","hex2","builder_1","Util","Quantizer","Generator","Filters","combinedFilter","_process","_palette","Filter","Default","MMCQ","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","getter","definition","chunkId","all","reduce","promises","globalThis","Function","done","script","needAttach","scripts","charset","timeout","nc","onScriptComplete","prev","doneFns","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"theming-personal-theming.js?v=eb9d7284a650de502fec","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageEdit.vue?e9bd","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=template&id=7bb2aa9c","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?0f9a","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?da76","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7631","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?69ad","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/@vueuse/integrations/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?649a","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?aad4","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue","webpack:///nextcloud/node_modules/@vueuse/integrations/useSortable.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?a335","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?dbd7","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Undo.vue?d998","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=template&id=bc8e3c2a","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?6b96","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?402e","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/UserThemes.vue?6be3","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?b683","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=style&index=0&id=3d6952db&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/lodash/_baseEach.js","webpack:///nextcloud/node_modules/lodash/_baseFilter.js","webpack:///nextcloud/node_modules/lodash/_baseForOwn.js","webpack:///nextcloud/node_modules/lodash/_createBaseEach.js","webpack:///nextcloud/node_modules/lodash/defaults.js","webpack:///nextcloud/node_modules/lodash/filter.js","webpack:///nextcloud/node_modules/node-vibrant/lib/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/builder.js","webpack:///nextcloud/node_modules/node-vibrant/lib/color.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/base.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/mmcq.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/pqueue.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/vbox.js","webpack:///nextcloud/node_modules/node-vibrant/lib/util.js","webpack:///nextcloud/node_modules/node-vibrant/lib/vibrant.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageEdit.vue?vue&type=template&id=7bb2aa9c\"\nimport script from \"./ImageEdit.vue?vue&type=script&lang=js\"\nexport * from \"./ImageEdit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-edit-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=1175e65a&scoped=true\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1175e65a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'custom',\n\t\t\t'background background__filepicker': true,\n\t\t\t'background--active': _vm.backgroundImage === 'custom'\n\t\t},attrs:{\"aria-pressed\":_vm.backgroundImage === 'custom',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),(_vm.backgroundImage !== 'custom')?_c('ImageEdit',{attrs:{\"size\":26}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'default',\n\t\t\t'background background__default': true,\n\t\t\t'background--active': _vm.backgroundImage === 'default'\n\t\t},style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"aria-pressed\":_vm.backgroundImage === 'default',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('div',{staticClass:\"background-color\",attrs:{\"data-user-theming-background-color\":\"\"}},[_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('NcButton',{attrs:{\"type\":\"ternary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'background background__delete': true,\n\t\t\t'background--active': _vm.isBackgroundDisabled\n\t\t},attrs:{\"aria-pressed\":_vm.isBackgroundDisabled,\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'No background'))+\"\\n\\t\\t\"),(!_vm.isBackgroundDisabled)?_c('Close',{attrs:{\"size\":32}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{key:shippedBackground.name,class:{\n\t\t\t'background background__shipped': true,\n\t\t\t'icon-loading': _vm.loading === shippedBackground.name,\n\t\t\t'background--active': _vm.backgroundImage === shippedBackground.name\n\t\t},style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"title\":shippedBackground.details.attribution,\"aria-label\":shippedBackground.details.description,\"aria-pressed\":_vm.backgroundImage === shippedBackground.name,\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',{staticClass:\"theming__preview-explanation\"},[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=1a08e35a&scoped=true\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a08e35a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Navigation bar settings')}},[_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.enforcedDefaultApp)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdEnforcedDefaultApp,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The default app can not be changed because it was configured by the administrator.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasAppOrderChanged)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdAppOrderChanged,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The app order was changed, to see it in action you have to reload the page.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('AppOrderSelector',{staticClass:\"user-app-menu-order\",attrs:{\"aria-details\":_vm.ariaDetailsAppOrder,\"value\":_vm.appOrder},on:{\"update:value\":_vm.updateAppOrder}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"data-test-id\":\"btn-apporder-reset\",\"disabled\":!_vm.hasCustomAppOrder,\"type\":\"tertiary\"},on:{\"click\":_vm.resetAppOrder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconUndo',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Reset default app order'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{class:{\n\t\t'order-selector-element': true,\n\t\t'order-selector-element--disabled': _vm.app.default\n\t},attrs:{\"data-cy-app-order-element\":_vm.app.id},on:{\"focusin\":function($event){return _vm.$emit('update:focus')}}},[_c('svg',{attrs:{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"role\":\"presentation\"}},[_c('image',{staticClass:\"order-selector-element__icon\",attrs:{\"preserveAspectRatio\":\"xMinYMin meet\",\"x\":\"0\",\"y\":\"0\",\"width\":\"20\",\"height\":\"20\",\"xlink:href\":_vm.app.icon}})]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.label ?? _vm.app.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__actions\"},[_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isFirst && !_vm.app.default),expression:\"!isFirst && !app.default\"}],ref:\"buttonUp\",attrs:{\"aria-label\":_vm.t('settings', 'Move up'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"up\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowUp',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isFirst || !!_vm.app.default),expression:\"isFirst || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLast && !_vm.app.default),expression:\"!isLast && !app.default\"}],ref:\"buttonDown\",attrs:{\"aria-label\":_vm.t('settings', 'Move down'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"down\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveDown},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowDown',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLast || !!_vm.app.default),expression:\"isLast || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelectorElement.vue?vue&type=template&id=081ebc45&scoped=true\"\nimport script from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"081ebc45\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('div',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.statusInfoId,\"aria-live\":\"polite\",\"role\":\"status\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.statusInfo)+\"\\n\\t\")]),_vm._v(\" \"),_c('ol',{ref:\"listElement\",staticClass:\"order-selector\",attrs:{\"data-cy-app-order\":\"\"}},_vm._l((_vm.appList),function(app,index){return _c('AppOrderSelectorElement',_vm._g({key:`${app.id}${_vm.renderCount}`,ref:\"selectorElements\",refInFor:true,attrs:{\"app\":app,\"aria-details\":_vm.ariaDetails,\"aria-describedby\":_vm.statusInfoId,\"is-first\":index === 0 || !!_vm.appList[index - 1].default,\"is-last\":index === _vm.value.length - 1}},app.default ? {} : {\n\t\t\t\t'move:up': () => _vm.moveUp(index),\n\t\t\t\t'move:down': () => _vm.moveDown(index),\n\t\t\t\t'update:focus': () => _vm.updateStatusInfo(index),\n\t\t\t}))}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { tryOnMounted, tryOnScopeDispose, toValue, unrefElement, defaultDocument } from '@vueuse/core';\nimport Sortable from 'sortablejs';\nimport { isRef, nextTick } from 'vue-demi';\n\nfunction useSortable(el, list, options = {}) {\n let sortable;\n const { document = defaultDocument, ...resetOptions } = options;\n const defaultOptions = {\n onUpdate: (e) => {\n moveArrayElement(list, e.oldIndex, e.newIndex);\n }\n };\n const start = () => {\n const target = typeof el === \"string\" ? document == null ? void 0 : document.querySelector(el) : unrefElement(el);\n if (!target || sortable !== void 0)\n return;\n sortable = new Sortable(target, { ...defaultOptions, ...resetOptions });\n };\n const stop = () => {\n sortable == null ? void 0 : sortable.destroy();\n sortable = void 0;\n };\n const option = (name, value) => {\n if (value !== void 0)\n sortable == null ? void 0 : sortable.option(name, value);\n else\n return sortable == null ? void 0 : sortable.option(name);\n };\n tryOnMounted(start);\n tryOnScopeDispose(stop);\n return { stop, start, option };\n}\nfunction moveArrayElement(list, from, to) {\n const _valueIsRef = isRef(list);\n const array = _valueIsRef ? [...toValue(list)] : toValue(list);\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n nextTick(() => {\n array.splice(to, 0, element);\n if (_valueIsRef)\n list.value = array;\n });\n }\n}\n\nexport { moveArrayElement, useSortable };\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelector.vue?vue&type=template&id=76d01da8&scoped=true\"\nimport script from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelector.vue?vue&type=style&index=0&id=76d01da8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76d01da8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Undo.vue?vue&type=template&id=bc8e3c2a\"\nimport script from \"./Undo.vue?vue&type=script&lang=js\"\nexport * from \"./Undo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=3d6952db&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=3d6952db&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserAppMenuSection.vue?vue&type=template&id=3d6952db&scoped=true\"\nimport script from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nexport * from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserAppMenuSection.vue?vue&type=style&index=0&id=3d6952db&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d6952db\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=d643b9e0&scoped=true\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=d643b9e0&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d643b9e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"name\":_vm.t('theming', 'Appearance and accessibility settings'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"name\":_vm.t('theming', 'Background'),\"data-user-theming-background-disabled\":\"\"}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('UserAppMenuSection')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getRequestToken } from '@nextcloud/auth'\nimport Vue from 'vue'\n\nimport { refreshStyles } from './helpers/refreshStyles.js'\nimport App from './UserThemes.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming p[data-v-d643b9e0]{max-width:800px}.theming[data-v-d643b9e0] a{font-weight:bold}.theming[data-v-d643b9e0] a:hover,.theming[data-v-d643b9e0] a:focus{text-decoration:underline}.theming__preview-list[data-v-d643b9e0]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-d643b9e0]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-d643b9e0]{display:flex;flex-direction:column}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector[data-v-76d01da8]{width:max-content;min-width:260px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelector.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,iBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.order-selector {\\n\\twidth: max-content;\\n\\tmin-width: 260px; // align with NcSelect\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelectorElement.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA\",\"sourcesContent\":[\"\\n.order-selector-element {\\n\\t// hide default styling\\n\\tlist-style: none;\\n\\t// Align children\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\t// Spacing\\n\\tgap: 12px;\\n\\tpadding-inline: 12px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\tborder-color: var(--color-text-maxcontrast);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t.order-selector-element__icon {\\n\\t\\t\\topacity: 75%;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tflex: 0 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 6px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tflex: 1 1;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t&__placeholder {\\n\\t\\theight: 44px;\\n\\t\\twidth: 44px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA\",\"sourcesContent\":[\"\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background-color {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-color: var(--color-main-background) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t.check-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) {\\n\\t\\t\\t.check-icon {\\n\\t\\t\\t\\t// Show checkmark\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming__preview[data-v-1a08e35a]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-1a08e35a],.theming__preview *[data-v-1a08e35a]{user-select:none}.theming__preview-image[data-v-1a08e35a]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-1a08e35a]{margin-bottom:10px}.theming__preview-description[data-v-1a08e35a]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-1a08e35a]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-1a08e35a]{padding:12px 0}.theming__preview--default[data-v-1a08e35a]{grid-column:span 2}.theming__preview-warning[data-v-1a08e35a]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-1a08e35a]{flex-direction:column}.theming__preview-image[data-v-1a08e35a]{margin:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-explanation {\\n\\t\\tmargin-bottom: 10px;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3 {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: math.div(1024px, 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-app-menu-order[data-v-3d6952db]{margin-block:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/UserAppMenuSection.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,iBAAA\",\"sourcesContent\":[\"\\n.user-app-menu-order {\\n\\tmargin-block: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\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 * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar browser_1 = __importDefault(require(\"./image/browser\"));\nvibrant_1.default.DefaultOpts.ImageClass = browser_1.default;\nmodule.exports = vibrant_1.default;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar clone = require(\"lodash/clone\");\nvar Builder = /** @class */ (function () {\n function Builder(src, opts) {\n if (opts === void 0) { opts = {}; }\n this._src = src;\n this._opts = opts;\n this._opts.filters = clone(vibrant_1.default.DefaultOpts.filters);\n }\n Builder.prototype.maxColorCount = function (n) {\n this._opts.colorCount = n;\n return this;\n };\n Builder.prototype.maxDimension = function (d) {\n this._opts.maxDimension = d;\n return this;\n };\n Builder.prototype.addFilter = function (f) {\n this._opts.filters.push(f);\n return this;\n };\n Builder.prototype.removeFilter = function (f) {\n var i = this._opts.filters.indexOf(f);\n if (i > 0)\n this._opts.filters.splice(i);\n return this;\n };\n Builder.prototype.clearFilters = function () {\n this._opts.filters = [];\n return this;\n };\n Builder.prototype.quality = function (q) {\n this._opts.quality = q;\n return this;\n };\n Builder.prototype.useImageClass = function (imageClass) {\n this._opts.ImageClass = imageClass;\n return this;\n };\n Builder.prototype.useGenerator = function (generator) {\n this._opts.generator = generator;\n return this;\n };\n Builder.prototype.useQuantizer = function (quantizer) {\n this._opts.quantizer = quantizer;\n return this;\n };\n Builder.prototype.build = function () {\n return new vibrant_1.default(this._src, this._opts);\n };\n Builder.prototype.getPalette = function (cb) {\n return this.build().getPalette(cb);\n };\n Builder.prototype.getSwatches = function (cb) {\n return this.build().getPalette(cb);\n };\n return Builder;\n}());\nexports.default = Builder;\n//# sourceMappingURL=builder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Swatch = void 0;\nvar util_1 = require(\"./util\");\nvar filter = require(\"lodash/filter\");\nvar Swatch = /** @class */ (function () {\n function Swatch(rgb, population) {\n this._rgb = rgb;\n this._population = population;\n }\n Swatch.applyFilter = function (colors, f) {\n return typeof f === 'function'\n ? filter(colors, function (_a) {\n var r = _a.r, g = _a.g, b = _a.b;\n return f(r, g, b, 255);\n })\n : colors;\n };\n Object.defineProperty(Swatch.prototype, \"r\", {\n get: function () { return this._rgb[0]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"g\", {\n get: function () { return this._rgb[1]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"b\", {\n get: function () { return this._rgb[2]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"rgb\", {\n get: function () { return this._rgb; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hsl\", {\n get: function () {\n if (!this._hsl) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hsl = util_1.rgbToHsl(r, g, b);\n }\n return this._hsl;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hex\", {\n get: function () {\n if (!this._hex) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hex = util_1.rgbToHex(r, g, b);\n }\n return this._hex;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"population\", {\n get: function () { return this._population; },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.toJSON = function () {\n return {\n rgb: this.rgb,\n population: this.population\n };\n };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getRgb = function () { return this._rgb; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHsl = function () { return this.hsl; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getPopulation = function () { return this._population; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHex = function () { return this.hex; };\n Swatch.prototype.getYiq = function () {\n if (!this._yiq) {\n var rgb = this._rgb;\n this._yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n }\n return this._yiq;\n };\n Object.defineProperty(Swatch.prototype, \"titleTextColor\", {\n get: function () {\n if (!this._titleTextColor) {\n this._titleTextColor = this.getYiq() < 200 ? '#fff' : '#000';\n }\n return this._titleTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"bodyTextColor\", {\n get: function () {\n if (!this._bodyTextColor) {\n this._bodyTextColor = this.getYiq() < 150 ? '#fff' : '#000';\n }\n return this._bodyTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.getTitleTextColor = function () {\n return this.titleTextColor;\n };\n Swatch.prototype.getBodyTextColor = function () {\n return this.bodyTextColor;\n };\n return Swatch;\n}());\nexports.Swatch = Swatch;\n//# sourceMappingURL=color.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction defaultFilter(r, g, b, a) {\n return a >= 125 &&\n !(r > 250 && g > 250 && b > 250);\n}\nexports.default = defaultFilter;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineFilters = void 0;\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\nfunction combineFilters(filters) {\n // TODO: caching\n if (!Array.isArray(filters) || filters.length === 0)\n return null;\n return function (r, g, b, a) {\n if (a === 0)\n return false;\n for (var i = 0; i < filters.length; i++) {\n if (!filters[i](r, g, b, a))\n return false;\n }\n return true;\n };\n}\nexports.combineFilters = combineFilters;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar util_1 = require(\"../util\");\nvar defaults = require(\"lodash/defaults\");\nvar DefaultOpts = {\n targetDarkLuma: 0.26,\n maxDarkLuma: 0.45,\n minLightLuma: 0.55,\n targetLightLuma: 0.74,\n minNormalLuma: 0.3,\n targetNormalLuma: 0.5,\n maxNormalLuma: 0.7,\n targetMutesSaturation: 0.3,\n maxMutesSaturation: 0.4,\n targetVibrantSaturation: 1.0,\n minVibrantSaturation: 0.35,\n weightSaturation: 3,\n weightLuma: 6.5,\n weightPopulation: 0.5\n};\nfunction _findMaxPopulation(swatches) {\n var p = 0;\n swatches.forEach(function (s) {\n p = Math.max(p, s.getPopulation());\n });\n return p;\n}\nfunction _isAlreadySelected(palette, s) {\n return palette.Vibrant === s ||\n palette.DarkVibrant === s ||\n palette.LightVibrant === s ||\n palette.Muted === s ||\n palette.DarkMuted === s ||\n palette.LightMuted === s;\n}\nfunction _createComparisonValue(saturation, targetSaturation, luma, targetLuma, population, maxPopulation, opts) {\n function weightedMean() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var sum = 0;\n var weightSum = 0;\n for (var i = 0; i < values.length; i += 2) {\n var value = values[i];\n var weight = values[i + 1];\n sum += value * weight;\n weightSum += weight;\n }\n return sum / weightSum;\n }\n function invertDiff(value, targetValue) {\n return 1 - Math.abs(value - targetValue);\n }\n return weightedMean(invertDiff(saturation, targetSaturation), opts.weightSaturation, invertDiff(luma, targetLuma), opts.weightLuma, population / maxPopulation, opts.weightPopulation);\n}\nfunction _findColorVariation(palette, swatches, maxPopulation, targetLuma, minLuma, maxLuma, targetSaturation, minSaturation, maxSaturation, opts) {\n var max = null;\n var maxValue = 0;\n swatches.forEach(function (swatch) {\n var _a = swatch.getHsl(), s = _a[1], l = _a[2];\n if (s >= minSaturation && s <= maxSaturation &&\n l >= minLuma && l <= maxLuma &&\n !_isAlreadySelected(palette, swatch)) {\n var value = _createComparisonValue(s, targetSaturation, l, targetLuma, swatch.getPopulation(), maxPopulation, opts);\n if (max === null || value > maxValue) {\n max = swatch;\n maxValue = value;\n }\n }\n });\n return max;\n}\nfunction _generateVariationColors(swatches, maxPopulation, opts) {\n var palette = {};\n // mVibrantSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.Vibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mLightVibrantSwatch = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.LightVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mDarkVibrantSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.DarkVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mMutedSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.Muted = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mLightMutedColor = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.LightMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mDarkMutedSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.DarkMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n return palette;\n}\nfunction _generateEmptySwatches(palette, maxPopulation, opts) {\n if (palette.Vibrant === null && palette.DarkVibrant === null && palette.LightVibrant === null) {\n if (palette.DarkVibrant === null && palette.DarkMuted !== null) {\n var _a = palette.DarkMuted.getHsl(), h = _a[0], s = _a[1], l = _a[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.LightMuted !== null) {\n var _b = palette.LightMuted.getHsl(), h = _b[0], s = _b[1], l = _b[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n }\n if (palette.Vibrant === null && palette.DarkVibrant !== null) {\n var _c = palette.DarkVibrant.getHsl(), h = _c[0], s = _c[1], l = _c[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n else if (palette.Vibrant === null && palette.LightVibrant !== null) {\n var _d = palette.LightVibrant.getHsl(), h = _d[0], s = _d[1], l = _d[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkVibrant === null && palette.Vibrant !== null) {\n var _e = palette.Vibrant.getHsl(), h = _e[0], s = _e[1], l = _e[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.Vibrant !== null) {\n var _f = palette.Vibrant.getHsl(), h = _f[0], s = _f[1], l = _f[2];\n l = opts.targetLightLuma;\n palette.LightVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.Muted === null && palette.Vibrant !== null) {\n var _g = palette.Vibrant.getHsl(), h = _g[0], s = _g[1], l = _g[2];\n l = opts.targetMutesSaturation;\n palette.Muted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkMuted === null && palette.DarkVibrant !== null) {\n var _h = palette.DarkVibrant.getHsl(), h = _h[0], s = _h[1], l = _h[2];\n l = opts.targetMutesSaturation;\n palette.DarkMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightMuted === null && palette.LightVibrant !== null) {\n var _j = palette.LightVibrant.getHsl(), h = _j[0], s = _j[1], l = _j[2];\n l = opts.targetMutesSaturation;\n palette.LightMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n}\nvar DefaultGenerator = function (swatches, opts) {\n opts = defaults({}, opts, DefaultOpts);\n var maxPopulation = _findMaxPopulation(swatches);\n var palette = _generateVariationColors(swatches, maxPopulation, opts);\n _generateEmptySwatches(palette, maxPopulation, opts);\n return palette;\n};\nexports.default = DefaultGenerator;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageBase = void 0;\nvar ImageBase = /** @class */ (function () {\n function ImageBase() {\n }\n ImageBase.prototype.scaleDown = function (opts) {\n var width = this.getWidth();\n var height = this.getHeight();\n var ratio = 1;\n if (opts.maxDimension > 0) {\n var maxSide = Math.max(width, height);\n if (maxSide > opts.maxDimension)\n ratio = opts.maxDimension / maxSide;\n }\n else {\n ratio = 1 / opts.quality;\n }\n if (ratio < 1)\n this.resize(width * ratio, height * ratio, ratio);\n };\n ImageBase.prototype.applyFilter = function (filter) {\n var imageData = this.getImageData();\n if (typeof filter === 'function') {\n var pixels = imageData.data;\n var n = pixels.length / 4;\n var offset = void 0, r = void 0, g = void 0, b = void 0, a = void 0;\n for (var i = 0; i < n; i++) {\n offset = i * 4;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Mark ignored color\n if (!filter(r, g, b, a))\n pixels[offset + 3] = 0;\n }\n }\n return Promise.resolve(imageData);\n };\n return ImageBase;\n}());\nexports.ImageBase = ImageBase;\n//# sourceMappingURL=base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_1 = require(\"./base\");\nvar Url = __importStar(require(\"url\"));\nfunction isRelativeUrl(url) {\n var u = Url.parse(url);\n return u.protocol === null &&\n u.host === null &&\n u.port === null;\n}\nfunction isSameOrigin(a, b) {\n var ua = Url.parse(a);\n var ub = Url.parse(b);\n // https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\n return ua.protocol === ub.protocol &&\n ua.hostname === ub.hostname &&\n ua.port === ub.port;\n}\nvar BrowserImage = /** @class */ (function (_super) {\n __extends(BrowserImage, _super);\n function BrowserImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BrowserImage.prototype._initCanvas = function () {\n var img = this.image;\n var canvas = this._canvas = document.createElement('canvas');\n var context = this._context = canvas.getContext('2d');\n canvas.className = 'vibrant-canvas';\n canvas.style.display = 'none';\n this._width = canvas.width = img.width;\n this._height = canvas.height = img.height;\n context.drawImage(img, 0, 0);\n document.body.appendChild(canvas);\n };\n BrowserImage.prototype.load = function (image) {\n var _this = this;\n var img = null;\n var src = null;\n if (typeof image === 'string') {\n img = document.createElement('img');\n if (!isRelativeUrl(image) && !isSameOrigin(window.location.href, image)) {\n img.crossOrigin = 'anonymous';\n }\n src = img.src = image;\n }\n else if (image instanceof HTMLImageElement) {\n img = image;\n src = image.src;\n }\n else {\n return Promise.reject(new Error(\"Cannot load buffer as an image in browser\"));\n }\n this.image = img;\n return new Promise(function (resolve, reject) {\n var onImageLoad = function () {\n _this._initCanvas();\n resolve(_this);\n };\n if (img.complete) {\n // Already loaded\n onImageLoad();\n }\n else {\n img.onload = onImageLoad;\n img.onerror = function (e) { return reject(new Error(\"Fail to load image: \" + src)); };\n }\n });\n };\n BrowserImage.prototype.clear = function () {\n this._context.clearRect(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.update = function (imageData) {\n this._context.putImageData(imageData, 0, 0);\n };\n BrowserImage.prototype.getWidth = function () {\n return this._width;\n };\n BrowserImage.prototype.getHeight = function () {\n return this._height;\n };\n BrowserImage.prototype.resize = function (targetWidth, targetHeight, ratio) {\n var _a = this, canvas = _a._canvas, context = _a._context, img = _a.image;\n this._width = canvas.width = targetWidth;\n this._height = canvas.height = targetHeight;\n context.scale(ratio, ratio);\n context.drawImage(img, 0, 0);\n };\n BrowserImage.prototype.getPixelCount = function () {\n return this._width * this._height;\n };\n BrowserImage.prototype.getImageData = function () {\n return this._context.getImageData(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.remove = function () {\n if (this._canvas && this._canvas.parentNode) {\n this._canvas.parentNode.removeChild(this._canvas);\n }\n };\n return BrowserImage;\n}(base_1.ImageBase));\nexports.default = BrowserImage;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebWorker = void 0;\nvar mmcq_1 = require(\"./mmcq\");\nObject.defineProperty(exports, \"MMCQ\", { enumerable: true, get: function () { return mmcq_1.default; } });\nexports.WebWorker = null;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar vbox_1 = __importDefault(require(\"./vbox\"));\nvar pqueue_1 = __importDefault(require(\"./pqueue\"));\nvar fractByPopulations = 0.75;\nfunction _splitBoxes(pq, target) {\n var lastSize = pq.size();\n while (pq.size() < target) {\n var vbox = pq.pop();\n if (vbox && vbox.count() > 0) {\n var _a = vbox.split(), vbox1 = _a[0], vbox2 = _a[1];\n pq.push(vbox1);\n if (vbox2 && vbox2.count() > 0)\n pq.push(vbox2);\n // No more new boxes, converged\n if (pq.size() === lastSize) {\n break;\n }\n else {\n lastSize = pq.size();\n }\n }\n else {\n break;\n }\n }\n}\nvar MMCQ = function (pixels, opts) {\n if (pixels.length === 0 || opts.colorCount < 2 || opts.colorCount > 256) {\n throw new Error('Wrong MMCQ parameters');\n }\n var vbox = vbox_1.default.build(pixels);\n var hist = vbox.hist;\n var colorCount = Object.keys(hist).length;\n var pq = new pqueue_1.default(function (a, b) { return a.count() - b.count(); });\n pq.push(vbox);\n // first set of colors, sorted by population\n _splitBoxes(pq, fractByPopulations * opts.colorCount);\n // Re-order\n var pq2 = new pqueue_1.default(function (a, b) { return a.count() * a.volume() - b.count() * b.volume(); });\n pq2.contents = pq.contents;\n // next set - generate the median cuts using the (npix * vol) sorting.\n _splitBoxes(pq2, opts.colorCount - pq2.size());\n // calculate the actual colors\n return generateSwatches(pq2);\n};\nfunction generateSwatches(pq) {\n var swatches = [];\n while (pq.size()) {\n var v = pq.pop();\n var color = v.avg();\n var r = color[0], g = color[1], b = color[2];\n swatches.push(new color_1.Swatch(color, v.count()));\n }\n return swatches;\n}\nexports.default = MMCQ;\n//# sourceMappingURL=mmcq.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PQueue = /** @class */ (function () {\n function PQueue(comparator) {\n this._comparator = comparator;\n this.contents = [];\n this._sorted = false;\n }\n PQueue.prototype._sort = function () {\n if (!this._sorted) {\n this.contents.sort(this._comparator);\n this._sorted = true;\n }\n };\n PQueue.prototype.push = function (item) {\n this.contents.push(item);\n this._sorted = false;\n };\n PQueue.prototype.peek = function (index) {\n this._sort();\n index = typeof index === 'number' ? index : this.contents.length - 1;\n return this.contents[index];\n };\n PQueue.prototype.pop = function () {\n this._sort();\n return this.contents.pop();\n };\n PQueue.prototype.size = function () {\n return this.contents.length;\n };\n PQueue.prototype.map = function (mapper) {\n this._sort();\n return this.contents.map(mapper);\n };\n return PQueue;\n}());\nexports.default = PQueue;\n//# sourceMappingURL=pqueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util\");\nvar VBox = /** @class */ (function () {\n function VBox(r1, r2, g1, g2, b1, b2, hist) {\n this._volume = -1;\n this._count = -1;\n this.dimension = { r1: r1, r2: r2, g1: g1, g2: g2, b1: b1, b2: b2 };\n this.hist = hist;\n }\n VBox.build = function (pixels, shouldIgnore) {\n var hn = 1 << (3 * util_1.SIGBITS);\n var hist = new Uint32Array(hn);\n var rmax;\n var rmin;\n var gmax;\n var gmin;\n var bmax;\n var bmin;\n var r;\n var g;\n var b;\n var a;\n rmax = gmax = bmax = 0;\n rmin = gmin = bmin = Number.MAX_VALUE;\n var n = pixels.length / 4;\n var i = 0;\n while (i < n) {\n var offset = i * 4;\n i++;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Ignored pixels' alpha is marked as 0 in filtering stage\n if (a === 0)\n continue;\n r = r >> util_1.RSHIFT;\n g = g >> util_1.RSHIFT;\n b = b >> util_1.RSHIFT;\n var index = util_1.getColorIndex(r, g, b);\n hist[index] += 1;\n if (r > rmax)\n rmax = r;\n if (r < rmin)\n rmin = r;\n if (g > gmax)\n gmax = g;\n if (g < gmin)\n gmin = g;\n if (b > bmax)\n bmax = b;\n if (b < bmin)\n bmin = b;\n }\n return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, hist);\n };\n VBox.prototype.invalidate = function () {\n this._volume = this._count = -1;\n this._avg = null;\n };\n VBox.prototype.volume = function () {\n if (this._volume < 0) {\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n this._volume = (r2 - r1 + 1) * (g2 - g1 + 1) * (b2 - b1 + 1);\n }\n return this._volume;\n };\n VBox.prototype.count = function () {\n if (this._count < 0) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var c = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n c += hist[index];\n }\n }\n }\n this._count = c;\n }\n return this._count;\n };\n VBox.prototype.clone = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n return new VBox(r1, r2, g1, g2, b1, b2, hist);\n };\n VBox.prototype.avg = function () {\n if (!this._avg) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var ntot = 0;\n var mult = 1 << (8 - util_1.SIGBITS);\n var rsum = void 0;\n var gsum = void 0;\n var bsum = void 0;\n rsum = gsum = bsum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n var h = hist[index];\n ntot += h;\n rsum += (h * (r + 0.5) * mult);\n gsum += (h * (g + 0.5) * mult);\n bsum += (h * (b + 0.5) * mult);\n }\n }\n }\n if (ntot) {\n this._avg = [\n ~~(rsum / ntot),\n ~~(gsum / ntot),\n ~~(bsum / ntot)\n ];\n }\n else {\n this._avg = [\n ~~(mult * (r1 + r2 + 1) / 2),\n ~~(mult * (g1 + g2 + 1) / 2),\n ~~(mult * (b1 + b2 + 1) / 2)\n ];\n }\n }\n return this._avg;\n };\n VBox.prototype.contains = function (rgb) {\n var r = rgb[0], g = rgb[1], b = rgb[2];\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n r >>= util_1.RSHIFT;\n g >>= util_1.RSHIFT;\n b >>= util_1.RSHIFT;\n return r >= r1 && r <= r2 &&\n g >= g1 && g <= g2 &&\n b >= b1 && b <= b2;\n };\n VBox.prototype.split = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var count = this.count();\n if (!count)\n return [];\n if (count === 1)\n return [this.clone()];\n var rw = r2 - r1 + 1;\n var gw = g2 - g1 + 1;\n var bw = b2 - b1 + 1;\n var maxw = Math.max(rw, gw, bw);\n var accSum = null;\n var sum;\n var total;\n sum = total = 0;\n var maxd = null;\n if (maxw === rw) {\n maxd = 'r';\n accSum = new Uint32Array(r2 + 1);\n for (var r = r1; r <= r2; r++) {\n sum = 0;\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[r] = total;\n }\n }\n else if (maxw === gw) {\n maxd = 'g';\n accSum = new Uint32Array(g2 + 1);\n for (var g = g1; g <= g2; g++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[g] = total;\n }\n }\n else {\n maxd = 'b';\n accSum = new Uint32Array(b2 + 1);\n for (var b = b1; b <= b2; b++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[b] = total;\n }\n }\n var splitPoint = -1;\n var reverseSum = new Uint32Array(accSum.length);\n for (var i = 0; i < accSum.length; i++) {\n var d = accSum[i];\n if (splitPoint < 0 && d > total / 2)\n splitPoint = i;\n reverseSum[i] = total - d;\n }\n var vbox = this;\n function doCut(d) {\n var dim1 = d + '1';\n var dim2 = d + '2';\n var d1 = vbox.dimension[dim1];\n var d2 = vbox.dimension[dim2];\n var vbox1 = vbox.clone();\n var vbox2 = vbox.clone();\n var left = splitPoint - d1;\n var right = d2 - splitPoint;\n if (left <= right) {\n d2 = Math.min(d2 - 1, ~~(splitPoint + right / 2));\n d2 = Math.max(0, d2);\n }\n else {\n d2 = Math.max(d1, ~~(splitPoint - 1 - left / 2));\n d2 = Math.min(vbox.dimension[dim2], d2);\n }\n while (!accSum[d2])\n d2++;\n var c2 = reverseSum[d2];\n while (!c2 && accSum[d2 - 1])\n c2 = reverseSum[--d2];\n vbox1.dimension[dim2] = d2;\n vbox2.dimension[dim1] = d2 + 1;\n return [vbox1, vbox2];\n }\n return doCut(maxd);\n };\n return VBox;\n}());\nexports.default = VBox;\n//# sourceMappingURL=vbox.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getColorIndex = exports.getColorDiffStatus = exports.hexDiff = exports.rgbDiff = exports.deltaE94 = exports.rgbToCIELab = exports.xyzToCIELab = exports.rgbToXyz = exports.hslToRgb = exports.rgbToHsl = exports.rgbToHex = exports.hexToRgb = exports.defer = exports.RSHIFT = exports.SIGBITS = exports.DELTAE94_DIFF_STATUS = void 0;\nexports.DELTAE94_DIFF_STATUS = {\n NA: 0,\n PERFECT: 1,\n CLOSE: 2,\n GOOD: 10,\n SIMILAR: 50\n};\nexports.SIGBITS = 5;\nexports.RSHIFT = 8 - exports.SIGBITS;\nfunction defer() {\n var resolve;\n var reject;\n // eslint-disable-next-line promise/param-names\n var promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n // @ts-ignore\n return { resolve: resolve, reject: reject, promise: promise };\n}\nexports.defer = defer;\nfunction hexToRgb(hex) {\n var m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return m === null ? null : [m[1], m[2], m[3]].map(function (s) { return parseInt(s, 16); });\n}\nexports.hexToRgb = hexToRgb;\nfunction rgbToHex(r, g, b) {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1, 7);\n}\nexports.rgbToHex = rgbToHex;\nfunction rgbToHsl(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n // @ts-ignore\n h /= 6;\n }\n // @ts-ignore\n return [h, s, l];\n}\nexports.rgbToHsl = rgbToHsl;\nfunction hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n function hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - (l * s);\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - (1 / 3));\n }\n return [\n r * 255,\n g * 255,\n b * 255\n ];\n}\nexports.hslToRgb = hslToRgb;\nfunction rgbToXyz(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n r = r > 0.04045 ? Math.pow((r + 0.005) / 1.055, 2.4) : r / 12.92;\n g = g > 0.04045 ? Math.pow((g + 0.005) / 1.055, 2.4) : g / 12.92;\n b = b > 0.04045 ? Math.pow((b + 0.005) / 1.055, 2.4) : b / 12.92;\n r *= 100;\n g *= 100;\n b *= 100;\n var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x, y, z];\n}\nexports.rgbToXyz = rgbToXyz;\nfunction xyzToCIELab(x, y, z) {\n var REF_X = 95.047;\n var REF_Y = 100;\n var REF_Z = 108.883;\n x /= REF_X;\n y /= REF_Y;\n z /= REF_Z;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n var L = 116 * y - 16;\n var a = 500 * (x - y);\n var b = 200 * (y - z);\n return [L, a, b];\n}\nexports.xyzToCIELab = xyzToCIELab;\nfunction rgbToCIELab(r, g, b) {\n var _a = rgbToXyz(r, g, b), x = _a[0], y = _a[1], z = _a[2];\n return xyzToCIELab(x, y, z);\n}\nexports.rgbToCIELab = rgbToCIELab;\nfunction deltaE94(lab1, lab2) {\n var WEIGHT_L = 1;\n var WEIGHT_C = 1;\n var WEIGHT_H = 1;\n var L1 = lab1[0], a1 = lab1[1], b1 = lab1[2];\n var L2 = lab2[0], a2 = lab2[1], b2 = lab2[2];\n var dL = L1 - L2;\n var da = a1 - a2;\n var db = b1 - b2;\n var xC1 = Math.sqrt(a1 * a1 + b1 * b1);\n var xC2 = Math.sqrt(a2 * a2 + b2 * b2);\n var xDL = L2 - L1;\n var xDC = xC2 - xC1;\n var xDE = Math.sqrt(dL * dL + da * da + db * db);\n var xDH = (Math.sqrt(xDE) > Math.sqrt(Math.abs(xDL)) + Math.sqrt(Math.abs(xDC)))\n ? Math.sqrt(xDE * xDE - xDL * xDL - xDC * xDC)\n : 0;\n var xSC = 1 + 0.045 * xC1;\n var xSH = 1 + 0.015 * xC1;\n xDL /= WEIGHT_L;\n xDC /= WEIGHT_C * xSC;\n xDH /= WEIGHT_H * xSH;\n return Math.sqrt(xDL * xDL + xDC * xDC + xDH * xDH);\n}\nexports.deltaE94 = deltaE94;\nfunction rgbDiff(rgb1, rgb2) {\n var lab1 = rgbToCIELab.apply(undefined, rgb1);\n var lab2 = rgbToCIELab.apply(undefined, rgb2);\n return deltaE94(lab1, lab2);\n}\nexports.rgbDiff = rgbDiff;\nfunction hexDiff(hex1, hex2) {\n var rgb1 = hexToRgb(hex1);\n var rgb2 = hexToRgb(hex2);\n return rgbDiff(rgb1, rgb2);\n}\nexports.hexDiff = hexDiff;\nfunction getColorDiffStatus(d) {\n if (d < exports.DELTAE94_DIFF_STATUS.NA) {\n return 'N/A';\n }\n // Not perceptible by human eyes\n if (d <= exports.DELTAE94_DIFF_STATUS.PERFECT) {\n return 'Perfect';\n }\n // Perceptible through close observation\n if (d <= exports.DELTAE94_DIFF_STATUS.CLOSE) {\n return 'Close';\n }\n // Perceptible at a glance\n if (d <= exports.DELTAE94_DIFF_STATUS.GOOD) {\n return 'Good';\n }\n // Colors are more similar than opposite\n if (d < exports.DELTAE94_DIFF_STATUS.SIMILAR) {\n return 'Similar';\n }\n return 'Wrong';\n}\nexports.getColorDiffStatus = getColorDiffStatus;\nfunction getColorIndex(r, g, b) {\n return (r << (2 * exports.SIGBITS)) + (g << exports.SIGBITS) + b;\n}\nexports.getColorIndex = getColorIndex;\n//# sourceMappingURL=util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"./color\");\nvar builder_1 = __importDefault(require(\"./builder\"));\nvar Util = __importStar(require(\"./util\"));\nvar Quantizer = __importStar(require(\"./quantizer\"));\nvar Generator = __importStar(require(\"./generator\"));\nvar Filters = __importStar(require(\"./filter\"));\nvar defaults = require(\"lodash/defaults\");\nvar Vibrant = /** @class */ (function () {\n function Vibrant(_src, opts) {\n this._src = _src;\n this.opts = defaults({}, opts, Vibrant.DefaultOpts);\n this.opts.combinedFilter = Filters.combineFilters(this.opts.filters);\n }\n Vibrant.from = function (src) {\n return new builder_1.default(src);\n };\n Vibrant.prototype._process = function (image, opts) {\n var quantizer = opts.quantizer, generator = opts.generator;\n image.scaleDown(opts);\n return image.applyFilter(opts.combinedFilter)\n .then(function (imageData) { return quantizer(imageData.data, opts); })\n .then(function (colors) { return color_1.Swatch.applyFilter(colors, opts.combinedFilter); })\n .then(function (colors) { return Promise.resolve(generator(colors)); });\n };\n Vibrant.prototype.palette = function () {\n return this.swatches();\n };\n Vibrant.prototype.swatches = function () {\n return this._palette;\n };\n Vibrant.prototype.getPalette = function (cb) {\n var _this = this;\n var image = new this.opts.ImageClass();\n var result = image.load(this._src)\n .then(function (image) { return _this._process(image, _this.opts); })\n .then(function (palette) {\n _this._palette = palette;\n image.remove();\n return palette;\n }, function (err) {\n image.remove();\n throw err;\n });\n if (cb)\n result.then(function (palette) { return cb(null, palette); }, function (err) { return cb(err); });\n return result;\n };\n Vibrant.Builder = builder_1.default;\n Vibrant.Quantizer = Quantizer;\n Vibrant.Generator = Generator;\n Vibrant.Filter = Filters;\n Vibrant.Util = Util;\n Vibrant.Swatch = color_1.Swatch;\n Vibrant.DefaultOpts = {\n colorCount: 64,\n quality: 5,\n generator: Generator.Default,\n ImageClass: null,\n quantizer: Quantizer.MMCQ,\n filters: [Filters.Default]\n };\n return Vibrant;\n}());\nexports.default = Vibrant;\n//# sourceMappingURL=vibrant.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"930a9f0a458cd206d9d1\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1474;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1474: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(72347)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","backgroundImage","loadState","shippedBackgroundList","themingDefaultBackground","defaultShippedBackground","prefixWithBaseUrl","url","generateFilePath","components","Check","Close","ImageEdit","NcButton","NcColorPicker","data","loading","Theming","computed","shippedBackgrounds","Object","keys","map","fileName","preview","details","filter","background","isGlobalBackgroundDeleted","isGlobalBackgroundDefault","isBackgroundDisabled","methods","invertTextColor","color","calculateLuma","red","green","blue","hexToRGB","hex","result","exec","parseInt","update","backgroundColor","setDefault","axios","post","generateUrl","setShipped","shipped","value","setFile","path","arguments","length","undefined","removeBackground","delete","pickColor","event","target","dataset","debouncePickColor","debounce","pickFile","getFilePickerBuilder","t","allowDirectories","setMimeTypeFilter","setMultiSelect","addButton","id","label","callback","nodes","applyFile","build","pick","trim","console","error","showError","response","fileUrl","generateRemoteUrl","getCurrentUser","uid","get","responseType","blobUrl","URL","createObjectURL","palette","getColorPaletteFromBlob","DarkVibrant","debug","Promise","resolve","reject","Vibrant","getPalette","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","class","style","defaultColor","model","$$v","$set","expression","_l","shippedBackground","key","primary_color","attribution","description","theming","NcCheckboxRadioSwitch","enforced","Boolean","selected","theme","required","unique","switchType","img","checked","set","enabled","onToggle","enableLabel","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","defineProperty","enumerable","configurable","writable","_extends","assign","i","source","hasOwnProperty","call","apply","_objectSpread","ownKeys","getOwnPropertySymbols","concat","sym","getOwnPropertyDescriptor","forEach","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","fn","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","defaultView","getComputedStyle","currentStyle","indexOf","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","isRectEqual","rect1","rect2","Math","round","throttle","ms","args","setTimeout","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","push","pluginEvent","eventName","sortable","evt","_this","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","originalEvent","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","bind","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","rect","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","animationCallbackId","animationStates","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","slice","child","fromRect","thisAnimationDuration","childMatrix","f","e","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","offsetWidth","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","inputs","idx","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","destroy","Array","querySelectorAll","removeAttribute","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","util","warn","defineComponent","IconArrowDown","IconArrowUp","ariaDescribedby","ariaDetails","app","isFirst","isLast","move:up","move:down","update:focus","setup","emit","buttonUp","ref","buttonDown","needsFocus","moveUp","moveDown","keepFocus","$el","focus","_setupProxy","icon","directives","rawName","scopedSlots","_u","proxy","AppOrderSelectorElement","Fragment","isArray","listElement","appList","newValue","renderCount","resetOptions","defaultOptions","onUpdate","_valueIsRef","array","moveArrayElement","start","querySelector","stop","useSortable","selectorElements","onUpdated","statusInfo","before","statusInfoId","random","updateStatusInfo","position","total","_g","refInFor","AppOrderSelector","IconUndo","NcNoteCard","NcSettingsSection","userAppOrder","enforcedDefaultApp","initialAppOrder","values","hasCustomAppOrder","hasAppOrderChanged","appOrder","elementIdAppOrderChanged","elementIdEnforcedDefaultApp","ariaDetailsAppOrder","saveSetting","generateOcsUrl","appId","configKey","configValue","JSON","stringify","updateAppOrder","then","catch","resetAppOrder","headers","ocs","availableThemes","enforceTheme","shortcutsDisabled","isUserThemingDisabled","ItemPreview","BackgroundSettings","UserAppMenuSection","themes","fonts","selectedTheme","guidelinesLink","descriptionDetail","issuetrackerLink","designteamLink","watch","newState","changeShortcutsDisabled","refreshGlobalStyles","head","searchParams","now","newTheme","onload","remove","append","updateBackground","changeTheme","updateBodyAttributes","selectItem","changeFont","font","method","enabledThemesIDs","enabledFontsIDs","toggleAttribute","setAttribute","themeId","OC","Notification","showTemporary","meta","message","domProps","__webpack_nonce__","btoa","getRequestToken","Vue","App","$mount","$on","refreshStyles","___CSS_LOADER_EXPORT___","module","baseForOwn","baseEach","createBaseEach","exports","collection","predicate","baseFor","object","iteratee","isArrayLike","eachFunc","fromRight","iterable","baseRest","eq","isIterateeCall","keysIn","objectProto","sources","guard","propsIndex","propsLength","arrayFilter","baseFilter","baseIteratee","__importDefault","mod","__esModule","vibrant_1","browser_1","DefaultOpts","ImageClass","Builder","opts","_src","_opts","filters","maxColorCount","colorCount","maxDimension","addFilter","removeFilter","clearFilters","quality","q","useImageClass","imageClass","useGenerator","generator","useQuantizer","quantizer","cb","getSwatches","Swatch","util_1","rgb","population","_rgb","_population","applyFilter","colors","_a","r","g","_hsl","rgbToHsl","_hex","rgbToHex","toJSON","getRgb","getHsl","hsl","getPopulation","getHex","getYiq","_yiq","_titleTextColor","_bodyTextColor","getTitleTextColor","titleTextColor","getBodyTextColor","bodyTextColor","combineFilters","default_1","color_1","targetDarkLuma","maxDarkLuma","minLightLuma","targetLightLuma","minNormalLuma","targetNormalLuma","maxNormalLuma","targetMutesSaturation","maxMutesSaturation","targetVibrantSaturation","minVibrantSaturation","weightSaturation","weightLuma","weightPopulation","_findColorVariation","swatches","maxPopulation","targetLuma","minLuma","maxLuma","targetSaturation","minSaturation","maxSaturation","maxValue","swatch","s","l","LightVibrant","Muted","DarkMuted","LightMuted","_isAlreadySelected","saturation","luma","invertDiff","targetValue","_i","weightSum","weight","weightedMean","_createComparisonValue","p","_findMaxPopulation","_generateVariationColors","h","hslToRgb","_d","_f","_h","_j","_generateEmptySwatches","ImageBase","scaleDown","getWidth","getHeight","ratio","maxSide","resize","imageData","getImageData","pixels","offset","extendStatics","__extends","setPrototypeOf","__proto__","__","__createBinding","o","m","k","k2","__setModuleDefault","v","__importStar","base_1","Url","BrowserImage","_super","_initCanvas","image","canvas","_canvas","context","_context","getContext","_width","_height","drawImage","load","ua","ub","u","parse","protocol","port","location","hostname","crossOrigin","HTMLImageElement","Error","onImageLoad","complete","onerror","clearRect","putImageData","targetWidth","targetHeight","scale","getPixelCount","WebWorker","mmcq_1","vbox_1","pqueue_1","_splitBoxes","pq","lastSize","vbox","pop","count","vbox1","vbox2","hist","pq2","volume","contents","avg","generateSwatches","PQueue","comparator","_comparator","_sorted","_sort","peek","mapper","VBox","r1","r2","g1","g2","b1","b2","_volume","_count","dimension","shouldIgnore","rmax","rmin","gmax","gmin","bmax","bmin","hn","SIGBITS","Uint32Array","MAX_VALUE","RSHIFT","getColorIndex","invalidate","_avg","ntot","mult","rsum","gsum","bsum","rw","gw","bw","maxw","accSum","maxd","splitPoint","reverseSum","dim1","dim2","d1","d2","min","c2","doCut","hexToRgb","rgbToXyz","xyzToCIELab","z","rgbToCIELab","deltaE94","lab1","lab2","L1","a1","L2","a2","dL","da","db","xC1","xDL","xDC","xDE","xDH","rgbDiff","rgb1","rgb2","getColorDiffStatus","hexDiff","defer","DELTAE94_DIFF_STATUS","NA","PERFECT","CLOSE","GOOD","SIMILAR","promise","_resolve","_reject","hue2rgb","hex1","hex2","builder_1","Util","Quantizer","Generator","Filters","combinedFilter","_process","_palette","Filter","Default","MMCQ","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","getter","definition","chunkId","all","reduce","promises","globalThis","Function","done","script","needAttach","scripts","charset","timeout","nc","onScriptComplete","prev","doneFns","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file