From 9864a3c7c1b711c11b38a41cdd082522eb20b970 Mon Sep 17 00:00:00 2001 From: Alexandre_BRAVO Date: Fri, 15 Nov 2024 18:19:55 +0100 Subject: [PATCH] breadcrumb ajoute --- js/main.js | 25343 ++++++++++++++++++++++++++++++++- js/main.js.map | 2 +- src/components/FileTable.vue | 214 +- src/output.css | 99 +- 4 files changed, 25401 insertions(+), 257 deletions(-) diff --git a/js/main.js b/js/main.js index a4c2327..fe42394 100644 --- a/js/main.js +++ b/js/main.js @@ -898,18 +898,28 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _nextcloud_files_dav__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/files/dav */ "./node_modules/@nextcloud/files/dist/dav.mjs"); +/* harmony import */ var _nextcloud_vue_dist_Components_NcBreadcrumbs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue/dist/Components/NcBreadcrumbs.js */ "./node_modules/@nextcloud/vue/dist/Components/NcBreadcrumbs.mjs"); +/* harmony import */ var _nextcloud_vue_dist_Components_NcBreadcrumb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @nextcloud/vue/dist/Components/NcBreadcrumb.js */ "./node_modules/@nextcloud/vue/dist/Components/NcBreadcrumb.mjs"); + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ name: 'FileTable', + components: { + NcBreadcrumbs: _nextcloud_vue_dist_Components_NcBreadcrumbs_js__WEBPACK_IMPORTED_MODULE_1__["default"], + NcBreadcrumb: _nextcloud_vue_dist_Components_NcBreadcrumb_js__WEBPACK_IMPORTED_MODULE_2__["default"] + }, data() { return { files: [], // Liste des fichiers et dossiers récupérés - current_dir: '/' + current_dir: '/', + breadcrumbParts: [] }; }, async mounted() { await this.fetchFiles(); + this.breadcrumbParts = this.getBreadcrumbParts(); }, methods: { async fetchFiles() { @@ -933,13 +943,32 @@ __webpack_require__.r(__webpack_exports__); if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(2)} MB`; return `${(size / 1024 / 1024 / 1024).toFixed(2)} GB`; }, - async handleClick(file) { + generateCrumbHref(index) { + const parts = this.breadcrumbParts.slice(0, index + 1); + return '/' + parts.join('/'); + }, + getBreadcrumbParts() { + // Si le current_dir est un simple '/', on le renvoie sous forme de tableau vide. + if (this.current_dir === '/') return []; + return this.current_dir.split('/').filter(part => part); + }, + async handleClickElem(file) { if (file.type === 'directory') { this.current_dir = this.current_dir === '/' ? '/' + file.basename : this.current_dir + '/' + file.basename; + this.breadcrumbParts = this.getBreadcrumbParts(); await this.fetchFiles(); } else { window.open(file.href, '_blank'); } + }, + async handleClickBreadcrumb(index) { + let dir = '/'; + if (index >= -1) { + dir = this.generateCrumbHref(index); + } + this.current_dir = dir; + this.breadcrumbParts = this.getBreadcrumbParts(); + await this.fetchFiles(); } } }); @@ -997,13 +1026,37 @@ var render = function render() { _c = _vm._self._c; return _c("div", { staticClass: "flex flex-col h-full w-full border" - }, [_vm._m(0), _vm._v(" "), _vm._l(_vm.files, function (file) { + }, [_c("NcBreadcrumbs", { + staticClass: "max-h-8 mr-4" + }, [_c("NcBreadcrumb", { + attrs: { + name: "Home", + title: "Title of the Home folder" + }, + on: { + click: function ($event) { + return _vm.handleClickBreadcrumb(-1); + } + } + }), _vm._v(" "), _vm._l(_vm.breadcrumbParts, function (part, index) { + return _vm.getBreadcrumbParts().length > 0 ? _c("NcBreadcrumb", { + key: index, + attrs: { + name: part + }, + on: { + click: function ($event) { + return _vm.handleClickBreadcrumb(index); + } + } + }) : _vm._e(); + })], 2), _vm._v(" "), _vm._m(0), _vm._v(" "), _vm._l(_vm.files, function (file) { return _c("div", { key: file.filename, staticClass: "flex h-16 items-center hover:bg-NcGray cursor-pointer rounded-lg border-b last:border-b-0 border-gray-300", on: { click: function ($event) { - return _vm.handleClick(file); + return _vm.handleClickElem(file); } } }, [_c("div", { @@ -1026,9 +1079,9 @@ var render = function render() { staticClass: "ml-4" }, [_vm._v(_vm._s(file.basename))])]), _vm._v(" "), _c("div", { staticClass: "cursor-pointer w-1/6 px-4 py-2 border-r border-gray-300" - }, [_vm._v("\n " + _vm._s(file.type === "directory" ? "Dossier" : "Fichier") + "\n ")]), _vm._v(" "), _c("div", { + }, [_vm._v("\n " + _vm._s(file.type === "directory" ? "Dossier" : "Fichier") + "\n ")]), _vm._v(" "), _c("div", { staticClass: "cursor-pointer w-1/6 px-4 py-2" - }, [_vm._v("\n " + _vm._s(file.type === "directory" ? "-" : _vm.formatFileSize(file.size)) + "\n ")])]); + }, [_vm._v("\n " + _vm._s(file.type === "directory" ? "-" : _vm.formatFileSize(file.size)) + "\n ")])]); })], 2); }; var staticRenderFns = [function () { @@ -1360,6 +1413,1010 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ }); //# sourceMappingURL=CancelablePromise.js.map +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CNq6xIdS.css": +/*!*******************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CNq6xIdS.css ***! + \*******************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-dba65098] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +li.action.active[data-v-dba65098] { + background-color: var(--color-background-hover); + border-radius: 6px; + padding: 0; +} +.action--disabled[data-v-dba65098] { + pointer-events: none; + opacity: 0.5; +} +.action--disabled[data-v-dba65098]:hover, .action--disabled[data-v-dba65098]:focus { + cursor: default; + opacity: 0.5; +} +.action--disabled *[data-v-dba65098] { + opacity: 1 !important; +} +.action-button[data-v-dba65098] { + display: flex; + align-items: flex-start; + width: 100%; + height: auto; + margin: 0; + padding: 0; + padding-right: calc((var(--default-clickable-area) - 16px) / 2); + box-sizing: border-box; + cursor: pointer; + white-space: nowrap; + color: var(--color-main-text); + border: 0; + border-radius: 0; + background-color: transparent; + box-shadow: none; + font-weight: normal; + font-size: var(--default-font-size); + line-height: var(--default-clickable-area); +} +.action-button > span[data-v-dba65098] { + cursor: pointer; + white-space: nowrap; +} +.action-button__icon[data-v-dba65098] { + width: var(--default-clickable-area); + height: var(--default-clickable-area); + opacity: 1; + background-position: calc((var(--default-clickable-area) - 16px) / 2) center; + background-size: 16px; + background-repeat: no-repeat; +} +.action-button[data-v-dba65098] .material-design-icon { + width: var(--default-clickable-area); + height: var(--default-clickable-area); + opacity: 1; +} +.action-button[data-v-dba65098] .material-design-icon .material-design-icon__svg { + vertical-align: middle; +} +.action-button__longtext-wrapper[data-v-dba65098], .action-button__longtext[data-v-dba65098] { + max-width: 220px; + line-height: 1.6em; + padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0; + cursor: pointer; + text-align: start; + overflow: hidden; + text-overflow: ellipsis; +} +.action-button__longtext[data-v-dba65098] { + cursor: pointer; + white-space: pre-wrap !important; +} +.action-button__name[data-v-dba65098] { + font-weight: bold; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 100%; + display: inline-block; +} +.action-button__menu-icon[data-v-dba65098] { + margin-left: auto; + margin-right: calc((var(--default-clickable-area) - 16px) / 2 * -1); +} +.action-button__pressed-icon[data-v-dba65098] { + margin-left: auto; + margin-right: calc((var(--default-clickable-area) - 16px) / 2 * -1); +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionLink-CC6a7Hsf.css": +/*!*****************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionLink-CC6a7Hsf.css ***! + \*****************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-30c015f0] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +li.action.active[data-v-30c015f0] { + background-color: var(--color-background-hover); + border-radius: 6px; + padding: 0; +} +.action-link[data-v-30c015f0] { + display: flex; + align-items: flex-start; + width: 100%; + height: auto; + margin: 0; + padding: 0; + padding-right: calc((var(--default-clickable-area) - 16px) / 2); + box-sizing: border-box; + cursor: pointer; + white-space: nowrap; + color: var(--color-main-text); + border: 0; + border-radius: 0; + background-color: transparent; + box-shadow: none; + font-weight: normal; + font-size: var(--default-font-size); + line-height: var(--default-clickable-area); +} +.action-link > span[data-v-30c015f0] { + cursor: pointer; + white-space: nowrap; +} +.action-link__icon[data-v-30c015f0] { + width: var(--default-clickable-area); + height: var(--default-clickable-area); + opacity: 1; + background-position: calc((var(--default-clickable-area) - 16px) / 2) center; + background-size: 16px; + background-repeat: no-repeat; +} +.action-link[data-v-30c015f0] .material-design-icon { + width: var(--default-clickable-area); + height: var(--default-clickable-area); + opacity: 1; +} +.action-link[data-v-30c015f0] .material-design-icon .material-design-icon__svg { + vertical-align: middle; +} +.action-link__longtext-wrapper[data-v-30c015f0], .action-link__longtext[data-v-30c015f0] { + max-width: 220px; + line-height: 1.6em; + padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0; + cursor: pointer; + text-align: start; + overflow: hidden; + text-overflow: ellipsis; +} +.action-link__longtext[data-v-30c015f0] { + cursor: pointer; + white-space: pre-wrap !important; +} +.action-link__name[data-v-30c015f0] { + font-weight: bold; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 100%; + display: inline-block; +} +.action-link__menu-icon[data-v-30c015f0] { + margin-left: auto; + margin-right: calc((var(--default-clickable-area) - 16px) / 2 * -1); +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-CsIBHw6E.css": +/*!*******************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-CsIBHw6E.css ***! + \*******************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-579c6b4d] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +li.action.active[data-v-579c6b4d] { + background-color: var(--color-background-hover); + border-radius: 6px; + padding: 0; +} +.action-router[data-v-579c6b4d] { + display: flex; + align-items: flex-start; + width: 100%; + height: auto; + margin: 0; + padding: 0; + padding-right: calc((var(--default-clickable-area) - 16px) / 2); + box-sizing: border-box; + cursor: pointer; + white-space: nowrap; + color: var(--color-main-text); + border: 0; + border-radius: 0; + background-color: transparent; + box-shadow: none; + font-weight: normal; + font-size: var(--default-font-size); + line-height: var(--default-clickable-area); +} +.action-router > span[data-v-579c6b4d] { + cursor: pointer; + white-space: nowrap; +} +.action-router__icon[data-v-579c6b4d] { + width: var(--default-clickable-area); + height: var(--default-clickable-area); + opacity: 1; + background-position: calc((var(--default-clickable-area) - 16px) / 2) center; + background-size: 16px; + background-repeat: no-repeat; +} +.action-router[data-v-579c6b4d] .material-design-icon { + width: var(--default-clickable-area); + height: var(--default-clickable-area); + opacity: 1; +} +.action-router[data-v-579c6b4d] .material-design-icon .material-design-icon__svg { + vertical-align: middle; +} +.action-router__longtext-wrapper[data-v-579c6b4d], .action-router__longtext[data-v-579c6b4d] { + max-width: 220px; + line-height: 1.6em; + padding: calc((var(--default-clickable-area) - 1.6em) / 2) 0; + cursor: pointer; + text-align: start; + overflow: hidden; + text-overflow: ellipsis; +} +.action-router__longtext[data-v-579c6b4d] { + cursor: pointer; + white-space: pre-wrap !important; +} +.action-router__name[data-v-579c6b4d] { + font-weight: bold; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + max-width: 100%; + display: inline-block; +} +.action-router__menu-icon[data-v-579c6b4d] { + margin-left: auto; + margin-right: calc((var(--default-clickable-area) - 16px) / 2 * -1); +} +.action--disabled[data-v-579c6b4d] { + pointer-events: none; + opacity: 0.5; +} +.action--disabled[data-v-579c6b4d]:hover, .action--disabled[data-v-579c6b4d]:focus { + cursor: default; + opacity: 0.5; +} +.action--disabled *[data-v-579c6b4d] { + opacity: 1 !important; +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActions-DM_LoRlx.css": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActions-DM_LoRlx.css ***! + \**************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-fcbbc5a9] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +.action-items[data-v-fcbbc5a9] { + display: flex; + align-items: center; +} +.action-items > button[data-v-fcbbc5a9] { + margin-right: calc((var(--default-clickable-area) - 16px) / 2 / 2); +} +.action-item[data-v-fcbbc5a9] { + --open-background-color: var(--color-background-hover, \$action-background-hover); + position: relative; + display: inline-block; +} +.action-item.action-item--primary[data-v-fcbbc5a9] { + --open-background-color: var(--color-primary-element-hover); +} +.action-item.action-item--secondary[data-v-fcbbc5a9] { + --open-background-color: var(--color-primary-element-light-hover); +} +.action-item.action-item--error[data-v-fcbbc5a9] { + --open-background-color: var(--color-error-hover); +} +.action-item.action-item--warning[data-v-fcbbc5a9] { + --open-background-color: var(--color-warning-hover); +} +.action-item.action-item--success[data-v-fcbbc5a9] { + --open-background-color: var(--color-success-hover); +} +.action-item.action-item--tertiary-no-background[data-v-fcbbc5a9] { + --open-background-color: transparent; +} +.action-item.action-item--open .action-item__menutoggle[data-v-fcbbc5a9] { + background-color: var(--open-background-color); +} +.action-item__menutoggle__icon[data-v-fcbbc5a9] { + width: 20px; + height: 20px; + object-fit: contain; +}/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper { + border-radius: var(--border-radius-large); + overflow: hidden; +} +.v-popper--theme-dropdown.v-popper__popper.action-item__popper .v-popper__wrapper .v-popper__inner { + border-radius: var(--border-radius-large); + padding: 4px; + max-height: calc(100vh - var(--header-height)); + overflow: auto; +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-Cjcyeimd.css": +/*!*****************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-Cjcyeimd.css ***! + \*****************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-cfe13af3] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +.vue-crumb[data-v-cfe13af3] { + background-image: none; + display: inline-flex; + height: var(--default-clickable-area); + padding: 0; +} +.vue-crumb[data-v-cfe13af3]:last-child { + min-width: 0; +} +.vue-crumb:last-child .vue-crumb__separator[data-v-cfe13af3] { + display: none; +} +.vue-crumb--hidden[data-v-cfe13af3] { + display: none; +} +.vue-crumb__separator[data-v-cfe13af3] { + padding: 0; + color: var(--color-text-maxcontrast); +} +.vue-crumb.vue-crumb--hovered[data-v-cfe13af3] .button-vue { + background-color: var(--color-background-dark); + color: var(--color-main-text); +} +.vue-crumb[data-v-cfe13af3]:not(:last-child) .button-vue { + color: var(--color-text-maxcontrast); +} +.vue-crumb[data-v-cfe13af3]:not(:last-child) .button-vue:hover, .vue-crumb[data-v-cfe13af3]:not(:last-child) .button-vue:focus { + background-color: var(--color-background-dark); + color: var(--color-main-text); +} +.vue-crumb[data-v-cfe13af3]:not(:last-child) .button-vue__text { + font-weight: normal; +} +.vue-crumb[data-v-cfe13af3] .button-vue__text { + margin: 0; +} +.vue-crumb[data-v-cfe13af3]:not(.dropdown) .action-item { + max-width: 100%; +} +.vue-crumb[data-v-cfe13af3]:not(.dropdown) .action-item .button-vue { + padding: 0 4px 0 16px; + max-width: 100%; +} +.vue-crumb[data-v-cfe13af3]:not(.dropdown) .action-item .button-vue__wrapper { + flex-direction: row-reverse; +} +.vue-crumb[data-v-cfe13af3]:not(.dropdown) .action-item.action-item--open .action-item__menutoggle { + background-color: var(--color-background-dark); + color: var(--color-main-text); +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-CFRjXqRg.css": +/*!******************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-CFRjXqRg.css ***! + \******************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-629bf30f] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +.breadcrumb[data-v-629bf30f] { + width: 100%; + flex-grow: 1; + display: inline-flex; + align-items: center; +} +.breadcrumb--collapsed[data-v-629bf30f] .vue-crumb:last-child { + min-width: 100px; +} +.breadcrumb nav[data-v-629bf30f] { + flex-shrink: 1; + min-width: 0; +} +.breadcrumb .breadcrumb__crumbs[data-v-629bf30f] { + max-width: 100%; +} +.breadcrumb .breadcrumb__crumbs[data-v-629bf30f], .breadcrumb .breadcrumb__actions[data-v-629bf30f] { + display: inline-flex; +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcButton-BHDLon1_.css": +/*!*************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcButton-BHDLon1_.css ***! + \*************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon[data-v-c3d9e0ce] { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +.button-vue[data-v-c3d9e0ce] { + --button-size: var(--default-clickable-area); + --button-radius: var(--border-radius-element, calc(var(--button-size) / 2)); + --button-padding: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4)); + position: relative; + width: fit-content; + overflow: hidden; + border: 0; + padding: 0; + font-size: var(--default-font-size); + font-weight: bold; + min-height: var(--button-size); + min-width: var(--button-size); + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + border-radius: var(--button-radius); + transition-property: color, border-color, background-color; + transition-duration: 0.1s; + transition-timing-function: linear; + color: var(--color-primary-element-light-text); + background-color: var(--color-primary-element-light); +} +.button-vue--size-small[data-v-c3d9e0ce] { + --button-size: var(--clickable-area-small, 24px); + --button-radius: var(--border-radius); +} +.button-vue--size-large[data-v-c3d9e0ce] { + --button-size: var(--clickable-area-large, 48px); +} +.button-vue *[data-v-c3d9e0ce], +.button-vue span[data-v-c3d9e0ce] { + cursor: pointer; +} +.button-vue[data-v-c3d9e0ce]:focus { + outline: none; +} +.button-vue[data-v-c3d9e0ce]:disabled { + cursor: default; + opacity: 0.5; + filter: saturate(0.7); +} +.button-vue:disabled *[data-v-c3d9e0ce] { + cursor: default; +} +.button-vue[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: var(--color-primary-element-light-hover); +} +.button-vue[data-v-c3d9e0ce]:active { + background-color: var(--color-primary-element-light); +} +.button-vue__wrapper[data-v-c3d9e0ce] { + display: inline-flex; + align-items: center; + justify-content: center; + width: 100%; +} +.button-vue--end .button-vue__wrapper[data-v-c3d9e0ce] { + justify-content: end; +} +.button-vue--start .button-vue__wrapper[data-v-c3d9e0ce] { + justify-content: start; +} +.button-vue--reverse .button-vue__wrapper[data-v-c3d9e0ce] { + flex-direction: row-reverse; +} +.button-vue--reverse.button-vue--icon-and-text[data-v-c3d9e0ce] { + padding-inline: var(--button-padding) var(--default-grid-baseline); +} +.button-vue__icon[data-v-c3d9e0ce] { + height: var(--button-size); + width: var(--button-size); + min-height: var(--button-size); + min-width: var(--button-size); + display: flex; + justify-content: center; + align-items: center; +} +.button-vue--size-small .button-vue__icon[data-v-c3d9e0ce] > * { + max-height: 16px; + max-width: 16px; +} +.button-vue--size-small .button-vue__icon[data-v-c3d9e0ce] svg { + height: 16px; + width: 16px; +} +.button-vue__text[data-v-c3d9e0ce] { + font-weight: bold; + margin-bottom: 1px; + padding: 2px 0; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.button-vue--icon-only[data-v-c3d9e0ce] { + line-height: 1; + width: var(--button-size) !important; +} +.button-vue--text-only[data-v-c3d9e0ce] { + padding: 0 var(--button-padding); +} +.button-vue--text-only .button-vue__text[data-v-c3d9e0ce] { + margin-left: 4px; + margin-right: 4px; +} +.button-vue--icon-and-text[data-v-c3d9e0ce] { + --button-padding: min(calc(var(--default-grid-baseline) + var(--button-radius)), calc(var(--default-grid-baseline) * 4)); + padding-block: 0; + padding-inline: var(--default-grid-baseline) var(--button-padding); +} +.button-vue--wide[data-v-c3d9e0ce] { + width: 100%; +} +.button-vue[data-v-c3d9e0ce]:focus-visible { + outline: 2px solid var(--color-main-text) !important; + box-shadow: 0 0 0 4px var(--color-main-background) !important; +} +.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-c3d9e0ce] { + outline: 2px solid var(--color-primary-element-text); + border-radius: var(--border-radius-element, var(--border-radius)); + background-color: transparent; +} +.button-vue--vue-primary[data-v-c3d9e0ce] { + background-color: var(--color-primary-element); + color: var(--color-primary-element-text); +} +.button-vue--vue-primary[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: var(--color-primary-element-hover); +} +.button-vue--vue-primary[data-v-c3d9e0ce]:active { + background-color: var(--color-primary-element); +} +.button-vue--vue-secondary[data-v-c3d9e0ce] { + color: var(--color-primary-element-light-text); + background-color: var(--color-primary-element-light); +} +.button-vue--vue-secondary[data-v-c3d9e0ce]:hover:not(:disabled) { + color: var(--color-primary-element-light-text); + background-color: var(--color-primary-element-light-hover); +} +.button-vue--vue-tertiary[data-v-c3d9e0ce] { + color: var(--color-main-text); + background-color: transparent; +} +.button-vue--vue-tertiary[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: var(--color-background-hover); +} +.button-vue--vue-tertiary-no-background[data-v-c3d9e0ce] { + color: var(--color-main-text); + background-color: transparent; +} +.button-vue--vue-tertiary-no-background[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: transparent; +} +.button-vue--vue-tertiary-on-primary[data-v-c3d9e0ce] { + color: var(--color-primary-element-text); + background-color: transparent; +} +.button-vue--vue-tertiary-on-primary[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: transparent; +} +.button-vue--vue-success[data-v-c3d9e0ce] { + background-color: var(--color-success); + color: white; +} +.button-vue--vue-success[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: var(--color-success-hover); +} +.button-vue--vue-success[data-v-c3d9e0ce]:active { + background-color: var(--color-success); +} +.button-vue--vue-warning[data-v-c3d9e0ce] { + background-color: var(--color-warning); + color: white; +} +.button-vue--vue-warning[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: var(--color-warning-hover); +} +.button-vue--vue-warning[data-v-c3d9e0ce]:active { + background-color: var(--color-warning); +} +.button-vue--vue-error[data-v-c3d9e0ce] { + background-color: var(--color-error); + color: white; +} +.button-vue--vue-error[data-v-c3d9e0ce]:hover:not(:disabled) { + background-color: var(--color-error-hover); +} +.button-vue--vue-error[data-v-c3d9e0ce]:active { + background-color: var(--color-error); +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcPopover-TS4CW9MJ.css": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcPopover-TS4CW9MJ.css ***! + \**************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js"); +/* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/** + * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +/* +* Ensure proper alignment of the vue material icons +*/ +.material-design-icon { + display: flex; + align-self: center; + justify-self: center; + align-items: center; + justify-content: center; +} +.resize-observer { + position: absolute; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + border: none; + background-color: transparent; + pointer-events: none; + display: block; + overflow: hidden; + opacity: 0; +} +.resize-observer object { + display: block; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + overflow: hidden; + pointer-events: none; + z-index: -1; +} +.v-popper--theme-dropdown.v-popper__popper { + z-index: 100000; + top: 0; + left: 0; + display: block !important; + filter: drop-shadow(0 1px 10px var(--color-box-shadow)); +} +.v-popper--theme-dropdown.v-popper__popper .v-popper__inner { + padding: 0; + color: var(--color-main-text); + border-radius: var(--border-radius-large); + overflow: hidden; + background: var(--color-main-background); +} +.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container { + position: absolute; + z-index: 1; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; + border-width: 10px; +} +.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container { + bottom: -10px; + border-bottom-width: 0; + border-top-color: var(--color-main-background); +} +.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container { + top: -10px; + border-top-width: 0; + border-bottom-color: var(--color-main-background); +} +.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container { + left: -10px; + border-left-width: 0; + border-right-color: var(--color-main-background); +} +.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container { + right: -10px; + border-right-width: 0; + border-left-color: var(--color-main-background); +} +.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true] { + visibility: hidden; + transition: opacity var(--animation-quick), visibility var(--animation-quick); + opacity: 0; +} +.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false] { + visibility: visible; + transition: opacity var(--animation-quick); + opacity: 1; +}`, ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + /***/ }), /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/FileTable.vue?vue&type=style&index=0&id=36ad32b2&scoped=true&lang=css": @@ -1966,18 +3023,26 @@ video { margin-left: 0.5rem; } -.mr-2 { - margin-right: 0.5rem; -} - .ml-4 { margin-left: 1rem; } +.mr-2 { + margin-right: 0.5rem; +} + +.mr-4 { + margin-right: 1rem; +} + .flex { display: flex; } +.h-10 { + height: 2.5rem; +} + .h-12 { height: 3rem; } @@ -1994,48 +3059,36 @@ video { height: 2rem; } -.h-10 { - height: 2.5rem; +.max-h-8 { + max-height: 2rem; } .w-1\\/3 { width: 33.333333%; } -.w-2\\/3 { - width: 66.666667%; -} - -.w-full { - width: 100%; -} - .w-1\\/6 { width: 16.666667%; } -.w-5\\/6 { - width: 83.333333%; -} - -.w-8 { - width: 2rem; -} - .w-10 { width: 2.5rem; } -.w-4\\/6 { - width: 66.666667%; -} - .w-12 { width: 3rem; } -.flex-1 { - flex: 1 1 0%; +.w-2\\/3 { + width: 66.666667%; +} + +.w-4\\/6 { + width: 66.666667%; +} + +.w-full { + width: 100%; } .cursor-pointer { @@ -2058,14 +3111,14 @@ video { justify-content: center; } -.rounded-xl { - border-radius: 0.75rem; -} - .rounded-lg { border-radius: 0.5rem; } +.rounded-xl { + border-radius: 0.75rem; +} + .border { border-width: 1px; } @@ -2078,20 +3131,11 @@ video { border-right-width: 1px; } -.border-b-2 { - border-bottom-width: 2px; -} - .border-gray-300 { --tw-border-opacity: 1; border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); } -.border-NcGray { - --tw-border-opacity: 1; - border-color: rgb(33 33 33 / var(--tw-border-opacity, 1)); -} - .bg-NcBlack { --tw-bg-opacity: 1; background-color: rgb(23 23 23 / var(--tw-bg-opacity, 1)); @@ -2101,19 +3145,10 @@ video { background-color: rgb(0 0 0 / 0.8); } -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); -} - .p-4 { padding: 1rem; } -.p-2 { - padding: 0.5rem; -} - .px-4 { padding-left: 1rem; padding-right: 1rem; @@ -2128,14 +3163,6 @@ video { font-weight: 600; } -.text-white\\/20 { - color: rgb(255 255 255 / 0.2); -} - -.text-white\\/50 { - color: rgb(255 255 255 / 0.5); -} - .text-NcBlue { --tw-text-opacity: 1; color: rgb(0 114 195 / var(--tw-text-opacity, 1)); @@ -2146,22 +3173,17 @@ video { color: rgb(107 114 128 / var(--tw-text-opacity, 1)); } -.last\\:border-b-0:last-child { - border-bottom-width: 0px; +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } -.hover\\:cursor-pointer:hover { - cursor: pointer; +.last\\:border-b-0:last-child { + border-bottom-width: 0px; } .hover\\:bg-NcGray:hover { --tw-bg-opacity: 1; background-color: rgb(33 33 33 / var(--tw-bg-opacity, 1)); -} - -.hover\\:bg-gray-200:hover { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); }`, ""]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); @@ -2277,6 +3299,6591 @@ module.exports = function (i) { return i[1]; }; +/***/ }), + +/***/ "./node_modules/debounce/index.js": +/*!****************************************!*\ + !*** ./node_modules/debounce/index.js ***! + \****************************************/ +/***/ ((module) => { + +function debounce(function_, wait = 100, options = {}) { + if (typeof function_ !== 'function') { + throw new TypeError(`Expected the first parameter to be a function, got \`${typeof function_}\`.`); + } + + if (wait < 0) { + throw new RangeError('`wait` must not be negative.'); + } + + // TODO: Deprecate the boolean parameter at some point. + const {immediate} = typeof options === 'boolean' ? {immediate: options} : options; + + let storedContext; + let storedArguments; + let timeoutId; + let timestamp; + let result; + + function run() { + const callContext = storedContext; + const callArguments = storedArguments; + storedContext = undefined; + storedArguments = undefined; + result = function_.apply(callContext, callArguments); + return result; + } + + function later() { + const last = Date.now() - timestamp; + + if (last < wait && last >= 0) { + timeoutId = setTimeout(later, wait - last); + } else { + timeoutId = undefined; + + if (!immediate) { + result = run(); + } + } + } + + const debounced = function (...arguments_) { + if ( + storedContext + && this !== storedContext + && Object.getPrototypeOf(this) === Object.getPrototypeOf(storedContext) + ) { + throw new Error('Debounced method called with different contexts of the same prototype.'); + } + + storedContext = this; // eslint-disable-line unicorn/no-this-assignment + storedArguments = arguments_; + timestamp = Date.now(); + + const callNow = immediate && !timeoutId; + + if (!timeoutId) { + timeoutId = setTimeout(later, wait); + } + + if (callNow) { + result = run(); + } + + return result; + }; + + Object.defineProperty(debounced, 'isPending', { + get() { + return timeoutId !== undefined; + }, + }); + + debounced.clear = () => { + if (!timeoutId) { + return; + } + + clearTimeout(timeoutId); + timeoutId = undefined; + }; + + debounced.flush = () => { + if (!timeoutId) { + return; + } + + debounced.trigger(); + }; + + debounced.trigger = () => { + result = run(); + + debounced.clear(); + }; + + return debounced; +} + +// Adds compatibility for ES modules +module.exports.debounce = debounce; + +module.exports = debounce; + + +/***/ }), + +/***/ "./node_modules/escape-html/index.js": +/*!*******************************************!*\ + !*** ./node_modules/escape-html/index.js ***! + \*******************************************/ +/***/ ((module) => { + +"use strict"; +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + + + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} + + +/***/ }), + +/***/ "./node_modules/floating-vue/dist/floating-vue.es.js": +/*!***********************************************************!*\ + !*** ./node_modules/floating-vue/dist/floating-vue.es.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ Dropdown: () => (/* binding */ Dropdown), +/* harmony export */ HIDE_EVENT_MAP: () => (/* binding */ HIDE_EVENT_MAP), +/* harmony export */ Menu: () => (/* binding */ Menu), +/* harmony export */ Popper: () => (/* binding */ Popper), +/* harmony export */ PopperContent: () => (/* binding */ PopperContent), +/* harmony export */ PopperMethods: () => (/* binding */ PopperMethods), +/* harmony export */ PopperWrapper: () => (/* binding */ PopperWrapper), +/* harmony export */ SHOW_EVENT_MAP: () => (/* binding */ SHOW_EVENT_MAP), +/* harmony export */ ThemeClass: () => (/* binding */ ThemeClass), +/* harmony export */ Tooltip: () => (/* binding */ Tooltip), +/* harmony export */ TooltipDirective: () => (/* binding */ TooltipDirective), +/* harmony export */ VClosePopper: () => (/* binding */ VClosePopper), +/* harmony export */ VTooltip: () => (/* binding */ VTooltip), +/* harmony export */ createTooltip: () => (/* binding */ createTooltip), +/* harmony export */ "default": () => (/* binding */ plugin), +/* harmony export */ destroyTooltip: () => (/* binding */ destroyTooltip), +/* harmony export */ hideAllPoppers: () => (/* binding */ hideAllPoppers), +/* harmony export */ install: () => (/* binding */ install), +/* harmony export */ options: () => (/* binding */ options), +/* harmony export */ placements: () => (/* binding */ placements) +/* harmony export */ }); +/* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @floating-ui/dom */ "./node_modules/floating-vue/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js"); +/* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @floating-ui/dom */ "./node_modules/floating-vue/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js"); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; + + +function assign(to, from) { + for (const key in from) { + if (Object.prototype.hasOwnProperty.call(from, key)) { + if (typeof from[key] === "object" && to[key]) { + assign(to[key], from[key]); + } else { + to[key] = from[key]; + } + } + } +} +const config = { + disabled: false, + distance: 5, + skidding: 0, + container: "body", + boundary: void 0, + instantMove: false, + disposeTimeout: 5e3, + popperTriggers: [], + strategy: "absolute", + preventOverflow: true, + flip: true, + shift: true, + overflowPadding: 0, + arrowPadding: 0, + arrowOverflow: true, + themes: { + tooltip: { + placement: "top", + triggers: ["hover", "focus", "touch"], + hideTriggers: (events) => [...events, "click"], + delay: { + show: 200, + hide: 0 + }, + handleResize: false, + html: false, + loadingContent: "..." + }, + dropdown: { + placement: "bottom", + triggers: ["click"], + delay: 0, + handleResize: true, + autoHide: true + }, + menu: { + $extend: "dropdown", + triggers: ["hover", "focus"], + popperTriggers: ["hover", "focus"], + delay: { + show: 0, + hide: 400 + } + } + } +}; +function getDefaultConfig(theme, key) { + let themeConfig = config.themes[theme] || {}; + let value; + do { + value = themeConfig[key]; + if (typeof value === "undefined") { + if (themeConfig.$extend) { + themeConfig = config.themes[themeConfig.$extend] || {}; + } else { + themeConfig = null; + value = config[key]; + } + } else { + themeConfig = null; + } + } while (themeConfig); + return value; +} +function getThemeClasses(theme) { + const result = [theme]; + let themeConfig = config.themes[theme] || {}; + do { + if (themeConfig.$extend && !themeConfig.$resetCss) { + result.push(themeConfig.$extend); + themeConfig = config.themes[themeConfig.$extend] || {}; + } else { + themeConfig = null; + } + } while (themeConfig); + return result.map((c) => `v-popper--theme-${c}`); +} +function getAllParentThemes(theme) { + const result = [theme]; + let themeConfig = config.themes[theme] || {}; + do { + if (themeConfig.$extend) { + result.push(themeConfig.$extend); + themeConfig = config.themes[themeConfig.$extend] || {}; + } else { + themeConfig = null; + } + } while (themeConfig); + return result; +} +var vueResize = ""; +let supportsPassive = false; +if (typeof window !== "undefined") { + supportsPassive = false; + try { + const opts = Object.defineProperty({}, "passive", { + get() { + supportsPassive = true; + } + }); + window.addEventListener("test", null, opts); + } catch (e) { + } +} +let isIOS = false; +if (typeof window !== "undefined" && typeof navigator !== "undefined") { + isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; +} +const placements = ["auto", "top", "bottom", "left", "right"].reduce((acc, base) => acc.concat([ + base, + `${base}-start`, + `${base}-end` +]), []); +const SHOW_EVENT_MAP = { + hover: "mouseenter", + focus: "focus", + click: "click", + touch: "touchstart" +}; +const HIDE_EVENT_MAP = { + hover: "mouseleave", + focus: "blur", + click: "click", + touch: "touchend" +}; +function removeFromArray(array, item) { + const index = array.indexOf(item); + if (index !== -1) { + array.splice(index, 1); + } +} +function nextFrame() { + return new Promise((resolve) => requestAnimationFrame(() => { + requestAnimationFrame(resolve); + })); +} +const shownPoppers = []; +let hidingPopper = null; +const shownPoppersByTheme = {}; +function getShownPoppersByTheme(theme) { + let list = shownPoppersByTheme[theme]; + if (!list) { + list = shownPoppersByTheme[theme] = []; + } + return list; +} +let Element = function() { +}; +if (typeof window !== "undefined") { + Element = window.Element; +} +function defaultPropFactory(prop) { + return function() { + const props = this.$props; + return getDefaultConfig(props.theme, prop); + }; +} +const PROVIDE_KEY = "__floating-vue__popper"; +var PrivatePopper = () => ({ + name: "VPopper", + props: { + theme: { + type: String, + required: true + }, + targetNodes: { + type: Function, + required: true + }, + referenceNode: { + type: Function, + required: true + }, + popperNode: { + type: Function, + required: true + }, + shown: { + type: Boolean, + default: false + }, + showGroup: { + type: String, + default: null + }, + ariaId: { + default: null + }, + disabled: { + type: Boolean, + default: defaultPropFactory("disabled") + }, + positioningDisabled: { + type: Boolean, + default: defaultPropFactory("positioningDisabled") + }, + placement: { + type: String, + default: defaultPropFactory("placement"), + validator: (value) => placements.includes(value) + }, + delay: { + type: [String, Number, Object], + default: defaultPropFactory("delay") + }, + distance: { + type: [Number, String], + default: defaultPropFactory("distance") + }, + skidding: { + type: [Number, String], + default: defaultPropFactory("skidding") + }, + triggers: { + type: Array, + default: defaultPropFactory("triggers") + }, + showTriggers: { + type: [Array, Function], + default: defaultPropFactory("showTriggers") + }, + hideTriggers: { + type: [Array, Function], + default: defaultPropFactory("hideTriggers") + }, + popperTriggers: { + type: Array, + default: defaultPropFactory("popperTriggers") + }, + popperShowTriggers: { + type: [Array, Function], + default: defaultPropFactory("popperShowTriggers") + }, + popperHideTriggers: { + type: [Array, Function], + default: defaultPropFactory("popperHideTriggers") + }, + container: { + type: [String, Object, Element, Boolean], + default: defaultPropFactory("container") + }, + boundary: { + type: [String, Element], + default: defaultPropFactory("boundary") + }, + strategy: { + type: String, + validator: (value) => ["absolute", "fixed"].includes(value), + default: defaultPropFactory("strategy") + }, + autoHide: { + type: [Boolean, Function], + default: defaultPropFactory("autoHide") + }, + handleResize: { + type: Boolean, + default: defaultPropFactory("handleResize") + }, + instantMove: { + type: Boolean, + default: defaultPropFactory("instantMove") + }, + eagerMount: { + type: Boolean, + default: defaultPropFactory("eagerMount") + }, + popperClass: { + type: [String, Array, Object], + default: defaultPropFactory("popperClass") + }, + computeTransformOrigin: { + type: Boolean, + default: defaultPropFactory("computeTransformOrigin") + }, + autoMinSize: { + type: Boolean, + default: defaultPropFactory("autoMinSize") + }, + autoSize: { + type: [Boolean, String], + default: defaultPropFactory("autoSize") + }, + autoMaxSize: { + type: Boolean, + default: defaultPropFactory("autoMaxSize") + }, + autoBoundaryMaxSize: { + type: Boolean, + default: defaultPropFactory("autoBoundaryMaxSize") + }, + preventOverflow: { + type: Boolean, + default: defaultPropFactory("preventOverflow") + }, + overflowPadding: { + type: [Number, String], + default: defaultPropFactory("overflowPadding") + }, + arrowPadding: { + type: [Number, String], + default: defaultPropFactory("arrowPadding") + }, + arrowOverflow: { + type: Boolean, + default: defaultPropFactory("arrowOverflow") + }, + flip: { + type: Boolean, + default: defaultPropFactory("flip") + }, + shift: { + type: Boolean, + default: defaultPropFactory("shift") + }, + shiftCrossAxis: { + type: Boolean, + default: defaultPropFactory("shiftCrossAxis") + }, + noAutoFocus: { + type: Boolean, + default: defaultPropFactory("noAutoFocus") + } + }, + provide() { + return { + [PROVIDE_KEY]: { + parentPopper: this + } + }; + }, + inject: { + [PROVIDE_KEY]: { default: null } + }, + data() { + return { + isShown: false, + isMounted: false, + skipTransition: false, + classes: { + showFrom: false, + showTo: false, + hideFrom: false, + hideTo: true + }, + result: { + x: 0, + y: 0, + placement: "", + strategy: this.strategy, + arrow: { + x: 0, + y: 0, + centerOffset: 0 + }, + transformOrigin: null + }, + shownChildren: /* @__PURE__ */ new Set(), + lastAutoHide: true + }; + }, + computed: { + popperId() { + return this.ariaId != null ? this.ariaId : this.randomId; + }, + shouldMountContent() { + return this.eagerMount || this.isMounted; + }, + slotData() { + return { + popperId: this.popperId, + isShown: this.isShown, + shouldMountContent: this.shouldMountContent, + skipTransition: this.skipTransition, + autoHide: typeof this.autoHide === "function" ? this.lastAutoHide : this.autoHide, + show: this.show, + hide: this.hide, + handleResize: this.handleResize, + onResize: this.onResize, + classes: __spreadProps(__spreadValues({}, this.classes), { + popperClass: this.popperClass + }), + result: this.positioningDisabled ? null : this.result + }; + }, + parentPopper() { + var _a; + return (_a = this[PROVIDE_KEY]) == null ? void 0 : _a.parentPopper; + }, + hasPopperShowTriggerHover() { + var _a, _b; + return ((_a = this.popperTriggers) == null ? void 0 : _a.includes("hover")) || ((_b = this.popperShowTriggers) == null ? void 0 : _b.includes("hover")); + } + }, + watch: __spreadValues(__spreadValues({ + shown: "$_autoShowHide", + disabled(value) { + if (value) { + this.dispose(); + } else { + this.init(); + } + }, + async container() { + if (this.isShown) { + this.$_ensureTeleport(); + await this.$_computePosition(); + } + } + }, [ + "triggers", + "positioningDisabled" + ].reduce((acc, prop) => { + acc[prop] = "$_refreshListeners"; + return acc; + }, {})), [ + "placement", + "distance", + "skidding", + "boundary", + "strategy", + "overflowPadding", + "arrowPadding", + "preventOverflow", + "shift", + "shiftCrossAxis", + "flip" + ].reduce((acc, prop) => { + acc[prop] = "$_computePosition"; + return acc; + }, {})), + created() { + this.$_isDisposed = true; + this.randomId = `popper_${[Math.random(), Date.now()].map((n) => n.toString(36).substring(2, 10)).join("_")}`; + if (this.autoMinSize) { + console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'); + } + if (this.autoMaxSize) { + console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead."); + } + }, + mounted() { + this.init(); + this.$_detachPopperNode(); + }, + activated() { + this.$_autoShowHide(); + }, + deactivated() { + this.hide(); + }, + beforeDestroy() { + this.dispose(); + }, + methods: { + show({ event = null, skipDelay = false, force = false } = {}) { + var _a, _b; + if (((_a = this.parentPopper) == null ? void 0 : _a.lockedChild) && this.parentPopper.lockedChild !== this) + return; + this.$_pendingHide = false; + if (force || !this.disabled) { + if (((_b = this.parentPopper) == null ? void 0 : _b.lockedChild) === this) { + this.parentPopper.lockedChild = null; + } + this.$_scheduleShow(event, skipDelay); + this.$emit("show"); + this.$_showFrameLocked = true; + requestAnimationFrame(() => { + this.$_showFrameLocked = false; + }); + } + this.$emit("update:shown", true); + }, + hide({ event = null, skipDelay = false, skipAiming = false } = {}) { + var _a; + if (this.$_hideInProgress) + return; + if (this.shownChildren.size > 0) { + this.$_pendingHide = true; + return; + } + if (!skipAiming && this.hasPopperShowTriggerHover && this.$_isAimingPopper()) { + if (this.parentPopper) { + this.parentPopper.lockedChild = this; + clearTimeout(this.parentPopper.lockedChildTimer); + this.parentPopper.lockedChildTimer = setTimeout(() => { + if (this.parentPopper.lockedChild === this) { + this.parentPopper.lockedChild.hide({ skipDelay }); + this.parentPopper.lockedChild = null; + } + }, 1e3); + } + return; + } + if (((_a = this.parentPopper) == null ? void 0 : _a.lockedChild) === this) { + this.parentPopper.lockedChild = null; + } + this.$_pendingHide = false; + this.$_scheduleHide(event, skipDelay); + this.$emit("hide"); + this.$emit("update:shown", false); + }, + init() { + if (!this.$_isDisposed) + return; + this.$_isDisposed = false; + this.isMounted = false; + this.$_events = []; + this.$_preventShow = false; + this.$_referenceNode = this.referenceNode(); + this.$_targetNodes = this.targetNodes().filter((e) => e.nodeType === e.ELEMENT_NODE); + this.$_popperNode = this.popperNode(); + this.$_innerNode = this.$_popperNode.querySelector(".v-popper__inner"); + this.$_arrowNode = this.$_popperNode.querySelector(".v-popper__arrow-container"); + this.$_swapTargetAttrs("title", "data-original-title"); + this.$_detachPopperNode(); + if (this.triggers.length) { + this.$_addEventListeners(); + } + if (this.shown) { + this.show(); + } + }, + dispose() { + if (this.$_isDisposed) + return; + this.$_isDisposed = true; + this.$_removeEventListeners(); + this.hide({ skipDelay: true }); + this.$_detachPopperNode(); + this.isMounted = false; + this.isShown = false; + this.$_updateParentShownChildren(false); + this.$_swapTargetAttrs("data-original-title", "title"); + this.$emit("dispose"); + }, + async onResize() { + if (this.isShown) { + await this.$_computePosition(); + this.$emit("resize"); + } + }, + async $_computePosition() { + var _a; + if (this.$_isDisposed || this.positioningDisabled) + return; + const options2 = { + strategy: this.strategy, + middleware: [] + }; + if (this.distance || this.skidding) { + options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.offset)({ + mainAxis: this.distance, + crossAxis: this.skidding + })); + } + const isPlacementAuto = this.placement.startsWith("auto"); + if (isPlacementAuto) { + options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.autoPlacement)({ + alignment: (_a = this.placement.split("-")[1]) != null ? _a : "" + })); + } else { + options2.placement = this.placement; + } + if (this.preventOverflow) { + if (this.shift) { + options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.shift)({ + padding: this.overflowPadding, + boundary: this.boundary, + crossAxis: this.shiftCrossAxis + })); + } + if (!isPlacementAuto && this.flip) { + options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.flip)({ + padding: this.overflowPadding, + boundary: this.boundary + })); + } + } + options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.arrow)({ + element: this.$_arrowNode, + padding: this.arrowPadding + })); + if (this.arrowOverflow) { + options2.middleware.push({ + name: "arrowOverflow", + fn: ({ placement, rects, middlewareData }) => { + let overflow; + const { centerOffset } = middlewareData.arrow; + if (placement.startsWith("top") || placement.startsWith("bottom")) { + overflow = Math.abs(centerOffset) > rects.reference.width / 2; + } else { + overflow = Math.abs(centerOffset) > rects.reference.height / 2; + } + return { + data: { + overflow + } + }; + } + }); + } + if (this.autoMinSize || this.autoSize) { + const autoSize = this.autoSize ? this.autoSize : this.autoMinSize ? "min" : null; + options2.middleware.push({ + name: "autoSize", + fn: ({ rects, placement, middlewareData }) => { + var _a2; + if ((_a2 = middlewareData.autoSize) == null ? void 0 : _a2.skip) { + return {}; + } + let width; + let height; + if (placement.startsWith("top") || placement.startsWith("bottom")) { + width = rects.reference.width; + } else { + height = rects.reference.height; + } + this.$_innerNode.style[autoSize === "min" ? "minWidth" : autoSize === "max" ? "maxWidth" : "width"] = width != null ? `${width}px` : null; + this.$_innerNode.style[autoSize === "min" ? "minHeight" : autoSize === "max" ? "maxHeight" : "height"] = height != null ? `${height}px` : null; + return { + data: { + skip: true + }, + reset: { + rects: true + } + }; + } + }); + } + if (this.autoMaxSize || this.autoBoundaryMaxSize) { + this.$_innerNode.style.maxWidth = null; + this.$_innerNode.style.maxHeight = null; + options2.middleware.push((0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.size)({ + boundary: this.boundary, + padding: this.overflowPadding, + apply: ({ width, height }) => { + this.$_innerNode.style.maxWidth = width != null ? `${width}px` : null; + this.$_innerNode.style.maxHeight = height != null ? `${height}px` : null; + } + })); + } + const data = await (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__.computePosition)(this.$_referenceNode, this.$_popperNode, options2); + Object.assign(this.result, { + x: data.x, + y: data.y, + placement: data.placement, + strategy: data.strategy, + arrow: __spreadValues(__spreadValues({}, data.middlewareData.arrow), data.middlewareData.arrowOverflow) + }); + }, + $_scheduleShow(event = null, skipDelay = false) { + this.$_updateParentShownChildren(true); + this.$_hideInProgress = false; + clearTimeout(this.$_scheduleTimer); + if (hidingPopper && this.instantMove && hidingPopper.instantMove && hidingPopper !== this.parentPopper) { + hidingPopper.$_applyHide(true); + this.$_applyShow(true); + return; + } + if (skipDelay) { + this.$_applyShow(); + } else { + this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay("show")); + } + }, + $_scheduleHide(event = null, skipDelay = false) { + if (this.shownChildren.size > 0) { + this.$_pendingHide = true; + return; + } + this.$_updateParentShownChildren(false); + this.$_hideInProgress = true; + clearTimeout(this.$_scheduleTimer); + if (this.isShown) { + hidingPopper = this; + } + if (skipDelay) { + this.$_applyHide(); + } else { + this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay("hide")); + } + }, + $_computeDelay(type) { + const delay = this.delay; + return parseInt(delay && delay[type] || delay || 0); + }, + async $_applyShow(skipTransition = false) { + clearTimeout(this.$_disposeTimer); + clearTimeout(this.$_scheduleTimer); + this.skipTransition = skipTransition; + if (this.isShown) { + return; + } + this.$_ensureTeleport(); + await nextFrame(); + await this.$_computePosition(); + await this.$_applyShowEffect(); + if (!this.positioningDisabled) { + this.$_registerEventListeners([ + ...(0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__.getScrollParents)(this.$_referenceNode), + ...(0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_1__.getScrollParents)(this.$_popperNode) + ], "scroll", () => { + this.$_computePosition(); + }); + } + }, + async $_applyShowEffect() { + if (this.$_hideInProgress) + return; + if (this.computeTransformOrigin) { + const bounds = this.$_referenceNode.getBoundingClientRect(); + const popperWrapper = this.$_popperNode.querySelector(".v-popper__wrapper"); + const parentBounds = popperWrapper.parentNode.getBoundingClientRect(); + const x = bounds.x + bounds.width / 2 - (parentBounds.left + popperWrapper.offsetLeft); + const y = bounds.y + bounds.height / 2 - (parentBounds.top + popperWrapper.offsetTop); + this.result.transformOrigin = `${x}px ${y}px`; + } + this.isShown = true; + this.$_applyAttrsToTarget({ + "aria-describedby": this.popperId, + "data-popper-shown": "" + }); + const showGroup = this.showGroup; + if (showGroup) { + let popover; + for (let i = 0; i < shownPoppers.length; i++) { + popover = shownPoppers[i]; + if (popover.showGroup !== showGroup) { + popover.hide(); + popover.$emit("close-group"); + } + } + } + shownPoppers.push(this); + document.body.classList.add("v-popper--some-open"); + for (const theme of getAllParentThemes(this.theme)) { + getShownPoppersByTheme(theme).push(this); + document.body.classList.add(`v-popper--some-open--${theme}`); + } + this.$emit("apply-show"); + this.classes.showFrom = true; + this.classes.showTo = false; + this.classes.hideFrom = false; + this.classes.hideTo = false; + await nextFrame(); + this.classes.showFrom = false; + this.classes.showTo = true; + if (!this.noAutoFocus) + this.$_popperNode.focus(); + }, + async $_applyHide(skipTransition = false) { + if (this.shownChildren.size > 0) { + this.$_pendingHide = true; + this.$_hideInProgress = false; + return; + } + clearTimeout(this.$_scheduleTimer); + if (!this.isShown) { + return; + } + this.skipTransition = skipTransition; + removeFromArray(shownPoppers, this); + if (shownPoppers.length === 0) { + document.body.classList.remove("v-popper--some-open"); + } + for (const theme of getAllParentThemes(this.theme)) { + const list = getShownPoppersByTheme(theme); + removeFromArray(list, this); + if (list.length === 0) { + document.body.classList.remove(`v-popper--some-open--${theme}`); + } + } + if (hidingPopper === this) { + hidingPopper = null; + } + this.isShown = false; + this.$_applyAttrsToTarget({ + "aria-describedby": void 0, + "data-popper-shown": void 0 + }); + clearTimeout(this.$_disposeTimer); + const disposeTime = getDefaultConfig(this.theme, "disposeTimeout"); + if (disposeTime !== null) { + this.$_disposeTimer = setTimeout(() => { + if (this.$_popperNode) { + this.$_detachPopperNode(); + this.isMounted = false; + } + }, disposeTime); + } + this.$_removeEventListeners("scroll"); + this.$emit("apply-hide"); + this.classes.showFrom = false; + this.classes.showTo = false; + this.classes.hideFrom = true; + this.classes.hideTo = false; + await nextFrame(); + this.classes.hideFrom = false; + this.classes.hideTo = true; + }, + $_autoShowHide() { + if (this.shown) { + this.show(); + } else { + this.hide(); + } + }, + $_ensureTeleport() { + if (this.$_isDisposed) + return; + let container = this.container; + if (typeof container === "string") { + container = window.document.querySelector(container); + } else if (container === false) { + container = this.$_targetNodes[0].parentNode; + } + if (!container) { + throw new Error("No container for popover: " + this.container); + } + container.appendChild(this.$_popperNode); + this.isMounted = true; + }, + $_addEventListeners() { + const handleShow = (event) => { + if (this.isShown && !this.$_hideInProgress) { + return; + } + event.usedByTooltip = true; + !this.$_preventShow && this.show({ event }); + }; + this.$_registerTriggerListeners(this.$_targetNodes, SHOW_EVENT_MAP, this.triggers, this.showTriggers, handleShow); + this.$_registerTriggerListeners([this.$_popperNode], SHOW_EVENT_MAP, this.popperTriggers, this.popperShowTriggers, handleShow); + const handleHide = (skipAiming) => (event) => { + if (event.usedByTooltip) { + return; + } + this.hide({ event, skipAiming }); + }; + this.$_registerTriggerListeners(this.$_targetNodes, HIDE_EVENT_MAP, this.triggers, this.hideTriggers, handleHide(false)); + this.$_registerTriggerListeners([this.$_popperNode], HIDE_EVENT_MAP, this.popperTriggers, this.popperHideTriggers, handleHide(true)); + }, + $_registerEventListeners(targetNodes, eventType, handler) { + this.$_events.push({ targetNodes, eventType, handler }); + targetNodes.forEach((node) => node.addEventListener(eventType, handler, supportsPassive ? { + passive: true + } : void 0)); + }, + $_registerTriggerListeners(targetNodes, eventMap, commonTriggers, customTrigger, handler) { + let triggers = commonTriggers; + if (customTrigger != null) { + triggers = typeof customTrigger === "function" ? customTrigger(triggers) : customTrigger; + } + triggers.forEach((trigger) => { + const eventType = eventMap[trigger]; + if (eventType) { + this.$_registerEventListeners(targetNodes, eventType, handler); + } + }); + }, + $_removeEventListeners(filterEventType) { + const newList = []; + this.$_events.forEach((listener) => { + const { targetNodes, eventType, handler } = listener; + if (!filterEventType || filterEventType === eventType) { + targetNodes.forEach((node) => node.removeEventListener(eventType, handler)); + } else { + newList.push(listener); + } + }); + this.$_events = newList; + }, + $_refreshListeners() { + if (!this.$_isDisposed) { + this.$_removeEventListeners(); + this.$_addEventListeners(); + } + }, + $_handleGlobalClose(event, touch = false) { + if (this.$_showFrameLocked) + return; + this.hide({ event }); + if (event.closePopover) { + this.$emit("close-directive"); + } else { + this.$emit("auto-hide"); + } + if (touch) { + this.$_preventShow = true; + setTimeout(() => { + this.$_preventShow = false; + }, 300); + } + }, + $_detachPopperNode() { + this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode); + }, + $_swapTargetAttrs(attrFrom, attrTo) { + for (const el of this.$_targetNodes) { + const value = el.getAttribute(attrFrom); + if (value) { + el.removeAttribute(attrFrom); + el.setAttribute(attrTo, value); + } + } + }, + $_applyAttrsToTarget(attrs) { + for (const el of this.$_targetNodes) { + for (const n in attrs) { + const value = attrs[n]; + if (value == null) { + el.removeAttribute(n); + } else { + el.setAttribute(n, value); + } + } + } + }, + $_updateParentShownChildren(value) { + let parent = this.parentPopper; + while (parent) { + if (value) { + parent.shownChildren.add(this.randomId); + } else { + parent.shownChildren.delete(this.randomId); + if (parent.$_pendingHide) { + parent.hide(); + } + } + parent = parent.parentPopper; + } + }, + $_isAimingPopper() { + const referenceBounds = this.$el.getBoundingClientRect(); + if (mouseX >= referenceBounds.left && mouseX <= referenceBounds.right && mouseY >= referenceBounds.top && mouseY <= referenceBounds.bottom) { + const popperBounds = this.$_popperNode.getBoundingClientRect(); + const vectorX = mouseX - mousePreviousX; + const vectorY = mouseY - mousePreviousY; + const distance = popperBounds.left + popperBounds.width / 2 - mousePreviousX + (popperBounds.top + popperBounds.height / 2) - mousePreviousY; + const newVectorLength = distance + popperBounds.width + popperBounds.height; + const edgeX = mousePreviousX + vectorX * newVectorLength; + const edgeY = mousePreviousY + vectorY * newVectorLength; + return lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.left, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.top, popperBounds.right, popperBounds.top) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.right, popperBounds.top, popperBounds.right, popperBounds.bottom) || lineIntersectsLine(mousePreviousX, mousePreviousY, edgeX, edgeY, popperBounds.left, popperBounds.bottom, popperBounds.right, popperBounds.bottom); + } + return false; + } + }, + render() { + return this.$scopedSlots.default(this.slotData)[0]; + } +}); +if (typeof document !== "undefined" && typeof window !== "undefined") { + if (isIOS) { + document.addEventListener("touchstart", handleGlobalMousedown, supportsPassive ? { + passive: true, + capture: true + } : true); + document.addEventListener("touchend", handleGlobalTouchend, supportsPassive ? { + passive: true, + capture: true + } : true); + } else { + window.addEventListener("mousedown", handleGlobalMousedown, true); + window.addEventListener("click", handleGlobalClick, true); + } + window.addEventListener("resize", computePositionAllShownPoppers); +} +function handleGlobalMousedown(event) { + for (let i = 0; i < shownPoppers.length; i++) { + const popper = shownPoppers[i]; + try { + const popperContent = popper.popperNode(); + popper.$_mouseDownContains = popperContent.contains(event.target); + } catch (e) { + } + } +} +function handleGlobalClick(event) { + handleGlobalClose(event); +} +function handleGlobalTouchend(event) { + handleGlobalClose(event, true); +} +function handleGlobalClose(event, touch = false) { + const preventClose = {}; + for (let i = shownPoppers.length - 1; i >= 0; i--) { + const popper = shownPoppers[i]; + try { + const contains = popper.$_containsGlobalTarget = isContainingEventTarget(popper, event); + popper.$_pendingHide = false; + requestAnimationFrame(() => { + popper.$_pendingHide = false; + if (preventClose[popper.randomId]) + return; + if (shouldAutoHide(popper, contains, event)) { + popper.$_handleGlobalClose(event, touch); + if (!event.closeAllPopover && event.closePopover && contains) { + let parent2 = popper.parentPopper; + while (parent2) { + preventClose[parent2.randomId] = true; + parent2 = parent2.parentPopper; + } + return; + } + let parent = popper.parentPopper; + while (parent) { + if (shouldAutoHide(parent, parent.$_containsGlobalTarget, event)) { + parent.$_handleGlobalClose(event, touch); + } else { + break; + } + parent = parent.parentPopper; + } + } + }); + } catch (e) { + } + } +} +function isContainingEventTarget(popper, event) { + const popperContent = popper.popperNode(); + return popper.$_mouseDownContains || popperContent.contains(event.target); +} +function shouldAutoHide(popper, contains, event) { + return event.closeAllPopover || event.closePopover && contains || getAutoHideResult(popper, event) && !contains; +} +function getAutoHideResult(popper, event) { + if (typeof popper.autoHide === "function") { + const result = popper.autoHide(event); + popper.lastAutoHide = result; + return result; + } + return popper.autoHide; +} +function computePositionAllShownPoppers(event) { + for (let i = 0; i < shownPoppers.length; i++) { + const popper = shownPoppers[i]; + popper.$_computePosition(event); + } +} +function hideAllPoppers() { + for (let i = 0; i < shownPoppers.length; i++) { + const popper = shownPoppers[i]; + popper.hide(); + } +} +let mousePreviousX = 0; +let mousePreviousY = 0; +let mouseX = 0; +let mouseY = 0; +if (typeof window !== "undefined") { + window.addEventListener("mousemove", (event) => { + mousePreviousX = mouseX; + mousePreviousY = mouseY; + mouseX = event.clientX; + mouseY = event.clientY; + }, supportsPassive ? { + passive: true + } : void 0); +} +function lineIntersectsLine(x1, y1, x2, y2, x3, y3, x4, y4) { + const uA = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)); + const uB = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1)); + return uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1; +} +function getInternetExplorerVersion() { + var ua = window.navigator.userAgent; + var msie = ua.indexOf("MSIE "); + if (msie > 0) { + return parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)), 10); + } + var trident = ua.indexOf("Trident/"); + if (trident > 0) { + var rv = ua.indexOf("rv:"); + return parseInt(ua.substring(rv + 3, ua.indexOf(".", rv)), 10); + } + var edge = ua.indexOf("Edge/"); + if (edge > 0) { + return parseInt(ua.substring(edge + 5, ua.indexOf(".", edge)), 10); + } + return -1; +} +var isIE; +function initCompat() { + if (!initCompat.init) { + initCompat.init = true; + isIE = getInternetExplorerVersion() !== -1; + } +} +var script = { + name: "ResizeObserver", + props: { + emitOnMount: { + type: Boolean, + default: false + }, + ignoreWidth: { + type: Boolean, + default: false + }, + ignoreHeight: { + type: Boolean, + default: false + } + }, + mounted: function mounted() { + var _this = this; + initCompat(); + this.$nextTick(function() { + _this._w = _this.$el.offsetWidth; + _this._h = _this.$el.offsetHeight; + if (_this.emitOnMount) { + _this.emitSize(); + } + }); + var object = document.createElement("object"); + this._resizeObject = object; + object.setAttribute("aria-hidden", "true"); + object.setAttribute("tabindex", -1); + object.onload = this.addResizeHandlers; + object.type = "text/html"; + if (isIE) { + this.$el.appendChild(object); + } + object.data = "about:blank"; + if (!isIE) { + this.$el.appendChild(object); + } + }, + beforeDestroy: function beforeDestroy() { + this.removeResizeHandlers(); + }, + methods: { + compareAndNotify: function compareAndNotify() { + if (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) { + this._w = this.$el.offsetWidth; + this._h = this.$el.offsetHeight; + this.emitSize(); + } + }, + emitSize: function emitSize() { + this.$emit("notify", { + width: this._w, + height: this._h + }); + }, + addResizeHandlers: function addResizeHandlers() { + this._resizeObject.contentDocument.defaultView.addEventListener("resize", this.compareAndNotify); + this.compareAndNotify(); + }, + removeResizeHandlers: function removeResizeHandlers() { + if (this._resizeObject && this._resizeObject.onload) { + if (!isIE && this._resizeObject.contentDocument) { + this._resizeObject.contentDocument.defaultView.removeEventListener("resize", this.compareAndNotify); + } + this.$el.removeChild(this._resizeObject); + this._resizeObject.onload = null; + this._resizeObject = null; + } + } + } +}; +function normalizeComponent$1(template, style, script2, scopeId, isFunctionalTemplate, moduleIdentifier, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { + if (typeof shadowMode !== "boolean") { + createInjectorSSR = createInjector; + createInjector = shadowMode; + shadowMode = false; + } + var options2 = typeof script2 === "function" ? script2.options : script2; + if (template && template.render) { + options2.render = template.render; + options2.staticRenderFns = template.staticRenderFns; + options2._compiled = true; + if (isFunctionalTemplate) { + options2.functional = true; + } + } + if (scopeId) { + options2._scopeId = scopeId; + } + var hook; + if (moduleIdentifier) { + hook = function hook2(context) { + context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; + if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") { + context = __VUE_SSR_CONTEXT__; + } + if (style) { + style.call(this, createInjectorSSR(context)); + } + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier); + } + }; + options2._ssrRegister = hook; + } else if (style) { + hook = shadowMode ? function(context) { + style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot)); + } : function(context) { + style.call(this, createInjector(context)); + }; + } + if (hook) { + if (options2.functional) { + var originalRender = options2.render; + options2.render = function renderWithStyleInjection(h, context) { + hook.call(context); + return originalRender(h, context); + }; + } else { + var existing = options2.beforeCreate; + options2.beforeCreate = existing ? [].concat(existing, hook) : [hook]; + } + } + return script2; +} +var __vue_script__ = script; +var __vue_render__ = function __vue_render__2() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { + staticClass: "resize-observer", + attrs: { + tabindex: "-1" + } + }); +}; +var __vue_staticRenderFns__ = []; +__vue_render__._withStripped = true; +var __vue_inject_styles__ = void 0; +var __vue_scope_id__ = "data-v-8859cc6c"; +var __vue_module_identifier__ = void 0; +var __vue_is_functional_template__ = false; +var __vue_component__ = /* @__PURE__ */ normalizeComponent$1({ + render: __vue_render__, + staticRenderFns: __vue_staticRenderFns__ +}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, void 0, void 0, void 0); +function install$1(Vue2) { + Vue2.component("resize-observer", __vue_component__); + Vue2.component("ResizeObserver", __vue_component__); +} +var plugin$1 = { + version: "1.0.1", + install: install$1 +}; +var GlobalVue$1 = null; +if (typeof window !== "undefined") { + GlobalVue$1 = window.Vue; +} else if (typeof __webpack_require__.g !== "undefined") { + GlobalVue$1 = __webpack_require__.g.Vue; +} +if (GlobalVue$1) { + GlobalVue$1.use(plugin$1); +} +var PrivateThemeClass = { + computed: { + themeClass() { + return getThemeClasses(this.theme); + } + } +}; +var __vue2_script$5 = { + name: "VPopperContent", + components: { + ResizeObserver: __vue_component__ + }, + mixins: [ + PrivateThemeClass + ], + props: { + popperId: String, + theme: String, + shown: Boolean, + mounted: Boolean, + skipTransition: Boolean, + autoHide: Boolean, + handleResize: Boolean, + classes: Object, + result: Object + }, + methods: { + toPx(value) { + if (value != null && !isNaN(value)) { + return `${value}px`; + } + return null; + } + } +}; +var render$2 = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("div", { ref: "popover", staticClass: "v-popper__popper", class: [ + _vm.themeClass, + _vm.classes.popperClass, + { + "v-popper__popper--shown": _vm.shown, + "v-popper__popper--hidden": !_vm.shown, + "v-popper__popper--show-from": _vm.classes.showFrom, + "v-popper__popper--show-to": _vm.classes.showTo, + "v-popper__popper--hide-from": _vm.classes.hideFrom, + "v-popper__popper--hide-to": _vm.classes.hideTo, + "v-popper__popper--skip-transition": _vm.skipTransition, + "v-popper__popper--arrow-overflow": _vm.result && _vm.result.arrow.overflow, + "v-popper__popper--no-positioning": !_vm.result + } + ], style: _vm.result ? { + position: _vm.result.strategy, + transform: "translate3d(" + Math.round(_vm.result.x) + "px," + Math.round(_vm.result.y) + "px,0)" + } : void 0, attrs: { "id": _vm.popperId, "aria-hidden": _vm.shown ? "false" : "true", "tabindex": _vm.autoHide ? 0 : void 0, "data-popper-placement": _vm.result ? _vm.result.placement : void 0 }, on: { "keyup": function($event) { + if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "esc", 27, $event.key, ["Esc", "Escape"])) { + return null; + } + _vm.autoHide && _vm.$emit("hide"); + } } }, [_c("div", { staticClass: "v-popper__backdrop", on: { "click": function($event) { + _vm.autoHide && _vm.$emit("hide"); + } } }), _c("div", { staticClass: "v-popper__wrapper", style: _vm.result ? { + transformOrigin: _vm.result.transformOrigin + } : void 0 }, [_c("div", { ref: "inner", staticClass: "v-popper__inner" }, [_vm.mounted ? [_c("div", [_vm._t("default")], 2), _vm.handleResize ? _c("ResizeObserver", { on: { "notify": function($event) { + return _vm.$emit("resize", $event); + } } }) : _vm._e()] : _vm._e()], 2), _c("div", { ref: "arrow", staticClass: "v-popper__arrow-container", style: _vm.result ? { + left: _vm.toPx(_vm.result.arrow.x), + top: _vm.toPx(_vm.result.arrow.y) + } : void 0 }, [_c("div", { staticClass: "v-popper__arrow-outer" }), _c("div", { staticClass: "v-popper__arrow-inner" })])])]); +}; +var staticRenderFns$2 = []; +var PopperContent_vue_vue_type_style_index_0_lang = ""; +function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { + var options2 = typeof scriptExports === "function" ? scriptExports.options : scriptExports; + if (render2) { + options2.render = render2; + options2.staticRenderFns = staticRenderFns2; + options2._compiled = true; + } + if (functionalTemplate) { + options2.functional = true; + } + if (scopeId) { + options2._scopeId = "data-v-" + scopeId; + } + var hook; + if (moduleIdentifier) { + hook = function(context) { + context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; + if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") { + context = __VUE_SSR_CONTEXT__; + } + if (injectStyles) { + injectStyles.call(this, context); + } + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier); + } + }; + options2._ssrRegister = hook; + } else if (injectStyles) { + hook = shadowMode ? function() { + injectStyles.call(this, (options2.functional ? this.parent : this).$root.$options.shadowRoot); + } : injectStyles; + } + if (hook) { + if (options2.functional) { + options2._injectStyles = hook; + var originalRender = options2.render; + options2.render = function renderWithStyleInjection(h, context) { + hook.call(context); + return originalRender(h, context); + }; + } else { + var existing = options2.beforeCreate; + options2.beforeCreate = existing ? [].concat(existing, hook) : [hook]; + } + } + return { + exports: scriptExports, + options: options2 + }; +} +const __cssModules$5 = {}; +var __component__$5 = /* @__PURE__ */ normalizeComponent(__vue2_script$5, render$2, staticRenderFns$2, false, __vue2_injectStyles$5, null, null, null); +function __vue2_injectStyles$5(context) { + for (let o in __cssModules$5) { + this[o] = __cssModules$5[o]; + } +} +var PrivatePopperContent = /* @__PURE__ */ function() { + return __component__$5.exports; +}(); +var PrivatePopperMethods = { + methods: { + show(...args) { + return this.$refs.popper.show(...args); + }, + hide(...args) { + return this.$refs.popper.hide(...args); + }, + dispose(...args) { + return this.$refs.popper.dispose(...args); + }, + onResize(...args) { + return this.$refs.popper.onResize(...args); + } + } +}; +var __vue2_script$4 = { + name: "VPopperWrapper", + components: { + Popper: PrivatePopper(), + PopperContent: PrivatePopperContent + }, + mixins: [ + PrivatePopperMethods, + PrivateThemeClass + ], + inheritAttrs: false, + props: { + theme: { + type: String, + default() { + return this.$options.vPopperTheme; + } + } + }, + methods: { + getTargetNodes() { + return Array.from(this.$refs.reference.children).filter((node) => node !== this.$refs.popperContent.$el); + } + } +}; +var render$1 = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("Popper", _vm._g(_vm._b({ ref: "popper", attrs: { "theme": _vm.theme, "target-nodes": _vm.getTargetNodes, "reference-node": function() { + return _vm.$refs.reference; + }, "popper-node": function() { + return _vm.$refs.popperContent.$el; + } }, scopedSlots: _vm._u([{ key: "default", fn: function(ref) { + var popperId = ref.popperId; + var isShown = ref.isShown; + var shouldMountContent = ref.shouldMountContent; + var skipTransition = ref.skipTransition; + var autoHide = ref.autoHide; + var show = ref.show; + var hide = ref.hide; + var handleResize = ref.handleResize; + var onResize = ref.onResize; + var classes = ref.classes; + var result = ref.result; + return [_c("div", { ref: "reference", staticClass: "v-popper", class: [ + _vm.themeClass, + { + "v-popper--shown": isShown + } + ] }, [_vm._t("default", null, { "shown": isShown, "show": show, "hide": hide }), _c("PopperContent", { ref: "popperContent", attrs: { "popper-id": popperId, "theme": _vm.theme, "shown": isShown, "mounted": shouldMountContent, "skip-transition": skipTransition, "auto-hide": autoHide, "handle-resize": handleResize, "classes": classes, "result": result }, on: { "hide": hide, "resize": onResize } }, [_vm._t("popper", null, { "shown": isShown, "hide": hide })], 2)], 2)]; + } }], null, true) }, "Popper", _vm.$attrs, false), _vm.$listeners)); +}; +var staticRenderFns$1 = []; +const __cssModules$4 = {}; +var __component__$4 = /* @__PURE__ */ normalizeComponent(__vue2_script$4, render$1, staticRenderFns$1, false, __vue2_injectStyles$4, null, null, null); +function __vue2_injectStyles$4(context) { + for (let o in __cssModules$4) { + this[o] = __cssModules$4[o]; + } +} +var PrivatePopperWrapper = /* @__PURE__ */ function() { + return __component__$4.exports; +}(); +var __vue2_script$3 = __spreadProps(__spreadValues({}, PrivatePopperWrapper), { + name: "VDropdown", + vPopperTheme: "dropdown" +}); +var Dropdown_vue_vue_type_style_index_0_lang = ""; +let __vue2_render$2, __vue2_staticRenderFns$2; +const __cssModules$3 = {}; +var __component__$3 = /* @__PURE__ */ normalizeComponent(__vue2_script$3, __vue2_render$2, __vue2_staticRenderFns$2, false, __vue2_injectStyles$3, null, null, null); +function __vue2_injectStyles$3(context) { + for (let o in __cssModules$3) { + this[o] = __cssModules$3[o]; + } +} +var PrivateDropdown = /* @__PURE__ */ function() { + return __component__$3.exports; +}(); +var __vue2_script$2 = __spreadProps(__spreadValues({}, PrivatePopperWrapper), { + name: "VMenu", + vPopperTheme: "menu" +}); +let __vue2_render$1, __vue2_staticRenderFns$1; +const __cssModules$2 = {}; +var __component__$2 = /* @__PURE__ */ normalizeComponent(__vue2_script$2, __vue2_render$1, __vue2_staticRenderFns$1, false, __vue2_injectStyles$2, null, null, null); +function __vue2_injectStyles$2(context) { + for (let o in __cssModules$2) { + this[o] = __cssModules$2[o]; + } +} +var PrivateMenu = /* @__PURE__ */ function() { + return __component__$2.exports; +}(); +var __vue2_script$1 = __spreadProps(__spreadValues({}, PrivatePopperWrapper), { + name: "VTooltip", + vPopperTheme: "tooltip" +}); +var Tooltip_vue_vue_type_style_index_0_lang = ""; +let __vue2_render, __vue2_staticRenderFns; +const __cssModules$1 = {}; +var __component__$1 = /* @__PURE__ */ normalizeComponent(__vue2_script$1, __vue2_render, __vue2_staticRenderFns, false, __vue2_injectStyles$1, null, null, null); +function __vue2_injectStyles$1(context) { + for (let o in __cssModules$1) { + this[o] = __cssModules$1[o]; + } +} +var PrivateTooltip = /* @__PURE__ */ function() { + return __component__$1.exports; +}(); +var __vue2_script = { + name: "VTooltipDirective", + components: { + Popper: PrivatePopper(), + PopperContent: PrivatePopperContent + }, + mixins: [ + PrivatePopperMethods + ], + inheritAttrs: false, + props: { + theme: { + type: String, + default: "tooltip" + }, + html: { + type: Boolean, + default() { + return getDefaultConfig(this.theme, "html"); + } + }, + content: { + type: [String, Number, Function], + default: null + }, + loadingContent: { + type: String, + default() { + return getDefaultConfig(this.theme, "loadingContent"); + } + } + }, + data() { + return { + asyncContent: null + }; + }, + computed: { + isContentAsync() { + return typeof this.content === "function"; + }, + loading() { + return this.isContentAsync && this.asyncContent == null; + }, + finalContent() { + if (this.isContentAsync) { + return this.loading ? this.loadingContent : this.asyncContent; + } + return this.content; + } + }, + watch: { + content: { + handler() { + this.fetchContent(true); + }, + immediate: true + }, + async finalContent(value) { + await this.$nextTick(); + this.$refs.popper.onResize(); + } + }, + created() { + this.$_fetchId = 0; + }, + methods: { + fetchContent(force) { + if (typeof this.content === "function" && this.$_isShown && (force || !this.$_loading && this.asyncContent == null)) { + this.asyncContent = null; + this.$_loading = true; + const fetchId = ++this.$_fetchId; + const result = this.content(this); + if (result.then) { + result.then((res) => this.onResult(fetchId, res)); + } else { + this.onResult(fetchId, result); + } + } + }, + onResult(fetchId, result) { + if (fetchId !== this.$_fetchId) + return; + this.$_loading = false; + this.asyncContent = result; + }, + onShow() { + this.$_isShown = true; + this.fetchContent(); + }, + onHide() { + this.$_isShown = false; + } + } +}; +var render = function() { + var _vm = this; + var _h = _vm.$createElement; + var _c = _vm._self._c || _h; + return _c("Popper", _vm._g(_vm._b({ ref: "popper", attrs: { "theme": _vm.theme, "popper-node": function() { + return _vm.$refs.popperContent.$el; + } }, on: { "apply-show": _vm.onShow, "apply-hide": _vm.onHide }, scopedSlots: _vm._u([{ key: "default", fn: function(ref) { + var popperId = ref.popperId; + var isShown = ref.isShown; + var shouldMountContent = ref.shouldMountContent; + var skipTransition = ref.skipTransition; + var autoHide = ref.autoHide; + var hide = ref.hide; + var handleResize = ref.handleResize; + var onResize = ref.onResize; + var classes = ref.classes; + var result = ref.result; + return [_c("PopperContent", { ref: "popperContent", class: { + "v-popper--tooltip-loading": _vm.loading + }, attrs: { "popper-id": popperId, "theme": _vm.theme, "shown": isShown, "mounted": shouldMountContent, "skip-transition": skipTransition, "auto-hide": autoHide, "handle-resize": handleResize, "classes": classes, "result": result }, on: { "hide": hide, "resize": onResize } }, [_vm.html ? _c("div", { domProps: { "innerHTML": _vm._s(_vm.finalContent) } }) : _c("div", { domProps: { "textContent": _vm._s(_vm.finalContent) } })])]; + } }]) }, "Popper", _vm.$attrs, false), _vm.$listeners)); +}; +var staticRenderFns = []; +const __cssModules = {}; +var __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null); +function __vue2_injectStyles(context) { + for (let o in __cssModules) { + this[o] = __cssModules[o]; + } +} +var PrivateTooltipDirective = /* @__PURE__ */ function() { + return __component__.exports; +}(); +const TARGET_CLASS = "v-popper--has-tooltip"; +function getPlacement(options2, modifiers) { + let result = options2.placement; + if (!result && modifiers) { + for (const pos of placements) { + if (modifiers[pos]) { + result = pos; + } + } + } + if (!result) { + result = getDefaultConfig(options2.theme || "tooltip", "placement"); + } + return result; +} +function getOptions(el, value, modifiers) { + let options2; + const type = typeof value; + if (type === "string") { + options2 = { content: value }; + } else if (value && type === "object") { + options2 = value; + } else { + options2 = { content: false }; + } + options2.placement = getPlacement(options2, modifiers); + options2.targetNodes = () => [el]; + options2.referenceNode = () => el; + return options2; +} +function createTooltip(el, value, modifiers) { + const options2 = getOptions(el, value, modifiers); + const tooltipApp = el.$_popper = new vue__WEBPACK_IMPORTED_MODULE_2__["default"]({ + mixins: [ + PrivatePopperMethods + ], + data() { + return { + options: options2 + }; + }, + render(h) { + const _a = this.options, { + theme, + html, + content, + loadingContent + } = _a, otherOptions = __objRest(_a, [ + "theme", + "html", + "content", + "loadingContent" + ]); + return h(PrivateTooltipDirective, { + props: { + theme, + html, + content, + loadingContent + }, + attrs: otherOptions, + ref: "popper" + }); + }, + devtools: { + hide: true + } + }); + const mountTarget = document.createElement("div"); + document.body.appendChild(mountTarget); + tooltipApp.$mount(mountTarget); + if (el.classList) { + el.classList.add(TARGET_CLASS); + } + return tooltipApp; +} +function destroyTooltip(el) { + if (el.$_popper) { + el.$_popper.$destroy(); + delete el.$_popper; + delete el.$_popperOldShown; + } + if (el.classList) { + el.classList.remove(TARGET_CLASS); + } +} +function bind(el, { value, oldValue, modifiers }) { + const options2 = getOptions(el, value, modifiers); + if (!options2.content || getDefaultConfig(options2.theme || "tooltip", "disabled")) { + destroyTooltip(el); + } else { + let tooltipApp; + if (el.$_popper) { + tooltipApp = el.$_popper; + tooltipApp.options = options2; + } else { + tooltipApp = createTooltip(el, value, modifiers); + } + if (typeof value.shown !== "undefined" && value.shown !== el.$_popperOldShown) { + el.$_popperOldShown = value.shown; + value.shown ? tooltipApp.show() : tooltipApp.hide(); + } + } +} +var PrivateVTooltip = { + bind, + update: bind, + unbind(el) { + destroyTooltip(el); + } +}; +function addListeners(el) { + el.addEventListener("click", onClick); + el.addEventListener("touchstart", onTouchStart, supportsPassive ? { + passive: true + } : false); +} +function removeListeners(el) { + el.removeEventListener("click", onClick); + el.removeEventListener("touchstart", onTouchStart); + el.removeEventListener("touchend", onTouchEnd); + el.removeEventListener("touchcancel", onTouchCancel); +} +function onClick(event) { + const el = event.currentTarget; + event.closePopover = !el.$_vclosepopover_touch; + event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all; +} +function onTouchStart(event) { + if (event.changedTouches.length === 1) { + const el = event.currentTarget; + el.$_vclosepopover_touch = true; + const touch = event.changedTouches[0]; + el.$_vclosepopover_touchPoint = touch; + el.addEventListener("touchend", onTouchEnd); + el.addEventListener("touchcancel", onTouchCancel); + } +} +function onTouchEnd(event) { + const el = event.currentTarget; + el.$_vclosepopover_touch = false; + if (event.changedTouches.length === 1) { + const touch = event.changedTouches[0]; + const firstTouch = el.$_vclosepopover_touchPoint; + event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20; + event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all; + } +} +function onTouchCancel(event) { + const el = event.currentTarget; + el.$_vclosepopover_touch = false; +} +var PrivateVClosePopper = { + bind(el, { value, modifiers }) { + el.$_closePopoverModifiers = modifiers; + if (typeof value === "undefined" || value) { + addListeners(el); + } + }, + update(el, { value, oldValue, modifiers }) { + el.$_closePopoverModifiers = modifiers; + if (value !== oldValue) { + if (typeof value === "undefined" || value) { + addListeners(el); + } else { + removeListeners(el); + } + } + }, + unbind(el) { + removeListeners(el); + } +}; +const options = config; +const VTooltip = PrivateVTooltip; +const VClosePopper = PrivateVClosePopper; +const Dropdown = PrivateDropdown; +const Menu = PrivateMenu; +const Popper = PrivatePopper; +const PopperContent = PrivatePopperContent; +const PopperMethods = PrivatePopperMethods; +const PopperWrapper = PrivatePopperWrapper; +const ThemeClass = PrivateThemeClass; +const Tooltip = PrivateTooltip; +const TooltipDirective = PrivateTooltipDirective; +function install(app, options2 = {}) { + if (app.$_vTooltipInstalled) + return; + app.$_vTooltipInstalled = true; + assign(config, options2); + app.directive("tooltip", PrivateVTooltip); + app.directive("close-popper", PrivateVClosePopper); + app.component("v-tooltip", PrivateTooltip); + app.component("VTooltip", PrivateTooltip); + app.component("v-dropdown", PrivateDropdown); + app.component("VDropdown", PrivateDropdown); + app.component("v-menu", PrivateMenu); + app.component("VMenu", PrivateMenu); +} +const plugin = { + version: "1.0.0-beta.19", + install, + options: config +}; +let GlobalVue = null; +if (typeof window !== "undefined") { + GlobalVue = window.Vue; +} else if (typeof __webpack_require__.g !== "undefined") { + GlobalVue = __webpack_require__.g.Vue; +} +if (GlobalVue) { + GlobalVue.use(plugin); +} + + + +/***/ }), + +/***/ "./node_modules/focus-trap/dist/focus-trap.esm.js": +/*!********************************************************!*\ + !*** ./node_modules/focus-trap/dist/focus-trap.esm.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ createFocusTrap: () => (/* binding */ createFocusTrap) +/* harmony export */ }); +/* harmony import */ var tabbable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tabbable */ "./node_modules/tabbable/dist/index.esm.js"); +/*! +* focus-trap 7.6.1 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/ + + +function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; +} +function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); +} +function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { + value: t, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[r] = t, e; +} +function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); +} +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; +} +function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + _defineProperty(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; +} +function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); +} +function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); +} +function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : i + ""; +} +function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } +} + +var activeFocusTraps = { + activateTrap: function activateTrap(trapStack, trap) { + if (trapStack.length > 0) { + var activeTrap = trapStack[trapStack.length - 1]; + if (activeTrap !== trap) { + activeTrap.pause(); + } + } + var trapIndex = trapStack.indexOf(trap); + if (trapIndex === -1) { + trapStack.push(trap); + } else { + // move this existing trap to the front of the queue + trapStack.splice(trapIndex, 1); + trapStack.push(trap); + } + }, + deactivateTrap: function deactivateTrap(trapStack, trap) { + var trapIndex = trapStack.indexOf(trap); + if (trapIndex !== -1) { + trapStack.splice(trapIndex, 1); + } + if (trapStack.length > 0) { + trapStack[trapStack.length - 1].unpause(); + } + } +}; +var isSelectableInput = function isSelectableInput(node) { + return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function'; +}; +var isEscapeEvent = function isEscapeEvent(e) { + return (e === null || e === void 0 ? void 0 : e.key) === 'Escape' || (e === null || e === void 0 ? void 0 : e.key) === 'Esc' || (e === null || e === void 0 ? void 0 : e.keyCode) === 27; +}; +var isTabEvent = function isTabEvent(e) { + return (e === null || e === void 0 ? void 0 : e.key) === 'Tab' || (e === null || e === void 0 ? void 0 : e.keyCode) === 9; +}; + +// checks for TAB by default +var isKeyForward = function isKeyForward(e) { + return isTabEvent(e) && !e.shiftKey; +}; + +// checks for SHIFT+TAB by default +var isKeyBackward = function isKeyBackward(e) { + return isTabEvent(e) && e.shiftKey; +}; +var delay = function delay(fn) { + return setTimeout(fn, 0); +}; + +// Array.find/findIndex() are not supported on IE; this replicates enough +// of Array.findIndex() for our needs +var findIndex = function findIndex(arr, fn) { + var idx = -1; + arr.every(function (value, i) { + if (fn(value)) { + idx = i; + return false; // break + } + return true; // next + }); + return idx; +}; + +/** + * Get an option's value when it could be a plain value, or a handler that provides + * the value. + * @param {*} value Option's value to check. + * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function. + * @returns {*} The `value`, or the handler's returned value. + */ +var valueOrHandler = function valueOrHandler(value) { + for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + params[_key - 1] = arguments[_key]; + } + return typeof value === 'function' ? value.apply(void 0, params) : value; +}; +var getActualTarget = function getActualTarget(event) { + // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the + // shadow host. However, event.target.composedPath() will be an array of + // nodes "clicked" from inner-most (the actual element inside the shadow) to + // outer-most (the host HTML document). If we have access to composedPath(), + // then use its first element; otherwise, fall back to event.target (and + // this only works for an _open_ shadow DOM; otherwise, + // composedPath()[0] === event.target always). + return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target; +}; + +// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this +// current instance use the same stack if `userOptions.trapStack` isn't specified +var internalTrapStack = []; +var createFocusTrap = function createFocusTrap(elements, userOptions) { + // SSR: a live trap shouldn't be created in this type of environment so this + // should be safe code to execute if the `document` option isn't specified + var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document; + var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack; + var config = _objectSpread2({ + returnFocusOnDeactivate: true, + escapeDeactivates: true, + delayInitialFocus: true, + isKeyForward: isKeyForward, + isKeyBackward: isKeyBackward + }, userOptions); + var state = { + // containers given to createFocusTrap() + // @type {Array} + containers: [], + // list of objects identifying tabbable nodes in `containers` in the trap + // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap + // is active, but the trap should never get to a state where there isn't at least one group + // with at least one tabbable node in it (that would lead to an error condition that would + // result in an error being thrown) + // @type {Array<{ + // container: HTMLElement, + // tabbableNodes: Array, // empty if none + // focusableNodes: Array, // empty if none + // posTabIndexesFound: boolean, + // firstTabbableNode: HTMLElement|undefined, + // lastTabbableNode: HTMLElement|undefined, + // firstDomTabbableNode: HTMLElement|undefined, + // lastDomTabbableNode: HTMLElement|undefined, + // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined + // }>} + containerGroups: [], + // same order/length as `containers` list + + // references to objects in `containerGroups`, but only those that actually have + // tabbable nodes in them + // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__ + // the same length + tabbableGroups: [], + nodeFocusedBeforeActivation: null, + mostRecentlyFocusedNode: null, + active: false, + paused: false, + // timer ID for when delayInitialFocus is true and initial focus in this trap + // has been delayed during activation + delayInitialFocusTimer: undefined, + // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any + recentNavEvent: undefined + }; + var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later + + /** + * Gets a configuration option value. + * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set, + * value will be taken from this object. Otherwise, value will be taken from base configuration. + * @param {string} optionName Name of the option whose value is sought. + * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName` + * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used. + */ + var getOption = function getOption(configOverrideOptions, optionName, configOptionName) { + return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName]; + }; + + /** + * Finds the index of the container that contains the element. + * @param {HTMLElement} element + * @param {Event} [event] If available, and `element` isn't directly found in any container, + * the event's composed path is used to see if includes any known trap containers in the + * case where the element is inside a Shadow DOM. + * @returns {number} Index of the container in either `state.containers` or + * `state.containerGroups` (the order/length of these lists are the same); -1 + * if the element isn't found. + */ + var findContainerIndex = function findContainerIndex(element, event) { + var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined; + // NOTE: search `containerGroups` because it's possible a group contains no tabbable + // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`) + // and we still need to find the element in there + return state.containerGroups.findIndex(function (_ref) { + var container = _ref.container, + tabbableNodes = _ref.tabbableNodes; + return container.contains(element) || (// fall back to explicit tabbable search which will take into consideration any + // web components if the `tabbableOptions.getShadowRoot` option was used for + // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't + // look inside web components even if open) + composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) { + return node === element; + }); + }); + }; + + /** + * Gets the node for the given option, which is expected to be an option that + * can be either a DOM node, a string that is a selector to get a node, `false` + * (if a node is explicitly NOT given), or a function that returns any of these + * values. + * @param {string} optionName + * @param {Object} options + * @param {boolean} [options.hasFallback] True if the option could be a selector string + * and the option allows for a fallback scenario in the case where the selector is + * valid but does not match a node (i.e. the queried node doesn't exist in the DOM). + * @param {Array} [options.params] Params to pass to the option if it's a function. + * @returns {undefined | null | false | HTMLElement | SVGElement} Returns + * `undefined` if the option is not specified; `null` if the option didn't resolve + * to a node but `options.hasFallback=true`, `false` if the option resolved to `false` + * (node explicitly not given); otherwise, the resolved DOM node. + * @throws {Error} If the option is set, not `false`, and is not, or does not + * resolve to a node, unless the option is a selector string and `options.hasFallback=true`. + */ + var getNodeForOption = function getNodeForOption(optionName) { + var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref2$hasFallback = _ref2.hasFallback, + hasFallback = _ref2$hasFallback === void 0 ? false : _ref2$hasFallback, + _ref2$params = _ref2.params, + params = _ref2$params === void 0 ? [] : _ref2$params; + var optionValue = config[optionName]; + if (typeof optionValue === 'function') { + optionValue = optionValue.apply(void 0, _toConsumableArray(params)); + } + if (optionValue === true) { + optionValue = undefined; // use default value + } + if (!optionValue) { + if (optionValue === undefined || optionValue === false) { + return optionValue; + } + // else, empty string (invalid), null (invalid), 0 (invalid) + + throw new Error("`".concat(optionName, "` was specified but was not a node, or did not return a node")); + } + var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point + + if (typeof optionValue === 'string') { + try { + node = doc.querySelector(optionValue); // resolve to node, or null if fails + } catch (err) { + throw new Error("`".concat(optionName, "` appears to be an invalid selector; error=\"").concat(err.message, "\"")); + } + if (!node) { + if (!hasFallback) { + throw new Error("`".concat(optionName, "` as selector refers to no known node")); + } + // else, `node` MUST be `null` because that's what `Document.querySelector()` returns + // if the selector is valid but doesn't match anything + } + } + return node; + }; + var getInitialFocusNode = function getInitialFocusNode() { + var node = getNodeForOption('initialFocus', { + hasFallback: true + }); + + // false explicitly indicates we want no initialFocus at all + if (node === false) { + return false; + } + if (node === undefined || node && !(0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isFocusable)(node, config.tabbableOptions)) { + // option not specified nor focusable: use fallback options + if (findContainerIndex(doc.activeElement) >= 0) { + node = doc.activeElement; + } else { + var firstTabbableGroup = state.tabbableGroups[0]; + var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode; + + // NOTE: `fallbackFocus` option function cannot return `false` (not supported) + node = firstTabbableNode || getNodeForOption('fallbackFocus'); + } + } else if (node === null) { + // option is a VALID selector string that doesn't yield a node: use the `fallbackFocus` + // option instead of the default behavior when the option isn't specified at all + node = getNodeForOption('fallbackFocus'); + } + if (!node) { + throw new Error('Your focus-trap needs to have at least one focusable element'); + } + return node; + }; + var updateTabbableNodes = function updateTabbableNodes() { + state.containerGroups = state.containers.map(function (container) { + var tabbableNodes = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.tabbable)(container, config.tabbableOptions); + + // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes + // are a superset of tabbable nodes since nodes with negative `tabindex` attributes + // are focusable but not tabbable + var focusableNodes = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.focusable)(container, config.tabbableOptions); + var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined; + var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined; + var firstDomTabbableNode = focusableNodes.find(function (node) { + return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(node); + }); + var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) { + return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(node); + }); + var posTabIndexesFound = !!tabbableNodes.find(function (node) { + return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(node) > 0; + }); + return { + container: container, + tabbableNodes: tabbableNodes, + focusableNodes: focusableNodes, + /** True if at least one node with positive `tabindex` was found in this container. */ + posTabIndexesFound: posTabIndexesFound, + /** First tabbable node in container, __tabindex__ order; `undefined` if none. */ + firstTabbableNode: firstTabbableNode, + /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */ + lastTabbableNode: lastTabbableNode, + // NOTE: DOM order is NOT NECESSARILY "document position" order, but figuring that out + // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition + // because that API doesn't work with Shadow DOM as well as it should (@see + // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far, + // to address an edge case related to positive tabindex support, this seems like a much easier, + // "close enough most of the time" alternative for positive tabindexes which should generally + // be avoided anyway... + /** First tabbable node in container, __DOM__ order; `undefined` if none. */ + firstDomTabbableNode: firstDomTabbableNode, + /** Last tabbable node in container, __DOM__ order; `undefined` if none. */ + lastDomTabbableNode: lastDomTabbableNode, + /** + * Finds the __tabbable__ node that follows the given node in the specified direction, + * in this container, if any. + * @param {HTMLElement} node + * @param {boolean} [forward] True if going in forward tab order; false if going + * in reverse. + * @returns {HTMLElement|undefined} The next tabbable node, if any. + */ + nextTabbableNode: function nextTabbableNode(node) { + var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var nodeIdx = tabbableNodes.indexOf(node); + if (nodeIdx < 0) { + // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex): + // since `node` should at least have been focusable, we assume that's the case and mimic + // what browsers do, which is set focus to the next node in __document position order__, + // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE + // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to + // basic DOM order + if (forward) { + return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) { + return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(el); + }); + } + return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) { + return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(el); + }); + } + return tabbableNodes[nodeIdx + (forward ? 1 : -1)]; + } + }; + }); + state.tabbableGroups = state.containerGroups.filter(function (group) { + return group.tabbableNodes.length > 0; + }); + + // throw if no groups have tabbable nodes and we don't have a fallback focus node either + if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option + ) { + throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times'); + } + + // NOTE: Positive tabindexes are only properly supported in single-container traps because + // doing it across multiple containers where tabindexes could be all over the place + // would require Tabbable to support multiple containers, would require additional + // specialized Shadow DOM support, and would require Tabbable's multi-container support + // to look at those containers in document position order rather than user-provided + // order (as they are treated in Focus-trap, for legacy reasons). See discussion on + // https://github.com/focus-trap/focus-trap/issues/375 for more details. + if (state.containerGroups.find(function (g) { + return g.posTabIndexesFound; + }) && state.containerGroups.length > 1) { + throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps."); + } + }; + + /** + * Gets the current activeElement. If it's a web-component and has open shadow-root + * it will recursively search inside shadow roots for the "true" activeElement. + * + * @param {Document | ShadowRoot} el + * + * @returns {HTMLElement} The element that currently has the focus + **/ + var _getActiveElement = function getActiveElement(el) { + var activeElement = el.activeElement; + if (!activeElement) { + return; + } + if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) { + return _getActiveElement(activeElement.shadowRoot); + } + return activeElement; + }; + var _tryFocus = function tryFocus(node) { + if (node === false) { + return; + } + if (node === _getActiveElement(document)) { + return; + } + if (!node || !node.focus) { + _tryFocus(getInitialFocusNode()); + return; + } + node.focus({ + preventScroll: !!config.preventScroll + }); + // NOTE: focus() API does not trigger focusIn event so set MRU node manually + state.mostRecentlyFocusedNode = node; + if (isSelectableInput(node)) { + node.select(); + } + }; + var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) { + var node = getNodeForOption('setReturnFocus', { + params: [previousActiveElement] + }); + return node ? node : node === false ? false : previousActiveElement; + }; + + /** + * Finds the next node (in either direction) where focus should move according to a + * keyboard focus-in event. + * @param {Object} params + * @param {Node} [params.target] Known target __from which__ to navigate, if any. + * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event + * will be used to determine the `target`). Ignored if `target` is specified. + * @param {boolean} [params.isBackward] True if focus should move backward. + * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be + * determined given the current state of the trap. + */ + var findNextNavNode = function findNextNavNode(_ref3) { + var target = _ref3.target, + event = _ref3.event, + _ref3$isBackward = _ref3.isBackward, + isBackward = _ref3$isBackward === void 0 ? false : _ref3$isBackward; + target = target || getActualTarget(event); + updateTabbableNodes(); + var destinationNode = null; + if (state.tabbableGroups.length > 0) { + // make sure the target is actually contained in a group + // NOTE: the target may also be the container itself if it's focusable + // with tabIndex='-1' and was given initial focus + var containerIndex = findContainerIndex(target, event); + var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined; + if (containerIndex < 0) { + // target not found in any group: quite possible focus has escaped the trap, + // so bring it back into... + if (isBackward) { + // ...the last node in the last group + destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode; + } else { + // ...the first node in the first group + destinationNode = state.tabbableGroups[0].firstTabbableNode; + } + } else if (isBackward) { + // REVERSE + + // is the target the first tabbable node in a group? + var startOfGroupIndex = findIndex(state.tabbableGroups, function (_ref4) { + var firstTabbableNode = _ref4.firstTabbableNode; + return target === firstTabbableNode; + }); + if (startOfGroupIndex < 0 && (containerGroup.container === target || (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isFocusable)(target, config.tabbableOptions) && !(0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) { + // an exception case where the target is either the container itself, or + // a non-tabbable node that was given focus (i.e. tabindex is negative + // and user clicked on it or node was programmatically given focus) + // and is not followed by any other tabbable node, in which + // case, we should handle shift+tab as if focus were on the container's + // first tabbable node, and go to the last tabbable node of the LAST group + startOfGroupIndex = containerIndex; + } + if (startOfGroupIndex >= 0) { + // YES: then shift+tab should go to the last tabbable node in the + // previous group (and wrap around to the last tabbable node of + // the LAST group if it's the first tabbable node of the FIRST group) + var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1; + var destinationGroup = state.tabbableGroups[destinationGroupIndex]; + destinationNode = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode; + } else if (!isTabEvent(event)) { + // user must have customized the nav keys so we have to move focus manually _within_ + // the active group: do this based on the order determined by tabbable() + destinationNode = containerGroup.nextTabbableNode(target, false); + } + } else { + // FORWARD + + // is the target the last tabbable node in a group? + var lastOfGroupIndex = findIndex(state.tabbableGroups, function (_ref5) { + var lastTabbableNode = _ref5.lastTabbableNode; + return target === lastTabbableNode; + }); + if (lastOfGroupIndex < 0 && (containerGroup.container === target || (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isFocusable)(target, config.tabbableOptions) && !(0,tabbable__WEBPACK_IMPORTED_MODULE_0__.isTabbable)(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) { + // an exception case where the target is the container itself, or + // a non-tabbable node that was given focus (i.e. tabindex is negative + // and user clicked on it or node was programmatically given focus) + // and is not followed by any other tabbable node, in which + // case, we should handle tab as if focus were on the container's + // last tabbable node, and go to the first tabbable node of the FIRST group + lastOfGroupIndex = containerIndex; + } + if (lastOfGroupIndex >= 0) { + // YES: then tab should go to the first tabbable node in the next + // group (and wrap around to the first tabbable node of the FIRST + // group if it's the last tabbable node of the LAST group) + var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1; + var _destinationGroup = state.tabbableGroups[_destinationGroupIndex]; + destinationNode = (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode; + } else if (!isTabEvent(event)) { + // user must have customized the nav keys so we have to move focus manually _within_ + // the active group: do this based on the order determined by tabbable() + destinationNode = containerGroup.nextTabbableNode(target); + } + } + } else { + // no groups available + // NOTE: the fallbackFocus option does not support returning false to opt-out + destinationNode = getNodeForOption('fallbackFocus'); + } + return destinationNode; + }; + + // This needs to be done on mousedown and touchstart instead of click + // so that it precedes the focus event. + var checkPointerDown = function checkPointerDown(e) { + var target = getActualTarget(e); + if (findContainerIndex(target, e) >= 0) { + // allow the click since it ocurred inside the trap + return; + } + if (valueOrHandler(config.clickOutsideDeactivates, e)) { + // immediately deactivate the trap + trap.deactivate({ + // NOTE: by setting `returnFocus: false`, deactivate() will do nothing, + // which will result in the outside click setting focus to the node + // that was clicked (and if not focusable, to "nothing"); by setting + // `returnFocus: true`, we'll attempt to re-focus the node originally-focused + // on activation (or the configured `setReturnFocus` node), whether the + // outside click was on a focusable node or not + returnFocus: config.returnFocusOnDeactivate + }); + return; + } + + // This is needed for mobile devices. + // (If we'll only let `click` events through, + // then on mobile they will be blocked anyways if `touchstart` is blocked.) + if (valueOrHandler(config.allowOutsideClick, e)) { + // allow the click outside the trap to take place + return; + } + + // otherwise, prevent the click + e.preventDefault(); + }; + + // In case focus escapes the trap for some strange reason, pull it back in. + // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected + // scrolling if the node that got focused was out of view; there's nothing we can do to + // prevent that from happening by the time we discover that focus escaped + var checkFocusIn = function checkFocusIn(event) { + var target = getActualTarget(event); + var targetContained = findContainerIndex(target, event) >= 0; + + // In Firefox when you Tab out of an iframe the Document is briefly focused. + if (targetContained || target instanceof Document) { + if (targetContained) { + state.mostRecentlyFocusedNode = target; + } + } else { + // escaped! pull it back in to where it just left + event.stopImmediatePropagation(); + + // focus will escape if the MRU node had a positive tab index and user tried to nav forward; + // it will also escape if the MRU node had a 0 tab index and user tried to nav backward + // toward a node with a positive tab index + var nextNode; // next node to focus, if we find one + var navAcrossContainers = true; + if (state.mostRecentlyFocusedNode) { + if ((0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(state.mostRecentlyFocusedNode) > 0) { + // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node... + var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode); + // there MAY not be any tabbable nodes in the container if there are at least 2 containers + // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container + // with at least one tabbable node in order to function, so this could be the other container + // with nothing tabbable in it) + var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes; + if (tabbableNodes.length > 0) { + // MRU tab index MAY not be found if the MRU node is focusable but not tabbable + var mruTabIdx = tabbableNodes.findIndex(function (node) { + return node === state.mostRecentlyFocusedNode; + }); + if (mruTabIdx >= 0) { + if (config.isKeyForward(state.recentNavEvent)) { + if (mruTabIdx + 1 < tabbableNodes.length) { + nextNode = tabbableNodes[mruTabIdx + 1]; + navAcrossContainers = false; + } + // else, don't wrap within the container as focus should move to next/previous + // container + } else { + if (mruTabIdx - 1 >= 0) { + nextNode = tabbableNodes[mruTabIdx - 1]; + navAcrossContainers = false; + } + // else, don't wrap within the container as focus should move to next/previous + // container + } + // else, don't find in container order without considering direction too + } + } + // else, no tabbable nodes in that container (which means we must have at least one other + // container with at least one tabbable node in it, otherwise focus-trap would've thrown + // an error the last time updateTabbableNodes() was run): find next node among all known + // containers + } else { + // check to see if there's at least one tabbable node with a positive tab index inside + // the trap because focus seems to escape when navigating backward from a tabbable node + // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with + // the greatest positive tab index like it should) + if (!state.containerGroups.some(function (g) { + return g.tabbableNodes.some(function (n) { + return (0,tabbable__WEBPACK_IMPORTED_MODULE_0__.getTabIndex)(n) > 0; + }); + })) { + // no containers with tabbable nodes with positive tab indexes which means the focus + // escaped for some other reason and we should just execute the fallback to the + // MRU node or initial focus node, if any + navAcrossContainers = false; + } + } + } else { + // no MRU node means we're likely in some initial condition when the trap has just + // been activated and initial focus hasn't been given yet, in which case we should + // fall through to trying to focus the initial focus node, which is what should + // happen below at this point in the logic + navAcrossContainers = false; + } + if (navAcrossContainers) { + nextNode = findNextNavNode({ + // move FROM the MRU node, not event-related node (which will be the node that is + // outside the trap causing the focus escape we're trying to fix) + target: state.mostRecentlyFocusedNode, + isBackward: config.isKeyBackward(state.recentNavEvent) + }); + } + if (nextNode) { + _tryFocus(nextNode); + } else { + _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); + } + } + state.recentNavEvent = undefined; // clear + }; + + // Hijack key nav events on the first and last focusable nodes of the trap, + // in order to prevent focus from escaping. If it escapes for even a + // moment it can end up scrolling the page and causing confusion so we + // kind of need to capture the action at the keydown phase. + var checkKeyNav = function checkKeyNav(event) { + var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + state.recentNavEvent = event; + var destinationNode = findNextNavNode({ + event: event, + isBackward: isBackward + }); + if (destinationNode) { + if (isTabEvent(event)) { + // since tab natively moves focus, we wouldn't have a destination node unless we + // were on the edge of a container and had to move to the next/previous edge, in + // which case we want to prevent default to keep the browser from moving focus + // to where it normally would + event.preventDefault(); + } + _tryFocus(destinationNode); + } + // else, let the browser take care of [shift+]tab and move the focus + }; + var checkTabKey = function checkTabKey(event) { + if (config.isKeyForward(event) || config.isKeyBackward(event)) { + checkKeyNav(event, config.isKeyBackward(event)); + } + }; + + // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates + var checkEscapeKey = function checkEscapeKey(event) { + if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) { + event.preventDefault(); + trap.deactivate(); + } + }; + var checkClick = function checkClick(e) { + var target = getActualTarget(e); + if (findContainerIndex(target, e) >= 0) { + return; + } + if (valueOrHandler(config.clickOutsideDeactivates, e)) { + return; + } + if (valueOrHandler(config.allowOutsideClick, e)) { + return; + } + e.preventDefault(); + e.stopImmediatePropagation(); + }; + + // + // EVENT LISTENERS + // + + var addListeners = function addListeners() { + if (!state.active) { + return; + } + + // There can be only one listening focus trap at a time + activeFocusTraps.activateTrap(trapStack, trap); + + // Delay ensures that the focused element doesn't capture the event + // that caused the focus trap activation. + state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () { + _tryFocus(getInitialFocusNode()); + }) : _tryFocus(getInitialFocusNode()); + doc.addEventListener('focusin', checkFocusIn, true); + doc.addEventListener('mousedown', checkPointerDown, { + capture: true, + passive: false + }); + doc.addEventListener('touchstart', checkPointerDown, { + capture: true, + passive: false + }); + doc.addEventListener('click', checkClick, { + capture: true, + passive: false + }); + doc.addEventListener('keydown', checkTabKey, { + capture: true, + passive: false + }); + doc.addEventListener('keydown', checkEscapeKey); + return trap; + }; + var removeListeners = function removeListeners() { + if (!state.active) { + return; + } + doc.removeEventListener('focusin', checkFocusIn, true); + doc.removeEventListener('mousedown', checkPointerDown, true); + doc.removeEventListener('touchstart', checkPointerDown, true); + doc.removeEventListener('click', checkClick, true); + doc.removeEventListener('keydown', checkTabKey, true); + doc.removeEventListener('keydown', checkEscapeKey); + return trap; + }; + + // + // MUTATION OBSERVER + // + + var checkDomRemoval = function checkDomRemoval(mutations) { + var isFocusedNodeRemoved = mutations.some(function (mutation) { + var removedNodes = Array.from(mutation.removedNodes); + return removedNodes.some(function (node) { + return node === state.mostRecentlyFocusedNode; + }); + }); + + // If the currently focused is removed then browsers will move focus to the + // element. If this happens, try to move focus back into the trap. + if (isFocusedNodeRemoved) { + _tryFocus(getInitialFocusNode()); + } + }; + + // Use MutationObserver - if supported - to detect if focused node is removed + // from the DOM. + var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined; + var updateObservedNodes = function updateObservedNodes() { + if (!mutationObserver) { + return; + } + mutationObserver.disconnect(); + if (state.active && !state.paused) { + state.containers.map(function (container) { + mutationObserver.observe(container, { + subtree: true, + childList: true + }); + }); + } + }; + + // + // TRAP DEFINITION + // + + trap = { + get active() { + return state.active; + }, + get paused() { + return state.paused; + }, + activate: function activate(activateOptions) { + if (state.active) { + return this; + } + var onActivate = getOption(activateOptions, 'onActivate'); + var onPostActivate = getOption(activateOptions, 'onPostActivate'); + var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap'); + if (!checkCanFocusTrap) { + updateTabbableNodes(); + } + state.active = true; + state.paused = false; + state.nodeFocusedBeforeActivation = doc.activeElement; + onActivate === null || onActivate === void 0 || onActivate(); + var finishActivation = function finishActivation() { + if (checkCanFocusTrap) { + updateTabbableNodes(); + } + addListeners(); + updateObservedNodes(); + onPostActivate === null || onPostActivate === void 0 || onPostActivate(); + }; + if (checkCanFocusTrap) { + checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation); + return this; + } + finishActivation(); + return this; + }, + deactivate: function deactivate(deactivateOptions) { + if (!state.active) { + return this; + } + var options = _objectSpread2({ + onDeactivate: config.onDeactivate, + onPostDeactivate: config.onPostDeactivate, + checkCanReturnFocus: config.checkCanReturnFocus + }, deactivateOptions); + clearTimeout(state.delayInitialFocusTimer); // noop if undefined + state.delayInitialFocusTimer = undefined; + removeListeners(); + state.active = false; + state.paused = false; + updateObservedNodes(); + activeFocusTraps.deactivateTrap(trapStack, trap); + var onDeactivate = getOption(options, 'onDeactivate'); + var onPostDeactivate = getOption(options, 'onPostDeactivate'); + var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus'); + var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate'); + onDeactivate === null || onDeactivate === void 0 || onDeactivate(); + var finishDeactivation = function finishDeactivation() { + delay(function () { + if (returnFocus) { + _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)); + } + onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate(); + }); + }; + if (returnFocus && checkCanReturnFocus) { + checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation); + return this; + } + finishDeactivation(); + return this; + }, + pause: function pause(pauseOptions) { + if (state.paused || !state.active) { + return this; + } + var onPause = getOption(pauseOptions, 'onPause'); + var onPostPause = getOption(pauseOptions, 'onPostPause'); + state.paused = true; + onPause === null || onPause === void 0 || onPause(); + removeListeners(); + updateObservedNodes(); + onPostPause === null || onPostPause === void 0 || onPostPause(); + return this; + }, + unpause: function unpause(unpauseOptions) { + if (!state.paused || !state.active) { + return this; + } + var onUnpause = getOption(unpauseOptions, 'onUnpause'); + var onPostUnpause = getOption(unpauseOptions, 'onPostUnpause'); + state.paused = false; + onUnpause === null || onUnpause === void 0 || onUnpause(); + updateTabbableNodes(); + addListeners(); + updateObservedNodes(); + onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause(); + return this; + }, + updateContainerElements: function updateContainerElements(containerElements) { + var elementsAsArray = [].concat(containerElements).filter(Boolean); + state.containers = elementsAsArray.map(function (element) { + return typeof element === 'string' ? doc.querySelector(element) : element; + }); + if (state.active) { + updateTabbableNodes(); + } + updateObservedNodes(); + return this; + } + }; + + // initialize container elements + trap.updateContainerElements(elements); + return trap; +}; + + +//# sourceMappingURL=focus-trap.esm.js.map + + +/***/ }), + +/***/ "./node_modules/lodash.get/index.js": +/*!******************************************!*\ + !*** ./node_modules/lodash.get/index.js ***! + \******************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var Symbol = root.Symbol, + splice = arrayProto.splice; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + string = toString(string); + + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + + +/***/ }), + +/***/ "./node_modules/node-gettext/lib/gettext.js": +/*!**************************************************!*\ + !*** ./node_modules/node-gettext/lib/gettext.js ***! + \**************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var get = __webpack_require__(/*! lodash.get */ "./node_modules/lodash.get/index.js"); +var plurals = __webpack_require__(/*! ./plurals */ "./node_modules/node-gettext/lib/plurals.js"); + +module.exports = Gettext; + +/** + * Creates and returns a new Gettext instance. + * + * @constructor + * @param {Object} [options] A set of options + * @param {String} options.sourceLocale The locale that the source code and its + * texts are written in. Translations for + * this locale is not necessary. + * @param {Boolean} options.debug Whether to output debug info into the + * console. + * @return {Object} A Gettext instance + */ +function Gettext(options) { + options = options || {}; + + this.catalogs = {}; + this.locale = ''; + this.domain = 'messages'; + + this.listeners = []; + + // Set source locale + this.sourceLocale = ''; + if (options.sourceLocale) { + if (typeof options.sourceLocale === 'string') { + this.sourceLocale = options.sourceLocale; + } + else { + this.warn('The `sourceLocale` option should be a string'); + } + } + + // Set debug flag + this.debug = 'debug' in options && options.debug === true; +} + +/** + * Adds an event listener. + * + * @param {String} eventName An event name + * @param {Function} callback An event handler function + */ +Gettext.prototype.on = function(eventName, callback) { + this.listeners.push({ + eventName: eventName, + callback: callback + }); +}; + +/** + * Removes an event listener. + * + * @param {String} eventName An event name + * @param {Function} callback A previously registered event handler function + */ +Gettext.prototype.off = function(eventName, callback) { + this.listeners = this.listeners.filter(function(listener) { + return ( + listener.eventName === eventName && + listener.callback === callback + ) === false; + }); +}; + +/** + * Emits an event to all registered event listener. + * + * @private + * @param {String} eventName An event name + * @param {any} eventData Data to pass to event listeners + */ +Gettext.prototype.emit = function(eventName, eventData) { + for (var i = 0; i < this.listeners.length; i++) { + var listener = this.listeners[i]; + if (listener.eventName === eventName) { + listener.callback(eventData); + } + } +}; + +/** + * Logs a warning to the console if debug mode is enabled. + * + * @ignore + * @param {String} message A warning message + */ +Gettext.prototype.warn = function(message) { + if (this.debug) { + console.warn(message); + } + + this.emit('error', new Error(message)); +}; + +/** + * Stores a set of translations in the set of gettext + * catalogs. + * + * @example + * gt.addTranslations('sv-SE', 'messages', translationsObject) + * + * @param {String} locale A locale string + * @param {String} domain A domain name + * @param {Object} translations An object of gettext-parser JSON shape + */ +Gettext.prototype.addTranslations = function(locale, domain, translations) { + if (!this.catalogs[locale]) { + this.catalogs[locale] = {}; + } + + this.catalogs[locale][domain] = translations; +}; + +/** + * Sets the locale to get translated messages for. + * + * @example + * gt.setLocale('sv-SE') + * + * @param {String} locale A locale + */ +Gettext.prototype.setLocale = function(locale) { + if (typeof locale !== 'string') { + this.warn( + 'You called setLocale() with an argument of type ' + (typeof locale) + '. ' + + 'The locale must be a string.' + ); + return; + } + + if (locale.trim() === '') { + this.warn('You called setLocale() with an empty value, which makes little sense.'); + } + + if (locale !== this.sourceLocale && !this.catalogs[locale]) { + this.warn('You called setLocale() with "' + locale + '", but no translations for that locale has been added.'); + } + + this.locale = locale; +}; + +/** + * Sets the default gettext domain. + * + * @example + * gt.setTextDomain('domainname') + * + * @param {String} domain A gettext domain name + */ +Gettext.prototype.setTextDomain = function(domain) { + if (typeof domain !== 'string') { + this.warn( + 'You called setTextDomain() with an argument of type ' + (typeof domain) + '. ' + + 'The domain must be a string.' + ); + return; + } + + if (domain.trim() === '') { + this.warn('You called setTextDomain() with an empty `domain` value.'); + } + + this.domain = domain; +}; + +/** + * Translates a string using the default textdomain + * + * @example + * gt.gettext('Some text') + * + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.gettext = function(msgid) { + return this.dnpgettext(this.domain, '', msgid); +}; + +/** + * Translates a string using a specific domain + * + * @example + * gt.dgettext('domainname', 'Some text') + * + * @param {String} domain A gettext domain name + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.dgettext = function(domain, msgid) { + return this.dnpgettext(domain, '', msgid); +}; + +/** + * Translates a plural string using the default textdomain + * + * @example + * gt.ngettext('One thing', 'Many things', numberOfThings) + * + * @param {String} msgid String to be translated when count is not plural + * @param {String} msgidPlural String to be translated when count is plural + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.ngettext = function(msgid, msgidPlural, count) { + return this.dnpgettext(this.domain, '', msgid, msgidPlural, count); +}; + +/** + * Translates a plural string using a specific textdomain + * + * @example + * gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings) + * + * @param {String} domain A gettext domain name + * @param {String} msgid String to be translated when count is not plural + * @param {String} msgidPlural String to be translated when count is plural + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.dngettext = function(domain, msgid, msgidPlural, count) { + return this.dnpgettext(domain, '', msgid, msgidPlural, count); +}; + +/** + * Translates a string from a specific context using the default textdomain + * + * @example + * gt.pgettext('sports', 'Back') + * + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.pgettext = function(msgctxt, msgid) { + return this.dnpgettext(this.domain, msgctxt, msgid); +}; + +/** + * Translates a string from a specific context using s specific textdomain + * + * @example + * gt.dpgettext('domainname', 'sports', 'Back') + * + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.dpgettext = function(domain, msgctxt, msgid) { + return this.dnpgettext(domain, msgctxt, msgid); +}; + +/** + * Translates a plural string from a specific context using the default textdomain + * + * @example + * gt.npgettext('sports', 'Back', '%d backs', numberOfBacks) + * + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated when count is not plural + * @param {String} msgidPlural String to be translated when count is plural + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.npgettext = function(msgctxt, msgid, msgidPlural, count) { + return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count); +}; + +/** + * Translates a plural string from a specifi context using a specific textdomain + * + * @example + * gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks) + * + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @param {String} msgidPlural If no translation was found, return this on count!=1 + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ +Gettext.prototype.dnpgettext = function(domain, msgctxt, msgid, msgidPlural, count) { + var defaultTranslation = msgid; + var translation; + var index; + + msgctxt = msgctxt || ''; + + if (!isNaN(count) && count !== 1) { + defaultTranslation = msgidPlural || msgid; + } + + translation = this._getTranslation(domain, msgctxt, msgid); + + if (translation) { + if (typeof count === 'number') { + var pluralsFunc = plurals[Gettext.getLanguageCode(this.locale)].pluralsFunc; + index = pluralsFunc(count); + if (typeof index === 'boolean') { + index = index ? 1 : 0; + } + } else { + index = 0; + } + + return translation.msgstr[index] || defaultTranslation; + } + else if (!this.sourceLocale || this.locale !== this.sourceLocale) { + this.warn('No translation was found for msgid "' + msgid + '" in msgctxt "' + msgctxt + '" and domain "' + domain + '"'); + } + + return defaultTranslation; +}; + +/** + * Retrieves comments object for a translation. The comments object + * has the shape `{ translator, extracted, reference, flag, previous }`. + * + * @example + * const comment = gt.getComment('domainname', 'sports', 'Backs') + * + * @private + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {Object} Comments object or false if not found + */ +Gettext.prototype.getComment = function(domain, msgctxt, msgid) { + var translation; + + translation = this._getTranslation(domain, msgctxt, msgid); + if (translation) { + return translation.comments || {}; + } + + return {}; +}; + +/** + * Retrieves translation object from the domain and context + * + * @private + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {Object} Translation object or false if not found + */ +Gettext.prototype._getTranslation = function(domain, msgctxt, msgid) { + msgctxt = msgctxt || ''; + + return get(this.catalogs, [this.locale, domain, 'translations', msgctxt, msgid]); +}; + +/** + * Returns the language code part of a locale + * + * @example + * Gettext.getLanguageCode('sv-SE') + * // -> "sv" + * + * @private + * @param {String} locale A case-insensitive locale string + * @returns {String} A language code + */ +Gettext.getLanguageCode = function(locale) { + return locale.split(/[\-_]/)[0].toLowerCase(); +}; + +/* C-style aliases */ + +/** + * C-style alias for [setTextDomain](#gettextsettextdomaindomain) + * + * @see Gettext#setTextDomain + */ +Gettext.prototype.textdomain = function(domain) { + if (this.debug) { + console.warn('textdomain(domain) was used to set locales in node-gettext v1. ' + + 'Make sure you are using it for domains, and switch to setLocale(locale) if you are not.\n\n ' + + 'To read more about the migration from node-gettext v1 to v2, ' + + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x\n\n' + + 'This warning will be removed in the final 2.0.0'); + } + + this.setTextDomain(domain); +}; + +/** + * C-style alias for [setLocale](#gettextsetlocalelocale) + * + * @see Gettext#setLocale + */ +Gettext.prototype.setlocale = function(locale) { + this.setLocale(locale); +}; + +/* Deprecated functions */ + +/** + * This function will be removed in the final 2.0.0 release. + * + * @deprecated + */ +Gettext.prototype.addTextdomain = function() { + console.error('addTextdomain() is deprecated.\n\n' + + '* To add translations, use addTranslations()\n' + + '* To set the default domain, use setTextDomain() (or its alias textdomain())\n' + + '\n' + + 'To read more about the migration from node-gettext v1 to v2, ' + + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x'); +}; + + +/***/ }), + +/***/ "./node_modules/node-gettext/lib/plurals.js": +/*!**************************************************!*\ + !*** ./node_modules/node-gettext/lib/plurals.js ***! + \**************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = { + ach: { + name: 'Acholi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + af: { + name: 'Afrikaans', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ak: { + name: 'Akan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + am: { + name: 'Amharic', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + an: { + name: 'Aragonese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ar: { + name: 'Arabic', + examples: [{ + plural: 0, + sample: 0 + }, { + plural: 1, + sample: 1 + }, { + plural: 2, + sample: 2 + }, { + plural: 3, + sample: 3 + }, { + plural: 4, + sample: 11 + }, { + plural: 5, + sample: 100 + }], + nplurals: 6, + pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)', + pluralsFunc: function(n) { + return (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5); + } + }, + arn: { + name: 'Mapudungun', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + ast: { + name: 'Asturian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ay: { + name: 'Aymará', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + az: { + name: 'Azerbaijani', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + be: { + name: 'Belarusian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + bg: { + name: 'Bulgarian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + bn: { + name: 'Bengali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + bo: { + name: 'Tibetan', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + br: { + name: 'Breton', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + brx: { + name: 'Bodo', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + bs: { + name: 'Bosnian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + ca: { + name: 'Catalan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + cgg: { + name: 'Chiga', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + cs: { + name: 'Czech', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2); + } + }, + csb: { + name: 'Kashubian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + cy: { + name: 'Welsh', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 8 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3); + } + }, + da: { + name: 'Danish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + de: { + name: 'German', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + doi: { + name: 'Dogri', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + dz: { + name: 'Dzongkha', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + el: { + name: 'Greek', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + en: { + name: 'English', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + eo: { + name: 'Esperanto', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + es: { + name: 'Spanish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + et: { + name: 'Estonian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + eu: { + name: 'Basque', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + fa: { + name: 'Persian', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + ff: { + name: 'Fulah', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + fi: { + name: 'Finnish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + fil: { + name: 'Filipino', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + fo: { + name: 'Faroese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + fr: { + name: 'French', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + fur: { + name: 'Friulian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + fy: { + name: 'Frisian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ga: { + name: 'Irish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 7 + }, { + plural: 4, + sample: 11 + }], + nplurals: 5, + pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4); + } + }, + gd: { + name: 'Scottish Gaelic', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 20 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)', + pluralsFunc: function(n) { + return ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3); + } + }, + gl: { + name: 'Galician', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + gu: { + name: 'Gujarati', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + gun: { + name: 'Gun', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + ha: { + name: 'Hausa', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + he: { + name: 'Hebrew', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + hi: { + name: 'Hindi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + hne: { + name: 'Chhattisgarhi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + hr: { + name: 'Croatian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + hu: { + name: 'Hungarian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + hy: { + name: 'Armenian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + id: { + name: 'Indonesian', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + is: { + name: 'Icelandic', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)', + pluralsFunc: function(n) { + return (n % 10 !== 1 || n % 100 === 11); + } + }, + it: { + name: 'Italian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ja: { + name: 'Japanese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + jbo: { + name: 'Lojban', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + jv: { + name: 'Javanese', + examples: [{ + plural: 0, + sample: 0 + }, { + plural: 1, + sample: 1 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 0)', + pluralsFunc: function(n) { + return (n !== 0); + } + }, + ka: { + name: 'Georgian', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + kk: { + name: 'Kazakh', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + km: { + name: 'Khmer', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + kn: { + name: 'Kannada', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ko: { + name: 'Korean', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + ku: { + name: 'Kurdish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + kw: { + name: 'Cornish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 4 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3); + } + }, + ky: { + name: 'Kyrgyz', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + lb: { + name: 'Letzeburgesch', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ln: { + name: 'Lingala', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + lo: { + name: 'Lao', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + lt: { + name: 'Lithuanian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 10 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + lv: { + name: 'Latvian', + examples: [{ + plural: 2, + sample: 0 + }, { + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2); + } + }, + mai: { + name: 'Maithili', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + mfe: { + name: 'Mauritian Creole', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + mg: { + name: 'Malagasy', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + mi: { + name: 'Maori', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + mk: { + name: 'Macedonian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)', + pluralsFunc: function(n) { + return (n === 1 || n % 10 === 1 ? 0 : 1); + } + }, + ml: { + name: 'Malayalam', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + mn: { + name: 'Mongolian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + mni: { + name: 'Manipuri', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + mnk: { + name: 'Mandinka', + examples: [{ + plural: 0, + sample: 0 + }, { + plural: 1, + sample: 1 + }, { + plural: 2, + sample: 2 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)', + pluralsFunc: function(n) { + return (n === 0 ? 0 : n === 1 ? 1 : 2); + } + }, + mr: { + name: 'Marathi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ms: { + name: 'Malay', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + mt: { + name: 'Maltese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 11 + }, { + plural: 3, + sample: 20 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : n === 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3); + } + }, + my: { + name: 'Burmese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + nah: { + name: 'Nahuatl', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + nap: { + name: 'Neapolitan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + nb: { + name: 'Norwegian Bokmal', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ne: { + name: 'Nepali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + nl: { + name: 'Dutch', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + nn: { + name: 'Norwegian Nynorsk', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + no: { + name: 'Norwegian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + nso: { + name: 'Northern Sotho', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + oc: { + name: 'Occitan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + or: { + name: 'Oriya', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + pa: { + name: 'Punjabi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + pap: { + name: 'Papiamento', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + pl: { + name: 'Polish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + pms: { + name: 'Piemontese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ps: { + name: 'Pashto', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + pt: { + name: 'Portuguese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + rm: { + name: 'Romansh', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ro: { + name: 'Romanian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 20 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2); + } + }, + ru: { + name: 'Russian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + rw: { + name: 'Kinyarwanda', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sah: { + name: 'Yakut', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + sat: { + name: 'Santali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sco: { + name: 'Scots', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sd: { + name: 'Sindhi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + se: { + name: 'Northern Sami', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + si: { + name: 'Sinhala', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sk: { + name: 'Slovak', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)', + pluralsFunc: function(n) { + return (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2); + } + }, + sl: { + name: 'Slovenian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 5 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)', + pluralsFunc: function(n) { + return (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3); + } + }, + so: { + name: 'Somali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + son: { + name: 'Songhay', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sq: { + name: 'Albanian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sr: { + name: 'Serbian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + su: { + name: 'Sundanese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + sv: { + name: 'Swedish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + sw: { + name: 'Swahili', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + ta: { + name: 'Tamil', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + te: { + name: 'Telugu', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + tg: { + name: 'Tajik', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + th: { + name: 'Thai', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + ti: { + name: 'Tigrinya', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + tk: { + name: 'Turkmen', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + tr: { + name: 'Turkish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + tt: { + name: 'Tatar', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + ug: { + name: 'Uyghur', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + uk: { + name: 'Ukrainian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function(n) { + return (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2); + } + }, + ur: { + name: 'Urdu', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + uz: { + name: 'Uzbek', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + vi: { + name: 'Vietnamese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + wa: { + name: 'Walloon', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function(n) { + return (n > 1); + } + }, + wo: { + name: 'Wolof', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + }, + yo: { + name: 'Yoruba', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function(n) { + return (n !== 1); + } + }, + zh: { + name: 'Chinese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function() { + return 0; + } + } +}; + + /***/ }), /***/ "./node_modules/path-browserify/index.js": @@ -3012,6 +10619,430 @@ process.chdir = function (dir) { process.umask = function() { return 0; }; +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CNq6xIdS.css": +/*!*****************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CNq6xIdS.css ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcActionButton_CNq6xIdS_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionButton-CNq6xIdS.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionButton-CNq6xIdS.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionButton_CNq6xIdS_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionButton_CNq6xIdS_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionButton_CNq6xIdS_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionButton_CNq6xIdS_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionLink-CC6a7Hsf.css": +/*!***************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionLink-CC6a7Hsf.css ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcActionLink_CC6a7Hsf_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionLink-CC6a7Hsf.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionLink-CC6a7Hsf.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionLink_CC6a7Hsf_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionLink_CC6a7Hsf_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionLink_CC6a7Hsf_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionLink_CC6a7Hsf_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-CsIBHw6E.css": +/*!*****************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-CsIBHw6E.css ***! + \*****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcActionRouter_CsIBHw6E_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActionRouter-CsIBHw6E.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActionRouter-CsIBHw6E.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActionRouter_CsIBHw6E_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActionRouter_CsIBHw6E_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActionRouter_CsIBHw6E_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActionRouter_CsIBHw6E_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcActions-DM_LoRlx.css": +/*!************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcActions-DM_LoRlx.css ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcActions_DM_LoRlx_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcActions-DM_LoRlx.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcActions-DM_LoRlx.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcActions_DM_LoRlx_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcActions_DM_LoRlx_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcActions_DM_LoRlx_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcActions_DM_LoRlx_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-Cjcyeimd.css": +/*!***************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-Cjcyeimd.css ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcBreadcrumb_Cjcyeimd_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcBreadcrumb-Cjcyeimd.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumb-Cjcyeimd.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcBreadcrumb_Cjcyeimd_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcBreadcrumb_Cjcyeimd_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcBreadcrumb_Cjcyeimd_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcBreadcrumb_Cjcyeimd_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-CFRjXqRg.css": +/*!****************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-CFRjXqRg.css ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcBreadcrumbs_CFRjXqRg_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcBreadcrumbs-CFRjXqRg.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcBreadcrumbs-CFRjXqRg.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcBreadcrumbs_CFRjXqRg_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcBreadcrumbs_CFRjXqRg_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcBreadcrumbs_CFRjXqRg_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcBreadcrumbs_CFRjXqRg_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcButton-BHDLon1_.css": +/*!***********************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcButton-BHDLon1_.css ***! + \***********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcButton_BHDLon1_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcButton-BHDLon1_.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcButton-BHDLon1_.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcButton_BHDLon1_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcButton_BHDLon1_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcButton_BHDLon1_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcButton_BHDLon1_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/vue/dist/assets/NcPopover-TS4CW9MJ.css": +/*!************************************************************************!*\ + !*** ./node_modules/@nextcloud/vue/dist/assets/NcPopover-TS4CW9MJ.css ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); +/* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); +/* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); +/* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); +/* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); +/* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _css_loader_dist_cjs_js_NcPopover_TS4CW9MJ_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../css-loader/dist/cjs.js!./NcPopover-TS4CW9MJ.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/@nextcloud/vue/dist/assets/NcPopover-TS4CW9MJ.css"); + + + + + + + + + + + +var options = {}; + +options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); +options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); +options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); +options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); +options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_NcPopover_TS4CW9MJ_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); + + + + + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_NcPopover_TS4CW9MJ_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_NcPopover_TS4CW9MJ_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_NcPopover_TS4CW9MJ_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); + + /***/ }), /***/ "./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/FileTable.vue?vue&type=style&index=0&id=36ad32b2&scoped=true&lang=css": @@ -3391,6 +11422,897 @@ function styleTagTransform(css, styleElement) { } module.exports = styleTagTransform; +/***/ }), + +/***/ "./node_modules/tabbable/dist/index.esm.js": +/*!*************************************************!*\ + !*** ./node_modules/tabbable/dist/index.esm.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ focusable: () => (/* binding */ focusable), +/* harmony export */ getTabIndex: () => (/* binding */ getTabIndex), +/* harmony export */ isFocusable: () => (/* binding */ isFocusable), +/* harmony export */ isTabbable: () => (/* binding */ isTabbable), +/* harmony export */ tabbable: () => (/* binding */ tabbable) +/* harmony export */ }); +/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/ +// NOTE: separate `:not()` selectors has broader browser support than the newer +// `:not([inert], [inert] *)` (Feb 2023) +// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes +// the entire query to fail, resulting in no nodes found, which will break a lot +// of things... so we have to rely on JS to identify nodes inside an inert container +var candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable="false"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])']; +var candidateSelector = /* #__PURE__ */candidateSelectors.join(','); +var NoElement = typeof Element === 'undefined'; +var matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; +var getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) { + var _element$getRootNode; + return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element); +} : function (element) { + return element === null || element === void 0 ? void 0 : element.ownerDocument; +}; + +/** + * Determines if a node is inert or in an inert ancestor. + * @param {Element} [node] + * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to + * see if any of them are inert. If false, only `node` itself is considered. + * @returns {boolean} True if inert itself or by way of being in an inert ancestor. + * False if `node` is falsy. + */ +var isInert = function isInert(node, lookUp) { + var _node$getAttribute; + if (lookUp === void 0) { + lookUp = true; + } + // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert` + // JS API property; we have to check the attribute, which can either be empty or 'true'; + // if it's `null` (not specified) or 'false', it's an active element + var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert'); + var inert = inertAtt === '' || inertAtt === 'true'; + + // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')` + // if it weren't for `matches()` not being a function on shadow roots; the following + // code works for any kind of node + // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)` + // so it likely would not support `:is([inert] *)` either... + var result = inert || lookUp && node && isInert(node.parentNode); // recursive + + return result; +}; + +/** + * Determines if a node's content is editable. + * @param {Element} [node] + * @returns True if it's content-editable; false if it's not or `node` is falsy. + */ +var isContentEditable = function isContentEditable(node) { + var _node$getAttribute2; + // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have + // to use the attribute directly to check for this, which can either be empty or 'true'; + // if it's `null` (not specified) or 'false', it's a non-editable element + var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable'); + return attValue === '' || attValue === 'true'; +}; + +/** + * @param {Element} el container to check in + * @param {boolean} includeContainer add container to check + * @param {(node: Element) => boolean} filter filter candidates + * @returns {Element[]} + */ +var getCandidates = function getCandidates(el, includeContainer, filter) { + // even if `includeContainer=false`, we still have to check it for inertness because + // if it's inert, all its children are inert + if (isInert(el)) { + return []; + } + var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector)); + if (includeContainer && matches.call(el, candidateSelector)) { + candidates.unshift(el); + } + candidates = candidates.filter(filter); + return candidates; +}; + +/** + * @callback GetShadowRoot + * @param {Element} element to check for shadow root + * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available. + */ + +/** + * @callback ShadowRootFilter + * @param {Element} shadowHostNode the element which contains shadow content + * @returns {boolean} true if a shadow root could potentially contain valid candidates. + */ + +/** + * @typedef {Object} CandidateScope + * @property {Element} scopeParent contains inner candidates + * @property {Element[]} candidates list of candidates found in the scope parent + */ + +/** + * @typedef {Object} IterativeOptions + * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not; + * if a function, implies shadow support is enabled and either returns the shadow root of an element + * or a boolean stating if it has an undisclosed shadow root + * @property {(node: Element) => boolean} filter filter candidates + * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list + * @property {ShadowRootFilter} shadowRootFilter filter shadow roots; + */ + +/** + * @param {Element[]} elements list of element containers to match candidates from + * @param {boolean} includeContainer add container list to check + * @param {IterativeOptions} options + * @returns {Array.} + */ +var getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) { + var candidates = []; + var elementsToCheck = Array.from(elements); + while (elementsToCheck.length) { + var element = elementsToCheck.shift(); + if (isInert(element, false)) { + // no need to look up since we're drilling down + // anything inside this container will also be inert + continue; + } + if (element.tagName === 'SLOT') { + // add shadow dom slot scope (slot itself cannot be focusable) + var assigned = element.assignedElements(); + var content = assigned.length ? assigned : element.children; + var nestedCandidates = getCandidatesIteratively(content, true, options); + if (options.flatten) { + candidates.push.apply(candidates, nestedCandidates); + } else { + candidates.push({ + scopeParent: element, + candidates: nestedCandidates + }); + } + } else { + // check candidate element + var validCandidate = matches.call(element, candidateSelector); + if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) { + candidates.push(element); + } + + // iterate over shadow content if possible + var shadowRoot = element.shadowRoot || + // check for an undisclosed shadow + typeof options.getShadowRoot === 'function' && options.getShadowRoot(element); + + // no inert look up because we're already drilling down and checking for inertness + // on the way down, so all containers to this root node should have already been + // vetted as non-inert + var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element)); + if (shadowRoot && validShadowRoot) { + // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed + // shadow exists, so look at light dom children as fallback BUT create a scope for any + // child candidates found because they're likely slotted elements (elements that are + // children of the web component element (which has the shadow), in the light dom, but + // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below, + // _after_ we return from this recursive call + var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options); + if (options.flatten) { + candidates.push.apply(candidates, _nestedCandidates); + } else { + candidates.push({ + scopeParent: element, + candidates: _nestedCandidates + }); + } + } else { + // there's not shadow so just dig into the element's (light dom) children + // __without__ giving the element special scope treatment + elementsToCheck.unshift.apply(elementsToCheck, element.children); + } + } + } + return candidates; +}; + +/** + * @private + * Determines if the node has an explicitly specified `tabindex` attribute. + * @param {HTMLElement} node + * @returns {boolean} True if so; false if not. + */ +var hasTabIndex = function hasTabIndex(node) { + return !isNaN(parseInt(node.getAttribute('tabindex'), 10)); +}; + +/** + * Determine the tab index of a given node. + * @param {HTMLElement} node + * @returns {number} Tab order (negative, 0, or positive number). + * @throws {Error} If `node` is falsy. + */ +var getTabIndex = function getTabIndex(node) { + if (!node) { + throw new Error('No node provided'); + } + if (node.tabIndex < 0) { + // in Chrome,
,