1
|
{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=b4a5769d989b1928aa20","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],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!./SettingsApp.vue?vue&type=script&setup=true&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!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=288003b1\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\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\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\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\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== '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, newGroup)\n\t\t\tstate.groups.unshift(group)\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}\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},\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},\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 recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\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\trecentGroup.usercount += user.enabled ? 1 : -1\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\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\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\trecentGroup.usercount++\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.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\trecentGroup.usercount--\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\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\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\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\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() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\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 recent 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 query\n\t * @return {Promise<number>}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\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}\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\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 * @param options.search\n\t * @return {Promise<number>}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\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', { id: group, name: 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', { id: gid, name: 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\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\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\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\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.') + '<br>' + 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\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\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\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\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\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\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\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\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\tgetAppBundles(state) {\n\t\treturn state.bundles\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 axios.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\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\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\tcontext.dispatch('disableApp', { appId })\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\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.') + '<br>' + 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\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","import { o as logger } from \"./chunks/dav-DY_3WIBa.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-DY_3WIBa.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 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(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\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 destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\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(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename || \"\"),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\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 isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.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 function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.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(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F2() {\n }\n F2.prototype = o;\n var newf = new F2();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n var len = parser[buffers[i2]].length;\n if (len > maxAllowed) {\n switch (buffers[i2]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m2 + parser.position;\n }\n function clearBuffers(parser) {\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n parser[buffers[i2]] = \"\";\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 SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h2) {\n if (!h2) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h2;\n return h2;\n }\n me.on(ev, h2);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\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 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 return Stream.prototype.on.call(me, ev, handler);\n };\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 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 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 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 function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // <!BLARG\n SGML_DECL_QUOTED: S++,\n // <!BLARG foo \"bar\n DOCTYPE: S++,\n // <!DOCTYPE\n DOCTYPE_QUOTED: S++,\n // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++,\n // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++,\n // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++,\n // <!-\n COMMENT: S++,\n // <!--\n COMMENT_ENDING: S++,\n // <!-- blah -\n COMMENT_ENDED: S++,\n // <!-- blah --\n CDATA: S++,\n // <![CDATA[ something\n CDATA_ENDING: S++,\n // ]\n CDATA_ENDING_2: S++,\n // ]]\n PROC_INST: S++,\n // <?hi\n PROC_INST_BODY: S++,\n // <?hi there\n PROC_INST_ENDING: S++,\n // <?hi \"there\" ?\n OPEN_TAG: S++,\n // <strong\n OPEN_TAG_SLASH: S++,\n // <strong /\n ATTRIB: S++,\n // <a\n ATTRIB_NAME: S++,\n // <a foo\n ATTRIB_NAME_SAW_WHITE: S++,\n // <a foo _\n ATTRIB_VALUE: S++,\n // <a foo=\n ATTRIB_VALUE_QUOTED: S++,\n // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++,\n // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++,\n // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++,\n // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++,\n // <foo bar="\n CLOSE_TAG: S++,\n // </a\n CLOSE_TAG_SAW_WHITE: S++,\n // </a >\n SCRIPT: S++,\n // <script> ...\n SCRIPT_ENDING: S++\n // <script> ... <\n };\n sax2.XML_ENTITIES = {\n \"amp\": \"&\",\n \"gt\": \">\",\n \"lt\": \"<\",\n \"quot\": '\"',\n \"apos\": \"'\"\n };\n sax2.ENTITIES = {\n \"amp\": \"&\",\n \"gt\": \">\",\n \"lt\": \"<\",\n \"quot\": '\"',\n \"apos\": \"'\",\n \"AElig\": 198,\n \"Aacute\": 193,\n \"Acirc\": 194,\n \"Agrave\": 192,\n \"Aring\": 197,\n \"Atilde\": 195,\n \"Auml\": 196,\n \"Ccedil\": 199,\n \"ETH\": 208,\n \"Eacute\": 201,\n \"Ecirc\": 202,\n \"Egrave\": 200,\n \"Euml\": 203,\n \"Iacute\": 205,\n \"Icirc\": 206,\n \"Igrave\": 204,\n \"Iuml\": 207,\n \"Ntilde\": 209,\n \"Oacute\": 211,\n \"Ocirc\": 212,\n \"Ograve\": 210,\n \"Oslash\": 216,\n \"Otilde\": 213,\n \"Ouml\": 214,\n \"THORN\": 222,\n \"Uacute\": 218,\n \"Ucirc\": 219,\n \"Ugrave\": 217,\n \"Uuml\": 220,\n \"Yacute\": 221,\n \"aacute\": 225,\n \"acirc\": 226,\n \"aelig\": 230,\n \"agrave\": 224,\n \"aring\": 229,\n \"atilde\": 227,\n \"auml\": 228,\n \"ccedil\": 231,\n \"eacute\": 233,\n \"ecirc\": 234,\n \"egrave\": 232,\n \"eth\": 240,\n \"euml\": 235,\n \"iacute\": 237,\n \"icirc\": 238,\n \"igrave\": 236,\n \"iuml\": 239,\n \"ntilde\": 241,\n \"oacute\": 243,\n \"ocirc\": 244,\n \"ograve\": 242,\n \"oslash\": 248,\n \"otilde\": 245,\n \"ouml\": 246,\n \"szlig\": 223,\n \"thorn\": 254,\n \"uacute\": 250,\n \"ucirc\": 251,\n \"ugrave\": 249,\n \"uuml\": 252,\n \"yacute\": 253,\n \"yuml\": 255,\n \"copy\": 169,\n \"reg\": 174,\n \"nbsp\": 160,\n \"iexcl\": 161,\n \"cent\": 162,\n \"pound\": 163,\n \"curren\": 164,\n \"yen\": 165,\n \"brvbar\": 166,\n \"sect\": 167,\n \"uml\": 168,\n \"ordf\": 170,\n \"laquo\": 171,\n \"not\": 172,\n \"shy\": 173,\n \"macr\": 175,\n \"deg\": 176,\n \"plusmn\": 177,\n \"sup1\": 185,\n \"sup2\": 178,\n \"sup3\": 179,\n \"acute\": 180,\n \"micro\": 181,\n \"para\": 182,\n \"middot\": 183,\n \"cedil\": 184,\n \"ordm\": 186,\n \"raquo\": 187,\n \"frac14\": 188,\n \"frac12\": 189,\n \"frac34\": 190,\n \"iquest\": 191,\n \"times\": 215,\n \"divide\": 247,\n \"OElig\": 338,\n \"oelig\": 339,\n \"Scaron\": 352,\n \"scaron\": 353,\n \"Yuml\": 376,\n \"fnof\": 402,\n \"circ\": 710,\n \"tilde\": 732,\n \"Alpha\": 913,\n \"Beta\": 914,\n \"Gamma\": 915,\n \"Delta\": 916,\n \"Epsilon\": 917,\n \"Zeta\": 918,\n \"Eta\": 919,\n \"Theta\": 920,\n \"Iota\": 921,\n \"Kappa\": 922,\n \"Lambda\": 923,\n \"Mu\": 924,\n \"Nu\": 925,\n \"Xi\": 926,\n \"Omicron\": 927,\n \"Pi\": 928,\n \"Rho\": 929,\n \"Sigma\": 931,\n \"Tau\": 932,\n \"Upsilon\": 933,\n \"Phi\": 934,\n \"Chi\": 935,\n \"Psi\": 936,\n \"Omega\": 937,\n \"alpha\": 945,\n \"beta\": 946,\n \"gamma\": 947,\n \"delta\": 948,\n \"epsilon\": 949,\n \"zeta\": 950,\n \"eta\": 951,\n \"theta\": 952,\n \"iota\": 953,\n \"kappa\": 954,\n \"lambda\": 955,\n \"mu\": 956,\n \"nu\": 957,\n \"xi\": 958,\n \"omicron\": 959,\n \"pi\": 960,\n \"rho\": 961,\n \"sigmaf\": 962,\n \"sigma\": 963,\n \"tau\": 964,\n \"upsilon\": 965,\n \"phi\": 966,\n \"chi\": 967,\n \"psi\": 968,\n \"omega\": 969,\n \"thetasym\": 977,\n \"upsih\": 978,\n \"piv\": 982,\n \"ensp\": 8194,\n \"emsp\": 8195,\n \"thinsp\": 8201,\n \"zwnj\": 8204,\n \"zwj\": 8205,\n \"lrm\": 8206,\n \"rlm\": 8207,\n \"ndash\": 8211,\n \"mdash\": 8212,\n \"lsquo\": 8216,\n \"rsquo\": 8217,\n \"sbquo\": 8218,\n \"ldquo\": 8220,\n \"rdquo\": 8221,\n \"bdquo\": 8222,\n \"dagger\": 8224,\n \"Dagger\": 8225,\n \"bull\": 8226,\n \"hellip\": 8230,\n \"permil\": 8240,\n \"prime\": 8242,\n \"Prime\": 8243,\n \"lsaquo\": 8249,\n \"rsaquo\": 8250,\n \"oline\": 8254,\n \"frasl\": 8260,\n \"euro\": 8364,\n \"image\": 8465,\n \"weierp\": 8472,\n \"real\": 8476,\n \"trade\": 8482,\n \"alefsym\": 8501,\n \"larr\": 8592,\n \"uarr\": 8593,\n \"rarr\": 8594,\n \"darr\": 8595,\n \"harr\": 8596,\n \"crarr\": 8629,\n \"lArr\": 8656,\n \"uArr\": 8657,\n \"rArr\": 8658,\n \"dArr\": 8659,\n \"hArr\": 8660,\n \"forall\": 8704,\n \"part\": 8706,\n \"exist\": 8707,\n \"empty\": 8709,\n \"nabla\": 8711,\n \"isin\": 8712,\n \"notin\": 8713,\n \"ni\": 8715,\n \"prod\": 8719,\n \"sum\": 8721,\n \"minus\": 8722,\n \"lowast\": 8727,\n \"radic\": 8730,\n \"prop\": 8733,\n \"infin\": 8734,\n \"ang\": 8736,\n \"and\": 8743,\n \"or\": 8744,\n \"cap\": 8745,\n \"cup\": 8746,\n \"int\": 8747,\n \"there4\": 8756,\n \"sim\": 8764,\n \"cong\": 8773,\n \"asymp\": 8776,\n \"ne\": 8800,\n \"equiv\": 8801,\n \"le\": 8804,\n \"ge\": 8805,\n \"sub\": 8834,\n \"sup\": 8835,\n \"nsub\": 8836,\n \"sube\": 8838,\n \"supe\": 8839,\n \"oplus\": 8853,\n \"otimes\": 8855,\n \"perp\": 8869,\n \"sdot\": 8901,\n \"lceil\": 8968,\n \"rceil\": 8969,\n \"lfloor\": 8970,\n \"rfloor\": 8971,\n \"lang\": 9001,\n \"rang\": 9002,\n \"loz\": 9674,\n \"spades\": 9824,\n \"clubs\": 9827,\n \"hearts\": 9829,\n \"diams\": 9830\n };\n Object.keys(sax2.ENTITIES).forEach(function(key) {\n var e2 = sax2.ENTITIES[key];\n var s3 = typeof e2 === \"number\" ? String.fromCharCode(e2) : e2;\n sax2.ENTITIES[key] = s3;\n });\n for (var s2 in sax2.STATE) {\n sax2.STATE[sax2.STATE[s2]] = s2;\n }\n S = sax2.STATE;\n function emit2(parser, event, data) {\n parser[event] && parser[event](data);\n }\n function emitNode(parser, nodeType, data) {\n if (parser.textNode) closeText(parser);\n emit2(parser, nodeType, data);\n }\n function closeText(parser) {\n parser.textNode = textopts(parser.opt, parser.textNode);\n if (parser.textNode) emit2(parser, \"ontext\", parser.textNode);\n parser.textNode = \"\";\n }\n function textopts(opt, text) {\n if (opt.trim) text = text.trim();\n if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n return text;\n }\n function error(parser, er) {\n closeText(parser);\n if (parser.trackPosition) {\n er += \"\\nLine: \" + parser.line + \"\\nColumn: \" + parser.column + \"\\nChar: \" + parser.c;\n }\n er = new Error(er);\n parser.error = er;\n emit2(parser, \"onerror\", er);\n return parser;\n }\n function end(parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, \"Unclosed root tag\");\n if (parser.state !== S.BEGIN && parser.state !== S.BEGIN_WHITESPACE && parser.state !== S.TEXT) {\n error(parser, \"Unexpected end\");\n }\n closeText(parser);\n parser.c = \"\";\n parser.closed = true;\n emit2(parser, \"onend\");\n SAXParser.call(parser, parser.strict, parser.opt);\n return parser;\n }\n function strictFail(parser, message) {\n if (typeof parser !== \"object\" || !(parser instanceof SAXParser)) {\n throw new Error(\"bad call to strictFail\");\n }\n if (parser.strict) {\n error(parser, message);\n }\n }\n function newTag(parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]();\n var parent = parser.tags[parser.tags.length - 1] || parser;\n var tag = parser.tag = { name: parser.tagName, attributes: {} };\n if (parser.opt.xmlns) {\n tag.ns = parent.ns;\n }\n parser.attribList.length = 0;\n emitNode(parser, \"onopentagstart\", tag);\n }\n function qname(name, attribute) {\n var i2 = name.indexOf(\":\");\n var qualName = i2 < 0 ? [\"\", name] : name.split(\":\");\n var prefix = qualName[0];\n var local = qualName[1];\n if (attribute && name === \"xmlns\") {\n prefix = \"xmlns\";\n local = \"\";\n }\n return { prefix, local };\n }\n function attrib(parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]();\n }\n if (parser.attribList.indexOf(parser.attribName) !== -1 || parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = \"\";\n return;\n }\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true);\n var prefix = qn.prefix;\n var local = qn.local;\n if (prefix === \"xmlns\") {\n if (local === \"xml\" && parser.attribValue !== XML_NAMESPACE) {\n strictFail(\n parser,\n \"xml: prefix must be bound to \" + XML_NAMESPACE + \"\\nActual: \" + parser.attribValue\n );\n } else if (local === \"xmlns\" && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(\n parser,\n \"xmlns: prefix must be bound to \" + XMLNS_NAMESPACE + \"\\nActual: \" + parser.attribValue\n );\n } else {\n var tag = parser.tag;\n var parent = parser.tags[parser.tags.length - 1] || parser;\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns);\n }\n tag.ns[local] = parser.attribValue;\n }\n }\n parser.attribList.push([parser.attribName, parser.attribValue]);\n } else {\n parser.tag.attributes[parser.attribName] = parser.attribValue;\n emitNode(parser, \"onattribute\", {\n name: parser.attribName,\n value: parser.attribValue\n });\n }\n parser.attribName = parser.attribValue = \"\";\n }\n function openTag(parser, selfClosing) {\n if (parser.opt.xmlns) {\n var tag = parser.tag;\n var qn = qname(parser.tagName);\n tag.prefix = qn.prefix;\n tag.local = qn.local;\n tag.uri = tag.ns[qn.prefix] || \"\";\n if (tag.prefix && !tag.uri) {\n strictFail(parser, \"Unbound namespace prefix: \" + JSON.stringify(parser.tagName));\n tag.uri = qn.prefix;\n }\n var parent = parser.tags[parser.tags.length - 1] || parser;\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function(p2) {\n emitNode(parser, \"onopennamespace\", {\n prefix: p2,\n uri: tag.ns[p2]\n });\n });\n }\n for (var i2 = 0, l2 = parser.attribList.length; i2 < l2; i2++) {\n var nv = parser.attribList[i2];\n var name = nv[0];\n var value = nv[1];\n var qualName = qname(name, true);\n var prefix = qualName.prefix;\n var local = qualName.local;\n var uri = prefix === \"\" ? \"\" : tag.ns[prefix] || \"\";\n var a2 = {\n name,\n value,\n prefix,\n local,\n uri\n };\n if (prefix && prefix !== \"xmlns\" && !uri) {\n strictFail(parser, \"Unbound namespace prefix: \" + JSON.stringify(prefix));\n a2.uri = prefix;\n }\n parser.tag.attributes[name] = a2;\n emitNode(parser, \"onattribute\", a2);\n }\n parser.attribList.length = 0;\n }\n parser.tag.isSelfClosing = !!selfClosing;\n parser.sawRoot = true;\n parser.tags.push(parser.tag);\n emitNode(parser, \"onopentag\", parser.tag);\n if (!selfClosing) {\n if (!parser.noscript && parser.tagName.toLowerCase() === \"script\") {\n parser.state = S.SCRIPT;\n } else {\n parser.state = S.TEXT;\n }\n parser.tag = null;\n parser.tagName = \"\";\n }\n parser.attribName = parser.attribValue = \"\";\n parser.attribList.length = 0;\n }\n function closeTag(parser) {\n if (!parser.tagName) {\n strictFail(parser, \"Weird empty close tag.\");\n parser.textNode += \"</>\";\n parser.state = S.TEXT;\n return;\n }\n if (parser.script) {\n if (parser.tagName !== \"script\") {\n parser.script += \"</\" + parser.tagName + \">\";\n parser.tagName = \"\";\n parser.state = S.SCRIPT;\n return;\n }\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n var t2 = parser.tags.length;\n var tagName = parser.tagName;\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]();\n }\n var closeTo = tagName;\n while (t2--) {\n var close = parser.tags[t2];\n if (close.name !== closeTo) {\n strictFail(parser, \"Unexpected close tag\");\n } else {\n break;\n }\n }\n if (t2 < 0) {\n strictFail(parser, \"Unmatched closing tag: \" + parser.tagName);\n parser.textNode += \"</\" + parser.tagName + \">\";\n parser.state = S.TEXT;\n return;\n }\n parser.tagName = tagName;\n var s3 = parser.tags.length;\n while (s3-- > t2) {\n var tag = parser.tag = parser.tags.pop();\n parser.tagName = parser.tag.name;\n emitNode(parser, \"onclosetag\", parser.tagName);\n var x = {};\n for (var i2 in tag.ns) {\n x[i2] = tag.ns[i2];\n }\n var parent = parser.tags[parser.tags.length - 1] || parser;\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n Object.keys(tag.ns).forEach(function(p2) {\n var n2 = tag.ns[p2];\n emitNode(parser, \"onclosenamespace\", { prefix: p2, uri: n2 });\n });\n }\n }\n if (t2 === 0) parser.closedRoot = true;\n parser.tagName = parser.attribValue = parser.attribName = \"\";\n parser.attribList.length = 0;\n parser.state = S.TEXT;\n }\n function parseEntity(parser) {\n var entity = parser.entity;\n var entityLC = entity.toLowerCase();\n var num;\n var numStr = \"\";\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity];\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC];\n }\n entity = entityLC;\n if (entity.charAt(0) === \"#\") {\n if (entity.charAt(1) === \"x\") {\n entity = entity.slice(2);\n num = parseInt(entity, 16);\n numStr = num.toString(16);\n } else {\n entity = entity.slice(1);\n num = parseInt(entity, 10);\n numStr = num.toString(10);\n }\n }\n entity = entity.replace(/^0+/, \"\");\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, \"Invalid character entity\");\n return \"&\" + parser.entity + \";\";\n }\n return String.fromCodePoint(num);\n }\n function beginWhiteSpace(parser, c2) {\n if (c2 === \"<\") {\n parser.state = S.OPEN_WAKA;\n parser.startTagPosition = parser.position;\n } else if (!isWhitespace(c2)) {\n strictFail(parser, \"Non-whitespace before first tag.\");\n parser.textNode = c2;\n parser.state = S.TEXT;\n }\n }\n function charAt(chunk, i2) {\n var result = \"\";\n if (i2 < chunk.length) {\n result = chunk.charAt(i2);\n }\n return result;\n }\n function write(chunk) {\n var parser = this;\n if (this.error) {\n throw this.error;\n }\n if (parser.closed) {\n return error(\n parser,\n \"Cannot write after close. Assign an onready handler.\"\n );\n }\n if (chunk === null) {\n return end(parser);\n }\n if (typeof chunk === \"object\") {\n chunk = chunk.toString();\n }\n var i2 = 0;\n var c2 = \"\";\n while (true) {\n c2 = charAt(chunk, i2++);\n parser.c = c2;\n if (!c2) {\n break;\n }\n if (parser.trackPosition) {\n parser.position++;\n if (c2 === \"\\n\") {\n parser.line++;\n parser.column = 0;\n } else {\n parser.column++;\n }\n }\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE;\n if (c2 === \"\\uFEFF\") {\n continue;\n }\n beginWhiteSpace(parser, c2);\n continue;\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c2);\n continue;\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i2 - 1;\n while (c2 && c2 !== \"<\" && c2 !== \"&\") {\n c2 = charAt(chunk, i2++);\n if (c2 && parser.trackPosition) {\n parser.position++;\n if (c2 === \"\\n\") {\n parser.line++;\n parser.column = 0;\n } else {\n parser.column++;\n }\n }\n }\n parser.textNode += chunk.substring(starti, i2 - 1);\n }\n if (c2 === \"<\" && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA;\n parser.startTagPosition = parser.position;\n } else {\n if (!isWhitespace(c2) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, \"Text data outside of root node.\");\n }\n if (c2 === \"&\") {\n parser.state = S.TEXT_ENTITY;\n } else {\n parser.textNode += c2;\n }\n }\n continue;\n case S.SCRIPT:\n if (c2 === \"<\") {\n parser.state = S.SCRIPT_ENDING;\n } else {\n parser.script += c2;\n }\n continue;\n case S.SCRIPT_ENDING:\n if (c2 === \"/\") {\n parser.state = S.CLOSE_TAG;\n } else {\n parser.script += \"<\" + c2;\n parser.state = S.SCRIPT;\n }\n continue;\n case S.OPEN_WAKA:\n if (c2 === \"!\") {\n parser.state = S.SGML_DECL;\n parser.sgmlDecl = \"\";\n } else if (isWhitespace(c2)) ;\n else if (isMatch(nameStart, c2)) {\n parser.state = S.OPEN_TAG;\n parser.tagName = c2;\n } else if (c2 === \"/\") {\n parser.state = S.CLOSE_TAG;\n parser.tagName = \"\";\n } else if (c2 === \"?\") {\n parser.state = S.PROC_INST;\n parser.procInstName = parser.procInstBody = \"\";\n } else {\n strictFail(parser, \"Unencoded <\");\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition;\n c2 = new Array(pad).join(\" \") + c2;\n }\n parser.textNode += \"<\" + c2;\n parser.state = S.TEXT;\n }\n continue;\n case S.SGML_DECL:\n if (parser.sgmlDecl + c2 === \"--\") {\n parser.state = S.COMMENT;\n parser.comment = \"\";\n parser.sgmlDecl = \"\";\n continue;\n }\n if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n parser.state = S.DOCTYPE_DTD;\n parser.doctype += \"<!\" + parser.sgmlDecl + c2;\n parser.sgmlDecl = \"\";\n } else if ((parser.sgmlDecl + c2).toUpperCase() === CDATA) {\n emitNode(parser, \"onopencdata\");\n parser.state = S.CDATA;\n parser.sgmlDecl = \"\";\n parser.cdata = \"\";\n } else if ((parser.sgmlDecl + c2).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE;\n if (parser.doctype || parser.sawRoot) {\n strictFail(\n parser,\n \"Inappropriately located doctype declaration\"\n );\n }\n parser.doctype = \"\";\n parser.sgmlDecl = \"\";\n } else if (c2 === \">\") {\n emitNode(parser, \"onsgmldeclaration\", parser.sgmlDecl);\n parser.sgmlDecl = \"\";\n parser.state = S.TEXT;\n } else if (isQuote(c2)) {\n parser.state = S.SGML_DECL_QUOTED;\n parser.sgmlDecl += c2;\n } else {\n parser.sgmlDecl += c2;\n }\n continue;\n case S.SGML_DECL_QUOTED:\n if (c2 === parser.q) {\n parser.state = S.SGML_DECL;\n parser.q = \"\";\n }\n parser.sgmlDecl += c2;\n continue;\n case S.DOCTYPE:\n if (c2 === \">\") {\n parser.state = S.TEXT;\n emitNode(parser, \"ondoctype\", parser.doctype);\n parser.doctype = true;\n } else {\n parser.doctype += c2;\n if (c2 === \"[\") {\n parser.state = S.DOCTYPE_DTD;\n } else if (isQuote(c2)) {\n parser.state = S.DOCTYPE_QUOTED;\n parser.q = c2;\n }\n }\n continue;\n case S.DOCTYPE_QUOTED:\n parser.doctype += c2;\n if (c2 === parser.q) {\n parser.q = \"\";\n parser.state = S.DOCTYPE;\n }\n continue;\n case S.DOCTYPE_DTD:\n if (c2 === \"]\") {\n parser.doctype += c2;\n parser.state = S.DOCTYPE;\n } else if (c2 === \"<\") {\n parser.state = S.OPEN_WAKA;\n parser.startTagPosition = parser.position;\n } else if (isQuote(c2)) {\n parser.doctype += c2;\n parser.state = S.DOCTYPE_DTD_QUOTED;\n parser.q = c2;\n } else {\n parser.doctype += c2;\n }\n continue;\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c2;\n if (c2 === parser.q) {\n parser.state = S.DOCTYPE_DTD;\n parser.q = \"\";\n }\n continue;\n case S.COMMENT:\n if (c2 === \"-\") {\n parser.state = S.COMMENT_ENDING;\n } else {\n parser.comment += c2;\n }\n continue;\n case S.COMMENT_ENDING:\n if (c2 === \"-\") {\n parser.state = S.COMMENT_ENDED;\n parser.comment = textopts(parser.opt, parser.comment);\n if (parser.comment) {\n emitNode(parser, \"oncomment\", parser.comment);\n }\n parser.comment = \"\";\n } else {\n parser.comment += \"-\" + c2;\n parser.state = S.COMMENT;\n }\n continue;\n case S.COMMENT_ENDED:\n if (c2 !== \">\") {\n strictFail(parser, \"Malformed comment\");\n parser.comment += \"--\" + c2;\n parser.state = S.COMMENT;\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD;\n } else {\n parser.state = S.TEXT;\n }\n continue;\n case S.CDATA:\n if (c2 === \"]\") {\n parser.state = S.CDATA_ENDING;\n } else {\n parser.cdata += c2;\n }\n continue;\n case S.CDATA_ENDING:\n if (c2 === \"]\") {\n parser.state = S.CDATA_ENDING_2;\n } else {\n parser.cdata += \"]\" + c2;\n parser.state = S.CDATA;\n }\n continue;\n case S.CDATA_ENDING_2:\n if (c2 === \">\") {\n if (parser.cdata) {\n emitNode(parser, \"oncdata\", parser.cdata);\n }\n emitNode(parser, \"onclosecdata\");\n parser.cdata = \"\";\n parser.state = S.TEXT;\n } else if (c2 === \"]\") {\n parser.cdata += \"]\";\n } else {\n parser.cdata += \"]]\" + c2;\n parser.state = S.CDATA;\n }\n continue;\n case S.PROC_INST:\n if (c2 === \"?\") {\n parser.state = S.PROC_INST_ENDING;\n } else if (isWhitespace(c2)) {\n parser.state = S.PROC_INST_BODY;\n } else {\n parser.procInstName += c2;\n }\n continue;\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c2)) {\n continue;\n } else if (c2 === \"?\") {\n parser.state = S.PROC_INST_ENDING;\n } else {\n parser.procInstBody += c2;\n }\n continue;\n case S.PROC_INST_ENDING:\n if (c2 === \">\") {\n emitNode(parser, \"onprocessinginstruction\", {\n name: parser.procInstName,\n body: parser.procInstBody\n });\n parser.procInstName = parser.procInstBody = \"\";\n parser.state = S.TEXT;\n } else {\n parser.procInstBody += \"?\" + c2;\n parser.state = S.PROC_INST_BODY;\n }\n continue;\n case S.OPEN_TAG:\n if (isMatch(nameBody, c2)) {\n parser.tagName += c2;\n } else {\n newTag(parser);\n if (c2 === \">\") {\n openTag(parser);\n } else if (c2 === \"/\") {\n parser.state = S.OPEN_TAG_SLASH;\n } else {\n if (!isWhitespace(c2)) {\n strictFail(parser, \"Invalid character in tag name\");\n }\n parser.state = S.ATTRIB;\n }\n }\n continue;\n case S.OPEN_TAG_SLASH:\n if (c2 === \">\") {\n openTag(parser, true);\n closeTag(parser);\n } else {\n strictFail(parser, \"Forward-slash in opening tag not followed by >\");\n parser.state = S.ATTRIB;\n }\n continue;\n case S.ATTRIB:\n if (isWhitespace(c2)) {\n continue;\n } else if (c2 === \">\") {\n openTag(parser);\n } else if (c2 === \"/\") {\n parser.state = S.OPEN_TAG_SLASH;\n } else if (isMatch(nameStart, c2)) {\n parser.attribName = c2;\n parser.attribValue = \"\";\n parser.state = S.ATTRIB_NAME;\n } else {\n strictFail(parser, \"Invalid attribute name\");\n }\n continue;\n case S.ATTRIB_NAME:\n if (c2 === \"=\") {\n parser.state = S.ATTRIB_VALUE;\n } else if (c2 === \">\") {\n strictFail(parser, \"Attribute without value\");\n parser.attribValue = parser.attribName;\n attrib(parser);\n openTag(parser);\n } else if (isWhitespace(c2)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE;\n } else if (isMatch(nameBody, c2)) {\n parser.attribName += c2;\n } else {\n strictFail(parser, \"Invalid attribute name\");\n }\n continue;\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c2 === \"=\") {\n parser.state = S.ATTRIB_VALUE;\n } else if (isWhitespace(c2)) {\n continue;\n } else {\n strictFail(parser, \"Attribute without value\");\n parser.tag.attributes[parser.attribName] = \"\";\n parser.attribValue = \"\";\n emitNode(parser, \"onattribute\", {\n name: parser.attribName,\n value: \"\"\n });\n parser.attribName = \"\";\n if (c2 === \">\") {\n openTag(parser);\n } else if (isMatch(nameStart, c2)) {\n parser.attribName = c2;\n parser.state = S.ATTRIB_NAME;\n } else {\n strictFail(parser, \"Invalid attribute name\");\n parser.state = S.ATTRIB;\n }\n }\n continue;\n case S.ATTRIB_VALUE:\n if (isWhitespace(c2)) {\n continue;\n } else if (isQuote(c2)) {\n parser.q = c2;\n parser.state = S.ATTRIB_VALUE_QUOTED;\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, \"Unquoted attribute value\");\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED;\n parser.attribValue = c2;\n }\n continue;\n case S.ATTRIB_VALUE_QUOTED:\n if (c2 !== parser.q) {\n if (c2 === \"&\") {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q;\n } else {\n parser.attribValue += c2;\n }\n continue;\n }\n attrib(parser);\n parser.q = \"\";\n parser.state = S.ATTRIB_VALUE_CLOSED;\n continue;\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c2)) {\n parser.state = S.ATTRIB;\n } else if (c2 === \">\") {\n openTag(parser);\n } else if (c2 === \"/\") {\n parser.state = S.OPEN_TAG_SLASH;\n } else if (isMatch(nameStart, c2)) {\n strictFail(parser, \"No whitespace between attributes\");\n parser.attribName = c2;\n parser.attribValue = \"\";\n parser.state = S.ATTRIB_NAME;\n } else {\n strictFail(parser, \"Invalid attribute name\");\n }\n continue;\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c2)) {\n if (c2 === \"&\") {\n parser.state = S.ATTRIB_VALUE_ENTITY_U;\n } else {\n parser.attribValue += c2;\n }\n continue;\n }\n attrib(parser);\n if (c2 === \">\") {\n openTag(parser);\n } else {\n parser.state = S.ATTRIB;\n }\n continue;\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c2)) {\n continue;\n } else if (notMatch(nameStart, c2)) {\n if (parser.script) {\n parser.script += \"</\" + c2;\n parser.state = S.SCRIPT;\n } else {\n strictFail(parser, \"Invalid tagname in closing tag.\");\n }\n } else {\n parser.tagName = c2;\n }\n } else if (c2 === \">\") {\n closeTag(parser);\n } else if (isMatch(nameBody, c2)) {\n parser.tagName += c2;\n } else if (parser.script) {\n parser.script += \"</\" + parser.tagName;\n parser.tagName = \"\";\n parser.state = S.SCRIPT;\n } else {\n if (!isWhitespace(c2)) {\n strictFail(parser, \"Invalid tagname in closing tag\");\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE;\n }\n continue;\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c2)) {\n continue;\n }\n if (c2 === \">\") {\n closeTag(parser);\n } else {\n strictFail(parser, \"Invalid characters in closing tag\");\n }\n continue;\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState;\n var buffer;\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT;\n buffer = \"textNode\";\n break;\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED;\n buffer = \"attribValue\";\n break;\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED;\n buffer = \"attribValue\";\n break;\n }\n if (c2 === \";\") {\n var parsedEntity = parseEntity(parser);\n if (parser.opt.unparsedEntities && !Object.values(sax2.XML_ENTITIES).includes(parsedEntity)) {\n parser.entity = \"\";\n parser.state = returnState;\n parser.write(parsedEntity);\n } else {\n parser[buffer] += parsedEntity;\n parser.entity = \"\";\n parser.state = returnState;\n }\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c2)) {\n parser.entity += c2;\n } else {\n strictFail(parser, \"Invalid character in entity name\");\n parser[buffer] += \"&\" + parser.entity + c2;\n parser.entity = \"\";\n parser.state = returnState;\n }\n continue;\n default: {\n throw new Error(parser, \"Unknown state: \" + parser.state);\n }\n }\n }\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser);\n }\n return parser;\n }\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n if (!String.fromCodePoint) {\n (function() {\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 16384;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return \"\";\n }\n var result = \"\";\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 1114111 || // not a valid Unicode code point\n floor(codePoint) !== codePoint) {\n throw RangeError(\"Invalid code point: \" + codePoint);\n }\n if (codePoint <= 65535) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 65536;\n highSurrogate = (codePoint >> 10) + 55296;\n lowSurrogate = codePoint % 1024 + 56320;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String, \"fromCodePoint\", {\n value: fromCodePoint,\n configurable: true,\n writable: true\n });\n } else {\n String.fromCodePoint = fromCodePoint;\n }\n })();\n }\n })(exports);\n })(sax$1);\n return sax$1;\n}\nvar saxExports = requireSax();\nconst sax = /* @__PURE__ */ getDefaultExportFromCjs(saxExports);\nconst namespaceMapping = {\n \"http://www.w3.org/2000/svg\": {\n ext: \"svg\",\n mime: \"image/svg+xml\"\n },\n \"http://www.w3.org/1999/xhtml\": {\n ext: \"xhtml\",\n mime: \"application/xhtml+xml\"\n },\n \"http://www.opengis.net/kml/2.2\": {\n ext: \"kml\",\n mime: \"application/vnd.google-earth.kml+xml\"\n },\n \"http://www.opengis.net/gml\": {\n ext: \"gml\",\n mime: \"application/gml+xml\"\n }\n};\nconst rootNameMapping = {\n rss: {\n ext: \"rss\",\n mime: \"application/rss+xml\"\n },\n \"score-partwise\": {\n ext: \"musicxml\",\n mime: \"application/vnd.recordare.musicxml+xml\"\n },\n svg: {\n ext: \"svg\",\n mime: \"image/svg+xml\"\n }\n};\nclass XmlTextDetector {\n constructor(options) {\n this.options = options ?? {};\n this.firstTag = true;\n this.onEnd = false;\n this.parser = sax.parser(true, { xmlns: true });\n this.nesting = 0;\n this.parser.onerror = (e2) => {\n if (e2.message.startsWith(\"Invalid character entity\")) {\n return;\n }\n this.fileType = void 0;\n this.onEnd = true;\n };\n this.parser.onopentag = (node) => {\n ++this.nesting;\n if (!this.firstTag || this.onEnd) {\n return;\n }\n this.firstTag = false;\n if (node.uri) {\n this.fileType = namespaceMapping[node.uri];\n } else if (node.name) {\n this.fileType = rootNameMapping[node.name.toLowerCase()];\n }\n if (this.fileType && !this.options.fullScan) {\n this.onEnd = true;\n }\n };\n this.parser.onclosetag = () => {\n --this.nesting;\n };\n }\n write(text) {\n this.parser.write(text);\n }\n close() {\n this.parser.close();\n this.onEnd = true;\n }\n isValid() {\n return this.nesting === 0;\n }\n}\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n const xmlTextDetector = new XmlTextDetector();\n xmlTextDetector.write(string);\n return xmlTextDetector.isValid() && xmlTextDetector.fileType?.ext === \"svg\";\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\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 hidden() {\n return this._view.hidden;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\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(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (\"hidden\" in view && typeof view.hidden !== \"boolean\") {\n throw new Error(\"View hidden must be a boolean\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h2) => {\n try {\n ;\n h2(event[0]);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\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","// 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 \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"23\":\"81ecdc4c907004c0605e\",\"459\":\"975afd1e02f53abf8034\",\"640\":\"b2fa23a809053c6305c5\",\"1023\":\"06cf5496a0a2d7ef494a\",\"3239\":\"459efd0da35e4ae70361\",\"4529\":\"e7b8ecf797fe13c6d69b\",\"5771\":\"a4e2a98efcfb7393c5bd\",\"5810\":\"f63f10359069f886ce52\",\"5862\":\"142cd48ca8ec32e57725\",\"7432\":\"bf576075b1d8131aa273\",\"8737\":\"1ee3b21131ac8193a04d\"}[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 = 2689;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\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 || !/^http(s?):/.test(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(/^blob:/, \"\").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\t2689: 0,\n\t5810: 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, [4208], () => (__webpack_require__(12836)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","_ref3","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref4","userid","user","enabled","push","removeUserGroup","_ref5","indexOf","addUserSubAdmin","_ref6","subadmin","removeUserSubAdmin","_ref7","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref8","updateUserCounts","_ref9","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref0","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","_ref1","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","catch","showError","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref10","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref11","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","_ref12","getDisabledUsers","_ref13","_ref14","limitParam","getUsersFromList","_ref15","getUsersFromGroup","_ref16","groupid","groupId","getCapabilities","password_policy","minLength","_ref17","_ref18","_ref19","_ref20","_ref21","wipeUserDevices","Promise","reject","Error","addUser","_ref22","_ref23","dispatch","password","email","quota","language","manager","_ref24","userStatus","_ref25","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","Store","modules","settings","oc","strict","process","InvalidFilenameErrorReason","InvalidFilenameErrorReason2","InvalidFilenameError","constructor","super","reason","segment","filename","cause","validateFilename","capabilities","files","forbiddenCharacters","forbidden_filename_characters","_oc_config","forbidden_filenames_characters","character","toLocaleLowerCase","forbidden_filenames","endOfBasename","basename2","substring","forbidden_filename_basenames","forbiddenFilenameExtensions","forbidden_filename_extensions","extension","endsWith","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","order","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","forceBinary","replaceAll","e2","match","decimalString","round","k","m","g","p","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","_","index","collator","a2","b2","identifier","entries","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","displayname","basename","lastIndexOf","slice","hasRequiredSax","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","debug","env","NODE_DEBUG","test","args","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","sax2","parser","opt","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","Stream","buffers","i2","l2","clearBuffers","q","c","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closed","closedRoot","sawRoot","tag","noscript","S","BEGIN","strictEntities","ENTITIES","create","XML_ENTITIES","attribList","xmlns","ns","rootNS","unquotedAttributeValues","trackPosition","position","line","column","emit2","EVENTS","o","F2","hasOwnProperty","end","write","chunk","toString","c2","charAt","BEGIN_WHITESPACE","beginWhiteSpace","TEXT","starti","textNode","isWhitespace","strictFail","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT","SCRIPT_ENDING","script","CLOSE_TAG","SGML_DECL","sgmlDecl","isMatch","nameStart","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","pad","join","COMMENT","comment","doctype","DOCTYPE_DTD","toUpperCase","CDATA","emitNode","cdata","DOCTYPE","isQuote","SGML_DECL_QUOTED","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","body","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","closeTag","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","isAttribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","notMatch","returnState","buffer","parsedEntity","parseEntity","unparsedEntities","entity","entityBody","entityStart","maxAllowed","max","maxActual","len","closeText","m2","checkBufferLength","resume","flush","require","ex","streamWraps","ev","apply","_parser","writable","readable","me","onend","emit","onerror","er","_decoder","defineProperty","set","h2","removeAllListeners","on","enumerable","configurable","Buffer","isBuffer","SD","handler","call","XML_NAMESPACE","XMLNS_NAMESPACE","xml","regex","stringFromCharCode","fromCodePoint","s2","STATE","COMMENT_STARTING","s3","fromCharCode","event","nodeType","text","normalize","parent","qname","attribute","qualName","split","prefix","local","qn","selfClosing","uri","p2","nv","isSelfClosing","toLowerCase","t2","closeTo","pop","x","n2","num","entityLC","numStr","parseInt","isNaN","result","highSurrogate","lowSurrogate","codeUnits","codePoint","isFinite","RangeError","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","exports","requireSemver","safeRe","re2","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","TypeError","LOOSE","FULL","raw","major","minor","prerelease","format","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","parse","throwErrors","requireParse","requireValid","requireMajor","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","hash","query","fullPath","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","f","chunkId","all","reduce","promises","u","globalThis","Function","obj","prop","l","done","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","onload","clearTimeout","doneFns","parentNode","removeChild","bind","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
|